(本部2定格)教育Codeforcesラウンド69

A. DIY木製のはしご

問題の意味:基づいて、エッジの2つの最長の辺から選択されるラダーを取り、ステップ、およびステップ基部側が数よりも小さい場合、他の側を選択します。

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
const  int型 MAXN = 1E5 + 10 int型のmain()
{ 
        IOS :: sync_with_stdio();
        int型T; 
        CIN >> T;
        一方、(T-- ){
                 int型N。
                cinを >> N;
                INT [MAXN]。
                以下のためにint型 i = 0 ; iがn <; iは++ ){ 
                        CIN >>  [I]。
                }
                ソート( +のN)。
                int型フラグ= [N- 2 ] - 1 もし(N 2 > = フラグ){ 
                        COUT <<フラグ<< ENDL。
                } 
                 COUT << N- 2 << ENDL。
        } 
        戻り 0 
}
コードの表示

B.の柱

問題の意味は:プレートを移動させる、全積層のN位置、半径AIプレートの各位置は、移動条件が満たされているかどうかを決定する:> J、ABS(IJ)== 1、我々が位置を有しますI-食器、Jか、または私より大きい半径に。

思考:記録位置の最大半径、最大半径の位置が移動し、側面よりも小さい最大半径、(特にない同じ半径、及び1-n)を見つけることができません

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
const  int型 MAXN = 2E5 + 100 int型のmain()
{ 
        IOS :: sync_with_stdio();
        INT [MAXN]。
        int型のn; 
        cinを >> N;
        int型のフラグ。
        以下のためにint型 i = 1 ; iが<= N; iは++ ){ 
                CIN >> [I]。
                もし([I] == N){ 
                        フラグ = I。
                }
        }
        INT CNT = N- 1、L = FLAG- 1、Rフラグ= + 1 一方(CNT> 0 ){
                 場合(L> 0 && [L] == CNT)
                { 
                        L - 
                        CNT - ; 
                } 
                他の 場合(R <= N && [R] == CNT)
                { 
                        R ++ 
                        CNT - ; 
                } 
                他に 
                {
                        、CNT = - 2 ;
                        破ります; 
                } 
                // COUT << "L =" << L << "R =" << R << "CNT" << CNT << ENDL。
        }
         であれば(CNT == - 2 
                COUT << " NO " << ENDL。
        他の裁判所未満<< " YES " << てendl;
        リターン 0 ; 
}
コードの表示

C.アレイを分割

問題の意味:数nとk個のサブセットに分割することが昇順ソート、最大値と最小値と、この最小値の差を計算するすべての部分集合を有します。

アイデア:1サブセットの数は、この差は、n kの分割数、K-1は、NKサブ1の数数のサブセットでない場合場合、ゼロであります最小セット、コンピューティングアレイは二十から二差ソート場合、答えは最小であり、NK前。

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
const  int型 MAXN = 3E5 + 100 int型のmain()
{ 
        IOS :: sync_with_stdio();
        INT [MAXN]。
        int型N、K。
        CIN >> N >> K。
        以下のためにint型 i = 1 ; iが<= N; iは++ ){ 
                CIN >> [I]。
        } 
        int型B [MAXN]。
        以下のためにint型 i = 1 ; iがn <; iは++ ){
                B [i]は = [I + 1 ] - [I]。
        } 
        ソート(B + 1、B + N)。
        int型の合計= 0 ;
        以下のためにint型私= 1 ; I <= NK、iが++ 
        { 
                合計 + = B [i]は、
        } 
        COUT <<和<< ENDL。
}
コードの表示

 

おすすめ

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