8월 10일 요약

CYJian 사탕 해결 보고서


다음 내용은 다음과 같습니다

그는 현재 $ $ N 벌크 사탕, 각 벌크 사탕 $의 R을 갖는 [I] -1 [I] 사탕 (L)의 각각의 단 과자 조각 [I], (L)의 + 1 개 $ 작은 조각 [I] + 1,1- [I] +2 ...... R은 [I].

그는 현재 임의로 작은 과자 조성물 사탕 자기 플래터의 각으로부터 큰 캔디, 캔디의 달콤한 선출 집합 X [1], X [2 수 ] ..... X [n]을, 구비 .

사탕 플래터 행복 지수의 정의 .

이제 물어보고 싶은 CYJian, 모든 프로그램의 행복 지수는 그는 플래터를 선택하고 얼마나? (결과 출력 응답 모듈러스 1E9 + 7)

양의 정수 (N)의 제 1 라인의 입력 벌크 사탕 수

L 자 다음의 n 개의 라인 [I], R [i]는, 응답의 개수의 출력.

샘플 입력 1 : 3,112,311 샘플 출력 1시 13분

2 시료 입력 : 3,252,425 출력 샘플 2 : 282


PS :  표현

ANS = 1 ;
위한 ( int로 I = 1 ; i가 ++; 나는 <= N ) 
    ANS * = (HX [I] + 1 );

 수학 문제? ? ? ?

2 시간 공식 HHHH의 클래스에서 교사를 밀어

요컨대 최대 개수 (즉, H 임) 동일한 카테고리에 동일

그리고 문제의 의미하지 라인에 하나를 제외한 카테고리 1 있어야합니다 (때문에 자신의 한 최대의를 뺀 1)

예 :

이 두 개의 큰 사탕, 사탕 그리고 작은은 1,2,3 경우

그래서 모든 점은 질문의 오가지는을 충족하도록 구성하는 9 개 개의 범주의 총 ​​연결되어있는 경우

더 나은 카운트 불이행을 빼서 계산에 모든 경우에

그림 (표시 빨간색 문제의 의미와 일치한다) :

즉, (의사)의 동작 : 합계 ([1,3]) - 합 ([2,3]).

이어서 다른 상황의 각각의 최대 값이 합산 될 수 %의 개조


중요!

대답은 매우 클 수 있도록 피곤을 취할 수있는 요청의 대상이 있기 때문에 (제목은 10억7% 필요 선생님이 말했다 우리는 높은 정밀도를 쓸 것 질문 사람들 중입니다 )

일반적으로 한쪽 (ANS %의 개조 + 모드) %의 모드에서 덧셈과 뺄셈 곱셈 과정에서 말하는 것은 문제가되지 않는다

그러나 운영의 변화뿐만 아니라 부문에서 변화는 오답으로 이어질 때문에 글을 쓰는 과정에서 문제에 특별한주의를 지불 할 경우


암호:

1 #INCLUDE <. 비트 / stdc ++ H>
 2  #DEFINE 개조 1,000,000,007
 3  #DEFINE freopen을 (X) {freopen을 (#x를 ".IN", "R", 표준 입력) freopen을 (#x를 "이 .out", "w를 "표준 출력)}
 4  이용한  스페이스 성병;
5  INT N;
6   Maxl, Maxr, ANS;
7   길이 (L) [ 1005 ], R [ 1005 ]; // 不开LONGLONG见ZS 
8    해결 (  길이 A1,  길이 (A2)) {
 9        RET =1 ; // 승산 피로 때문에, 1로 초기화된다 
(10)      에 대한 ( int로 I = 1 , I는 <= N-; I는 ++) { // N 대형 사탕 
. 11            RR = 분 (R & LT [I], A1) ; // 최대 값을 찾고, H, 즉 
(12)는            SUM = (RR-L의 [I] + 1이다. ) % * MOD (L [I] + RR) / 2 % MOD; // 추가 부 및 % 이외에 참고
 13          // 여기 합 = X [1] + X [2] + ..., X [n]을 ( 제 2 항목으로 나누어 부품 번호에 의한 마지막 항목 플러스) 
14          SUM = (((RR-L [I] + . 1 ) MOD % * (A2 + 1이다. ) % MOD-SUM) + MOD % MOD) % MOD;
 15          // 여기 합 = 선택된 정도 곱셈 사탕 달콤한 
16         RET = (RET *의 합) %의 모드;
17      }
 18      리턴 RET;
19  }
 20  INT 의 main () {
 21      freopen을 (a);
22      는 scanf ( " %의 D ' , N);
(23)      에 대한이 ( int로 I = 1 난 ++; i가 N = < {)
 (24)          는 scanf ( " % d 개 %의 D ' , L [i]는, R을 [I]);
25          Maxl = 최대 (Maxl, L [I]) Maxr = 최대 (Maxr, R [I]); // 找出R, L中的最大值
26      }
 27       ( INTmaxL = I, I는 <= MAXR; I ++ ) {
 28            TMP = ((해결 (I, I) -solve (I- . 1 , I)) + % MOD MOD)의 MOD %; // 다른 상황 동작 
 29          // 해결 (I는 I) 실시 예에서의 합계에 대응한다 ([1,3]) 해결 ( I-1, I) 실시 예에서의 합계에 상당 ([2,3]) 
30          ANS의 = (ANS TMP +) % MOD;
 31이다      }
 32      의 printf ( " %의 LLD " , ANS)
 (33)는      복귀  0 ;
 34이다 }

요약 : 코드를 보면 실제로 매우 간단합니다

그러나 8 생각할 수 없다 자신에 대한 강조와 같은 강력한 수학 문제에 대한 어쨌든, 나는 기대하지 않았다

사실, 상황이 클래스 HHHH의에서 교사의 분석 위에있는 비 난 더 멜론이 없습니다

추천

출처www.cnblogs.com/Yz-jw/p/11332993.html