モジュロによって増加#562(本部2)ラウンドCodeforces

http://codeforces.com/contest/1169/problem/C

明らかになった問題に誰か他の人のソリューションを見て、その後、質問の意味を理解していなかった長い時間を見て、あまりにも料理だった.......

数n、各動作可能([I] +1)%mを、数Nをデクリメントしないように、シーク操作の最小数。

Mは、同じ操作で回作動していない、上限をm、下限は0、二点である....

書式#include <iostreamの>
 使用して 名前空間はstdを、
const  int型 MAXN = 300000 + 10 INTのN、M。
INT [MAXN]。
INT [MAXN] B。
ブールチェック(INT X)
{ 
    ためint型 i = 1 ; iが<= N; iが++ 
    B [I] = [I]。
    int型 iは= 1 ; iが<= N; iが++ 
    { 
        場合(B [I]> = bの[I- 1 ])
        { 
            場合(B [I] + XM> = bの[I- 1])
            B [I] = bの[I- 1 ]。
        } 
        そう であれば(B [i]が+ X> = B [I- 1 ])
        B [I] = bの[I- 1 ]。
        もし(B [i]が<B [I- 1 ])
         を返す 
    } 
    / * (I = 1をint型、iが<= N; iが++)のため
    COUT << B [i]は<<」「。
    coutの<<てendl; * / 
    戻る 
} 
int型のmain()
{ 
    CIN >> N >> M。
    int型 iは= 1 iが<= N; iが++
    {
        CIN >> [i]は、
    } 
    INT =左0、右M、MID、ANS = = 0 しながら、(左<= 右)
    { 
        半ば =(左+右)/ 2 もし(チェック(MID))
        { 
            ANS = ミッド。半ば= 1 ; 
        } 
         
        {  =ミッド+ 1 
        } 
    } 
    COUT << ANS << ENDL。
    
    リターン 0 ; 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/lin1874/p/10953776.html