Codeforces 라운드 # 601 (사업부. 2) E (보고 소인수, DP)

현재의 A에 대한 품질 계수 먼저 분해 [I], 품질 팩터는 두 가지 가능성이 존재하며, 현재의 X는,이 위치가 나누어 K를 충족한다고 가정이든 그것이 후 후방 X % K 번째 전송, 또는 KX % K로 전송.

ㄱ 각각 만족 [I] 때문에 단지 (a의 다음 위치 [내가 + 1] 효과가 A [i]를 생성하고, 나중에 문제에 새로운 서브 카운트 그래서, 금지 다음 위치에 영향을 미칠 중첩 인형).

i가 모든 요구 분 (a [i]를, XA [I])과, 응답으로서 난 모든 소인수의 합의 최소값을 배치 모든 X의 각각에 대한 품질 계수.

1  #DEFINE HAVE_STRUCT_TIMESPEC
 2 #INCLUDE <비트 / stdc ++ H.>
 3  사용  공간이 수 std;
4    A [ 1000007 ];
5  INT 의 main () {
 6      IOS :: sync_with_stdio ( 거짓 );
7      cin.tie (NULL);
8      cout.tie (NULL);
9       길이 N;
10      CIN >> N;
11        합 = 0 ;
12       (  길이 난 = 1; I <= N; ++ I) {
 13          CIN >> A [I];
14          합 + = A [I];
15      }
 16      경우 SUM (<= 1 ) {
 17          COUT << - 1 ;
18          반환  0 ;
19      }
 20        ANS = 1E18;
(21)      에 대한이 (  길이 난 = 2 ; 나는 <= 합계 *; ++ I) {
 22            플래그 = 0 ;
23 일          동안 내가 == (합 % 0) {
 24              합 / = I;
25              플래그 = 1 ;
26          }
 27          경우 (플래그) {
 28                미리 = 0 , 써머 = 0 ;
29               (  길이 , J = 1 , J <= N; ++ j)에 {
 30                  미리 = (a [J] + 전) % I;
31                  써머 + = 분 (I- 미리 사전);
32              }
 33              ANS = 분 (ANS, 써머);
34          }
 35     }
 (36)      의 경우 (합계> 1 ) {
 37          따라   프리 = 0 , 써머 = 0 ;
38           (  따라 J = 1 ; J <= N; ++ j)에 {
 39              미리 = (a [J] + 전) %의 합;
40              써머 + = 분 (sum- 미리 사전);
41          }
 42          년 = 분 (써머 년);
43      }
 44      COUT << 년;
45      반환  0 ;
46 }

 

추천

출처www.cnblogs.com/ldudxy/p/11939327.html