Codeforces 1190A。Tokitsukazeと破棄アイテム

ポータル

どうやら削除する各番号を考慮し、左から右へ

$ cntの$は、あなたがそれを削除したいすべての数字の現在の実際の位置が$ CNT $を差し引かれます、それは$のCNTの$番号を削除したことを言っ維持するために先立ち

左せる直接暴力の数を列挙して、ブロックを削除

たびに削除された複雑$ O(n)の$の数

#include <iostreamの> 
する#include <cstdioを> 
する#include <アルゴリズム> 
の#include <CStringの> 
する#include <cmath>
 使用して 名前空間STD。
typedefの長い 長いLL。
インライン読み取り11()
{ 
    LL、X = 0、F = 1チャー CH = GETCHAR()。
    一方、(CH < ' 0 ' || CH> ' 9 '){ 場合(CH == ' - ')、F = - 1CH = GETCHAR()。}
    一方、(CH> = ' 0 ' && CH <= ' 9 '){X =(X << 1)+(X << 3)+(CH ^ 48)。CH = GETCHAR()。}
     戻りのx *のF。
} 
のconst  int型 N = 2E5 + 7 
LLのM、K、ANS。
LL N、P [N]。
INT メイン()
{ 
    N =(読み取り)、M =(読み取り)、Kは= 読み取ります();
    int型 iは= 1 P [I] =; I <= M I ++)は(読み取り); 
    LL CNT = 0 以下のためのint型I = 1 ; I <= M; iは++ 
    { 
        LLのR = I。一方、(R <M &&((P [R + 1 ] -cnt- 1)/ K ==(P [i]が-cnt- 1)/ K))R ++ 
        CNT + = R-I + 1I = R。ANS ++ ; 
    } 
    のprintf(" %LLDする\ n " 、ANS)。
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/LLTYYC/p/11605946.html