질문의 의미 : 다음 실패 할 수 있습니다 각각의 업그레이드를 업그레이드하기 위해 필요한 지출의 현재 수준을 감안할 때이 L에서 R-수준의 지출 기대 Q 시간 문의를 수준
아이디어는 : 하나의 업그레이드는 우리가 방정식을 나열 할 수 있습니다 기대합니다 :
그래서 우리는 통계 접두사보고 모든 문의 O1에 응답 할 수 있습니다
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; CONST 이중 PI ACOS = (- 1.0 ); CONST의 INT N = 5e5 + (7) ; CONST INT INF = 0x3f3f3f3f ; CONST 두 EPS 1e- = 6 ; 타입 정의 긴 긴 LL; CONST LL 모드 1E9 + = 7 ; LL의 DP [N], R [N], S [N], X [N], A [N]; LL의 q_pow (LL 않음하는 LL) { LL ANS = 1 ; LL의 염기 = a 및 동안 (N) { 만약(n은 1 ) = ANS (ANS * 기재 ) %의 모드; 염기 = 베이스 * 베이스 %의 모드; N >> = 1 ; } 반환 ANS; } LL의 반전 (LL A, LL의 b) { 복귀 q_pow (a, B- 2 ); } INT 주 () { IOS :: sync_with_stdio ( 거짓 ); cin.tie ( 0 ); cout.tie ( 0 ); INT의 t; CIN >> t; 반면 (t-- ) { INTN, Q; CIN >> >> N Q; 위한 ( int로 I = 1 ; i가 <= N; 내가 ++ ) { CIN >> R [I] >> S [I] X >> [I] >> A [I]; } 에 대해 ( int로 난 = 1 난 ++; i가 N = < {) [I DP를 + 1 ] = (S [I]가 * ((DP [I]는 [I]) %의 모드) %의 mod-을 + (S [ I] -r [I]) * DP % 개조 [X [내가] + % 개조 모드) %의 개조에서의 INV * (R [i]를, 모드) % 개조; } 에 대해 ( int로 I = 1 ; I <= Q; I ++ ) { INT의 L, R; CIN >> >> L , R; COUT<< (DP [R] -dp [L] + 개조) << %의 개조 ENDL 단계; } } }