실행에 D. 시간

https://codeforces.com/contest/1301/problem/D

문제의 의미 부여 N * m (1 <= N, m <= 500) 격자 요건은 K (1E9) 단계는, Q가 달성 될 수 있으며, 상기 공정 출력 (<3000) 규정 될 수있다 : 가장 동일한 방향으로 격자 당신은 한 단계를 갈 수 있습니다.

솔루션 :도 표시 오일러, 4 * N * M-2 * N-2 * m 단계로 올라갈.

가능한 단계 한 적은 경우, 각 단계는 직선을 도보로, 예를 들어, 가능한 한 많이 걸을 수 있어야합니다.

#INCLUDE <비트 / stdc ++ H.> 
의 typedef 긴 긴 LL; 
#DEFINE INT LL 
#DEFINE 개조 1,000,000,007 
#DEFINE GCD __gcd 
#DEFINE 담당자는 (ⅰ, j는, N)에 대한 (INT 난 J를 =; I <= N; I ++) 
레드 #DEFINE (I, N, j)는 대 (INT I = N; I> J =; 난 -) 
#DEFINE ME (X, Y)가 memset (X, Y는 sizeof (X)) 
// LL LCM (LL A, LL의 b) {A * B / GCD (반환 A, B)} 
// LL quickpow (LL의 B, A LL) {LL ANS = 1, 반면 (b) {(b가 & 1) ANS = ANS는 *는 %를 개조하는 경우, (B) >> = 1, A가를 = * %의 개조} 리턴 ANS} 
와; // INT euler1 INT (X) {INT의 ANS는 = X의 경우 (X % I == 0) {ANS (INT 내가 = 2; I ++; 나는 <= X *) - = ANS / 전, 동안 (X % I == 0) X / = 1} 경우 (x> 1) = ans- ANS / X] 복귀 ANS}
// CONST INT 1E7 + N = 9; INT 힘 [N], 프라임 [N], 피 [N] INT euler2 (INT N) {ME (힘, TRUE); INT LEN = 1; 렙 (I, 2, N) {경우 (힘 [I] ) {프라임 [LEN ++] = 1, 피 [I] = I - 1}에 대한 (INT J = 1; J <LEN && 프라임 [J] * I <= N; J ++) {힘 [내가 * 프라임 [J] = 0 (I % 프라임 [J] == 0) {(φ)는 [I 프라임 [J를 *] = 피 [I] * 프라임 [J] 바꿈} 만약 그렇지 {피가 [I *를 주요한 [J] = 피 [I]는 * 피 [프라임 [J]를];}}} 리턴 LEN} 
#DEFINE INF 0x3f3f3f3f 
#DEFINE PI의 ACOS (-1) 
#DEFINE PII 쌍 <INT는 INT> 
#DEFINE 인터넷 제 
#DEFINE 번째 SE는 
#을 LSON 리터 중간 루트를 정의 << 1 
#DEFINE의 rson 미드 + 1, R, 루트 << 1 | 1 
#DEFINE PB와 push_back 
#DEFINE MP make_pair 
#DEFINE CIN (X)는 scanf ( "%의 LLD ', X); 
네임 스페이스를 사용하여 표준; 
CONST INT maxn = 1e3 + (9); 
벡터 <쌍 <CHAR, INT>> MA; 
벡터 <
보이드 인서트 (숯 C, INT m) { 
    경우 (m> 0) ma.pb (MP (c, m)); 
} 

공극 해결 () { 
    INT의 N, M, K; 
    CIN N >> >> >> K m; 
    (4 * N * M-2 * 2 * N-m <k)는 {만약 
        COUT << "NO"<< ENDL; 
        반환; 
    } 
    COUT << "YES"<< ENDL; 
    ( 'R', m-1)를 삽입; 
    렙 (I, 1, m-1) {
        ( 'D'를, N-1)를 삽입; 
        ( 'U'을, N-1)를 삽입; 
        ( 'L'1)를 삽입; 
    } 
    인서트 ( 'D', N-1); 
    렙 (I, 1, N-1) { 
        인서트 ( 'R', m-1); 
        ( 'L', m-1)를 삽입; 
        ( 'U', 1)를 삽입; 
    } 
    INT ANS = 0; 
    (이것은 자동 : mA) 대 { 
        경우 (K <= 0) {
        } 다른 { 
            ANS ++; 
            v.pb (MP (it.fi, K> it.se it.se : K)); 
            K - = it.se; 
        } 
    } 
    COUT << ANS << ENDL; 
    대 (자동 그것을 : V) { 
        COUT << it.se << ''<< it.fi << ENDL; 
    } 
} 

    IOS :: sync_with_stdio (거짓); 
    cin.tie (0); cout.tie (0); 
    // INT t; 
    // CIN (t); 
    // (t는 -) {동안 
        해결 (); 
    //} 
}

 

4 하자 나를 -

추천

출처www.cnblogs.com/nonames/p/12422944.html