以上の2019牛オフサマースクールキャンプ(第2フィールド)J.Subarray

問題の意味:あなたのnのn-1の連続したセグメントは今0より大きいどのように多くのサブ期間あなたに0〜1e9-1の範囲内の全配列の長さを尋ねる表し

アイデア:私たちは現在の接頭辞を数えると仮定して、明らかに我々はフェンウィックツリーのメンテナンスの接頭辞を見ることができると私たちは答えを計算nlognが、このタイムアウトの1E7をデータ処理のために私たちは間違いなく検討するには、接頭辞であり、各変更が1でありますポリライン

私たちは直接答えを見つけるために怠惰な配列をシミュレートすることができます

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
CONSTの INT N = 1E7 + 7 const  int型 INF = 0x3f3f3f3f 
typedefの長い 長いLL。
CONST LL MOD = 1E7 + 9 INTをL [N]、R [N]。
INT F [N]、G [N]、合計[ 3 * N]。
INT [B 3 *のN]、[C 3 * N]。
int型のmain(){ 
    IOS :: sync_with_stdio(); 
    cin.tie(0)。cout.tie(0);
    int型のn; cinを>> N;
    以下のためにint型 i = 1 ; iが<= N; iは++ ){ 
        CIN >> L [I] >> R [i]は、
    } 
    F [ 1 ] = R [ 1 ] -1- [ 1 ] + 1 以下のためにint型 I = 2 ; iが<= N; iは++ 
        F [I] = MAX(R [I] -1 [i]が+ 1、F [I- 1 ] - (L [I] -r [1- 1 ] - 1)+ R [I] -1- [I] + 1 )。
    G [N] = R [N] -1- [N] + 1 にとってint型 I = N- 1、I> = 1 ; i-- 
        G [I] = MAX(R [I] -1- [I] + 1、G [I + 1 ] - (L [I + 1 ] -r [I] - 1)+ R [I] -1- [I] + 1 )。
    int型 I = 1 ; int型になりました= 1E7; 
    LL ANS = 0 一方(iは= < N){
         int型 J = I + 1 一方(j <= N && G [J] + F [J- 1 ]> =(L [J] -r [J- 1 ] - 1 )){ 
            J ++; 
        } 
        J - INTル= MAX(0、L [i]は-g [I])。INT RI =分(INT(1E9) - 1、R [J] + F [J])。
        int型、T = I; int型の MX、MI; MX = - 1MI = infファイル。
        int型 K =ル; K <= RIあり、k ++ ){
             場合(K> = L [t]は&& K <= R [T])
                の和[K -le + 1 ] =和[Kル] + 1 
                和[K -le + 1 ] =和[Kル] - 1;
            もし(K == R [T])T ++ 
            MX = MAX(MX、和[Kル+ 1 ] + 今)。
            MI =分(MI、和[Kル+ 1 ] + 今)。
            B [和[K -le + 1 ] +今] ++ ; 
        } 
        のためのint型 K = MX- 1、K> = MI; k-- 
            B [K] + = B [K + 1 ]。
        ANS + = B [今+ 1 ]。
        int型 K =ル; K <= RIあり、k ++ ){ 
            T =和[Kル+ 1] + 今; 
            B [T + 1 ] - = C [T + 1 ]。
            C [T] + = C [T + 1 ] + 1 
            C [T + 1 ] = 0 ; 
            ANS + = B [T + 1 ]。
        } 
        のためにint型 K = MI; K <= MX ++ k個
            B [K] = 0、C [K] = 0 ; 
        I = J + 1 ; 
    } 
    COUT << ANS << ENDL。
}

 

おすすめ

転載: www.cnblogs.com/wmj6/p/11288038.html