「問題の解決」:国Xでの軍

質問A:軍事国X

制限時間:1秒   メモリ制限:256メガバイト

フェイス質問


彼は公に質問に直面して減少しました。

問題の解決策


シンプルな貪欲。

生き残った兵士の数に応じて(すなわち、戦闘マイナス戦死兵士の数に関与した兵士の数)一種。

戦闘に関与した兵士の数に応じて、同じ種類の兵士の生存数の場合。

ご注文は、再び統計答えを掃きます。

#include <ビット/ STDC ++ Hは>
 の#defineは長いlong int型
 の#define RINTレジスタINTを
 #DEFINE(A)A = INIT()読み取る
 使用 名前空間STDを、
インラインint型のinit()
{ 
    int型 = 0、B = 1チャー CH = GETCHAR()。
    一方、(CH < ' 0 ' || CH> ' 9 '){ 場合(== CH ' - ')B = - 1 ; CH = GETCHAR();}
     一方(CH> = ' 0 '&& CH <= ' 9 '){=(<< 3)+(<< 1)+ CH- ' 0 ' ; CH = GETCHAR();}
     戻り *のBと、
} 
int型T、N、ANS。
構造体ノード{ int型の DS、NS、CS;}のp [ 1000005 ]。
インラインブールCMP(ノードA、ノードB){
     リターン(A.cs == B.cs)A.ns <B.ns:A.cs < B.cs。
} 
main()の符号付き
{ 
//     freopenは( "data.in"、 "R"、STDIN)を、
//     freopenは( "std.out"、 "W"、STDOUT)。
    (T)を読み出します。
    
    { 
        (n)を読み出す; ANS = 0 ため(RINT i = 1 ; iが<= N;、IND、イン++ I)
        { 
            (IND)を読み取り、(INN)を読み取ります。
            P [i]は.DS = IND、P [i]は.ns = イン。
            P [I]の.cs = INN- IND。
        } 
        ソート(P + 1、P + N + 1、CMP); ANS = P [ 1 ] .ns。
        (RINT I = 2 ; iが<= N; I ++)ANS = MAX(ANS + P [i]は.DS、P [i]は.ns)。
        printf(" %LLDする\ n " 、ANS)。
    } 
}
コードの表示

おすすめ

転載: www.cnblogs.com/xingmi-weiyouni/p/11616271.html