군사, 순열 (b) 미국 X-CSP의 10.1 시뮬레이션 테스트 문제 용액 회문

질문은 표면 : https://www.cnblogs.com/Juve/articles/11615883.html

나라 X 육군 :

O (T * N) 직접 욕심 관행을 갖고있는 것 같아요

사실, 로그의 절반 이상이 될 수보다 더와

BA 내림차순으로 모든 우선 순위 (이후에이 프로그램 정렬 순서는 최적 스윕이다)

대답의 그런 반

사용법 #include <iostream> 
#INCLUDE <cstdio> 
#INCLUDE <CString을> 
#INCLUDE <알고리즘> 
#DEFINE INT 긴 긴 
#DEFINE 재 등록 
네임 스페이스를 사용하여 표준; 
CONST의 INT MAXN 1E5 + = 5; 
인라인 INT 읽기 () { 
	재 INT (X) = 0; 숯 재 CH = getchar가 (); 
	동안 (CH2 <0 || CH> '9') CH = getchar가 (); 
	(CH> = 0 && CH <= '9') {(X) = (X << 3) + (X << 1) + CH-'0 ', CH = getchar가 ()} 동안 
	복귀 X; 
} 
의 INT t, N, L, R; 
구조체 노드 { 
	를 INT, B; 
	인라인 친구 불리언 연산자 <(P 노드, 노드 Q) { 
		복귀 PB-PA> QB-QA; 
	} 
} C [MAXN]; 
인라인 불리언 점검 (재 INT X) { 
	(Re는 I = 1을 인터넷 용; 
		I <= N; I ++) { X- = C [i]를 .A; 
	}
	1을 반환; 
} 
{) (주 서명 
	) (t = 읽고; 
	(t -) 동안 { 
		N = 판독 (); 
		L = 0, R = 0; 
		경우 (; 나는 <= N; 재 I = 1 값 int I ++) { 
			C [I] .A는 C) (판독 = [I] .B 판독 = (); 
			L + C = [I] .A, R + C = [I] .B; 
		} 
		정렬 (c + 1, C + N + 1); 
		(L <R) {동안 
			재 INT 중간 = (L + R) >> 1; 
			(수표 (MID)) R = 미드 경우; 
			다른 중간 L = + 1; 
		} 
		의 printf ( "% LLD \ 없음"l); 
	} 
	0을 반환; 
}

순열 :

$ C_ {N} ^ {I} * C_ {N} ^ {I} {N} ^ {I} * $ C_ C_ {N} ^ {NI} $로 $,

이 경우, 그 프로그램 번호의 선택된 N (NI)의 i 번째의 프로그램에 의해 선택된 n 개의 사이, 각 I를 들면, 최종 합계는.

이러한 응답은 물품의 2N에 사실상 동등한 얻어진 제 N (NI) 번째 선택한 후, 선택된 NI ,,

i가 0에서 n까지의 모든 정수에 걸쳐 실행되므로 또한, 그 축적 된 프로그램의 수는 $ C_ {2 * N} ^ {N} $ 같다.

사용법 #include <iostream> 
#INCLUDE <cstdio> 
#INCLUDE <CString을> 
#INCLUDE <알고리즘> 
#DEFINE INT 긴 긴 
#DEFINE 재 등록 
네임 스페이스를 사용하여 표준; 
CONST의 INT MAXN = 2e6 + (5); 
CONST INT 개조 1E9 + = 7; 
INT의 t, N, FAC [MAXN], INV [MAXN]; 
인라인 INT q_pow (재 INT A, 재 INT B를 재 INT의 P) { 
	재 INT 입술 = 1; 
	(b) {동안 
		경우 (B & 1) = 입술의 입술 *는 %의 P; 
		A = A * %의 P; 
		B >> 1 =; 
	} 
	고해상도를 반환; 
} 
인라인 공극 get_c (재 INT의 N) { 
	FAC [0] = FAC [1] =의 INV [0] = 1; 
	경우 (; 나는 <= N을, 재 I = 2 int로 I ++) { 
		FAC [I] = FAC [I-1] * % 나 개조; 
	} 
	INV [N] = q_pow (FAC [N], 2 개조 개조); 
	위한 (재 값 int I = N-1, I> = 1 - I) {
		INV [I]의 INV = [I + 1] * (I + 1) 개조 %;
	} 
} 
인라인 INT C (재 INT N, 재 INT의 m) { 
	경우 (m> n)의 복귀 0; 
	(m의 == 않음)에 1을 반환하는 경우; 
	FAC [N] * % 개조 INV [m] * % 개조 INV [나노] %의 개조를 리턴; 
} 
주 () {서명 
	get_c (2e6를); 
	scanf와 ( "%의 LLD", t); 
	{- (t) 동안 
		, scanf와 ( "%의 LLD", N) 
		의 printf ( "% LLD \ 없음", C (2 * N, N)); 
	} 
	0을 반환; 
}

