[욕심] 카드 공유 문제

솔리테어 링 공유

 

카드 놀이 noip2002 공유   

N 카드의 스택은 여러 장의 스택과 함께 각각 카드의 총 수는 있어야합니다 N의 배수. 카드 복수의 더미 후 이동 중 하나에 걸릴 수 있습니다.

규칙 이동 카드 : 호에서 1 카드 힙은 번호 이동, 촬영 힙에, 번호 힙은 N 카드를 가지고 만 번호 이동 N - 힙 1, 기타 카드의 힙을, 힙에 인접한 왼쪽 또는 오른쪽으로 이동할 수 있습니다.

이제 이동의 최소 번호를 모두 많은 같은 스택 당 카드의 수와 이동 방법을 찾기 위해 요청

카드의 첫 번째 무리 카드는 두 번째 스택 카드에 의해 (제공 또는 요청) 가정 할 수 차이

더미는 폐기물 재 처리가 발생하기 전에 처리해야 (더미 더미 만 거래를 고려한 후에

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병; 
#DEFINE의 RG 레지스터
 CONST의  INT N = 1E6 + 5 , M = 1E6 + 5 , INF = 0x3f3f3f3f , P = 9,999,973 ;
INT의 N, A [N], X = 0 , ANS = 0 ; 
서식 < 클래스 t> 공극 RD (t 및 X) { 
    X = 0 ; INT w = 0 ;  CH = 0 ;
    잠시 w (isdigit에 (CH)!) | = 채널 == ' - ' , CH =getchar가 ();
    반면 (isdigit에 (CH2)) X = (X << 1 ) + (X << 3 ) + (CH ^ 48 ) = CH getchar가 (); 
    X ? = w - X : X; 
} 

INT 의 main () { 
    RD (N);
    위한 ( int로 I = 1 ; i가 <= N; ++ I) RD (a [I]) + X = A [I]; 
    X / = N;
    위한 ( int로 I = 1 ; i가 <= N; ++ I)
     의 경우 (a [I] -x) ++ ANS하는 [I + 1 ] + = (a [I] - X); 
    의 printf ( " %의 D " , ANS);
    반환  0; 
}

 

[HAOI2008] 제과 전송

원에 앉아 n 개의 아이들이 있으며, 각각은 사탕 인공 지능 있습니다. 만 약 2 인당 사탕을 제공합니다. 각 사람은 1 사탕 가격을 전달합니다. 찾는 모든 개인이 사탕의 최소의 비용과 동일 제공합니다.

지정된 나 어린이 사탕 아이 편을 시작한다고 가정 사이 캔디의 사이의 부분이 사이 <0 인 경우, i 번째 자식 사이 입자에 제 I-1 번째 자식 설명한 제 I-1 번째 하위에 i 번째 자식을 나타낸다 사탕, X1은 n 번째 어린이 사탕 어린이의 수를 나타냅니다. X1 | | + | X2 | + | X3 | + ... + | Xn에 | 그래서 최종 답변은 ANS =입니다. 처음 두 아이들이 그에게 X2 사탕 조각, 마지막 남은 A1-X1 + X2 사탕 조각을 주었기 때문에, 그러나, 첫 번째 자식을 위해, 그는 n 번째 자식 X1 사탕 조각을 준 사탕 조각 A1-X1을 떠났다. A1-X1 + X2 = AVE : 질문의 의미에 따르면, 최후의 식을 구 사탕 AVE의 개수와 동일.

제 아이 1의 A1-X1 + X2 =의 AVE -> X2 = AVE-A1 + X1 = X1-C1 (가정 C1 = A1-AVE, 다음과 같은)

처음 두 어린이, A2-X2의 +의 X3 = AVE -> X3 = AVE-A2 + X2 = 2ave-A1-A2 + X1 = X1-C2

처음 세 어린이, A3-X3에서의 + X4 = AVE -> X4 = AVE-A3 + X3 = 3ave-A1-A2-A3 + X1 = X1-C3

n 번째 아이 ...... 한 - X1 내지 Xn + = AVE

사이 가능한 작게 합계의 절대 값을 희망, 즉 | X1 | + | X1-C1 | + | X1-C2 | + ... + | X1-CN-1 | 지적 가능한 작게하는 | X1-CI | 기하학 중요성은 수 라인에 포인트 X1에서 CI, 그래서 문제가된다 : 주어진 n은 거리를 찾아 자신의 작은 지점을 시도, 수 행에 설정 점 만 점은이 숫자에 있다는 것입니다 밸리에 대한 첫 번째 로스 자리 ( 문제 해결

아마 리아를 이해하기 위해 다시 밀어

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병;
#DEFINE 맥스 (X, Y) (X) <(Y)? (Y) :( X)
 #DEFINE 분 (X, Y) (X) <(Y)? (X) :( y)의
 #DEFINE가 긴 줄게 긴
 #DEFINE의 복근 (X) (X) <0 -x : X;
#DEFINE의 RG 레지스터
 CONST의  INT N = 1E6 + 5 , M = 1E6 + 5 , INF = 0x3f3f3f3f , P = 9,999,973 ;
INT의 N; 
LL ANS = 0 , A [N], 합계 [N], [N], B, AVE = 0 ; 
서식 < 클래스 t> 공극 RD (t 및 X) { 
    X =0 ; INT w = 0 ;  CH = 0 ;
    잠시 w | = CH == (isdigit에 (CH)!) ' - ' , CH = getchar가 ();
    반면 (isdigit에 (CH2)) X = (X << 1 ) + (X << 3 ) + (CH ^ 48 ) = CH getchar가 (); 
    X ? = w - X : X; 
} 

INT 의 main () {
 //     freopen을 ( "in.txt", "R", 표준 입력); 
    RD (N);
    위한 ( int로 I = 1 ; i가 <= N; ++ I) RD (a [I]), 합계 [I]을 합 = [I- 1 ] + A [I]; 
    AVE합 = [N] / N;
    위한 ( int로 I = 1 ; i가 <= N; ++ I) B [I] = B를 [I- 1 ] -a [I] + AVE; 
    정렬 (B + 1 , B + N + 1 ); 
    중간 LL; 
    경우 (N % 2 ) 중간 = B [N + 1 >> 1 ];
    다른 중간 = (B [N >> 1 ] + B [N >> 1 | 1 ]) / 2 ;
    위한 ( int로 I = 1 ; i가 <= N; ++ I) ANS + = ABS (중간 B [I]); 
    의 printf ( " %의 LLD " , ANS); 
    반환  0 ; 
}

 

추천

출처www.cnblogs.com/lxyyyy/p/11285684.html