회문 :

G [I] [J]의 정의에 회문 J 행 I이 섹션이 형성 될 수 있는지 g의 [내가 + 1] [J-1] 전송을 나타낸다 :

경우 (; 나는 <= LEN, I = 1 값 int I ++) { 
	g [I] [I] = 1; 
	F [i]는 [I] = 1; 
	대 (INT의 J = 1; J <= 분 (I-1, 렌-1); ++ j)는 { 
		경우 (S [IJ] == S [i가 + J])는 { 
			g는 [IJ] 난과 j ] = 1; 
		} 다른 휴식; 
	} 
} 
에 대해 INT (I = 1; I <= 렌-1; I ++) { 
	경우 (S [I] == S [i가 + 1]) { 
		g [I] [I + 1] = 1; 
		F [i]는 [I + 1] = 3; 
		대 (INT의 J = 1; J <= 분 (I-1 렌-I-1); ++ j)는 { 
			경우 (S [IJ] == S [I + 1 + J]) { 
				g [IJ] [I은 + 1 + j를] = 1; 
			} 다른 휴식; 
		} 
	} 
}

F [I] [J]의 정의 J 답변에 I를 나타내고,이

有 转移 : $ F의 [리터] [R] = F [L + 1] [R] + F [1] [R-1] -f [L + 1] [R-1] + g [1] [R ] $

사용법 #include <iostream> 
#INCLUDE <cstdio> 
#INCLUDE <CString을> 
#INCLUDE <알고리즘> 
#DEFINE INT 긴 긴 
#DEFINE 재 등록 
네임 스페이스를 사용하여 표준; 
CONST의 INT의 MAXN = 5005; 
문자 S [MAXN]; 
INT의 t 렌 [MAXN] MAXN] F; 
부울 g [MAXN] MAXN]; 
서명의 main () { 
	는 scanf ( "%의 S ', S + 1); 
	LEN 나 strlen = (S + 1); 
	경우 (; 나는 <= LEN, I = 1 값 int I ++) { 
		g [I] [I] = 1; 
		F [i]는 [I] = 1; 
		대 (INT의 J = 1; J <= 분 (I-1, 렌-1); ++ j)는 { 
			경우 (S [IJ] == S [i가 + J])는 { 
				g는 [IJ] 난과 j ] = 1; 
			} 다른 휴식; 
		} 
	} 
	에 대해 INT (I = 1; I <= 렌-1; I ++) { 
		경우 (S [I] == S [i가 + 1]) { 
			g [I] [I + 1] = 1;
			F [i]는 [I + 1] = 3;
			대 (INT의 J = 1; J <= 분 (I-1 렌-I-1); ++ j)는 { 
				경우 (S [IJ] == S [I + 1 + J]) { 
					g [IJ] [I은 + 1 + j를] = 1; 
				} 다른 휴식; 
			} 
		} 
	} 
	에 대해 (; 나는 = LEN <; I = 2 값 int ++ I) { 
		대 (INT의 L = 1, L <= 렌-I + 1; ++ ℓ) { 
			INT의 R = L + I-1; 
			F [1] [R] = F [L + 1] [R] + F [1] [R-1] -f [L + 1] [R-1] + g [1] [R]; 
		} 
	} 
	는 scanf ( "%의 LLD", t); 
	동안 (t -) { 
		재 INT의 L, R; 
		scanf와 ( "%의 LLD의 %의 LLD ', L, R); 
		의 printf ( "% LLD \ 없음 ', F [1] [R]); 
	} 
	0을 반환; 
}

 

추천

출처www.cnblogs.com/Juve/p/11615913.html