問題の英雄ソリューションのOCAC夏のセカンドゲームGタイトル1ヤードの伝説

1ヤードヒーローズ
オリジナルタイトルリンクします。http://codeforces.com/problemset/problem/349/A
[タイトル]について説明し
、最近のステップクレソンはの大作映画「1ヤードヒーローズ」のリリース10点までのスコア。
フィルムは平凡第五年生から、プログラミングを学ぶための学習のプロセスに1ヤードで5年生の生徒の物語、次回は非常に強力なインフォマティクス出場者になって、6代表チームは、競争に参加し、インスピレーションの物語IOIゴールドを取得グレード。
これは、同じ日にリリース群衆-喜ばフィルムとして記述することができます。
今日は、「1ヤードヒーローズ」魔法の王国の国のアリスもリリース。
アリスは、金種25、50及び100に対応する3つだけその魔法のコイン金種マジック・キングダムで知られています。
アリスマジックキングダムは、「1ヤードヒーローズ」映画チケット料金は25です。
人は映画館への切符を購入する場合、彼は魔法のコイン通貨を与える場合には25で、その後、導体は、この魔法のコインを受け入れ、彼の映画のチケットを与えた、である。
顧客の魔法のコイン通貨が50であれば、その後、導体は、この魔法のコインを受け入れ、彼の映画のチケットを与えたが、また彼に魔法のコイン通貨25を返却する必要があり、
顧客の魔法のコイン通貨が100である場合、導体はこれを受け入れ、彼の魔法のコインを与えます映画のチケット、だけでなく、彼の75の魔法のコインのリターン(マジック$ + 50魔法のコイン通貨への1つの通貨が25である、または3魔法のコイン通貨が25である)必要があります。
マジックコインの唯一の作品で映画のチケット、それらのそれぞれを購入するラインで知られているn個の個人があります(通貨は25、50または100であってもよいです)。
しかし、今日不注意な導体は私の財布を忘れてしまいました。
しかし、彼は財布は、通常これらのn個の個々のコインを見つけることができる変数を話す必要がないと思いましたか?
しかし、それはまた、状況によって異なります。
例えば:
n個の== 4と4つの個々の手の場合は、導体は、通常、4枚の映画のチケットを販売することができるように、魔法のコイン通貨は、25,25,50,50を追いました。
n個の== 2と魔法のコイン通貨でこれらの2人が負傷したテイクが25100であれば、彼は第二の個人的なお金を見つけることができなかったので、その後、導体は、通常、これらの二つの映画のチケットを販売していないでしょう。
通常の導体nは、この映画のチケットを販売するかどうかを判断するのに役立ちます。
[入力形式
入力の最初の行の整数nを含有する(1 <= N <= 10 ^ 5)、 映画のチケットを購入する行の数を示します。
次の行は、魔法のコイン金種(のみ25、50又は100)を保持し、チームを表すための前面から背面に、スペースで区切られた、それぞれの手をn個の整数を含みます。
[出力形式】
常電導映画のチケットは、このNを販売した場合、出力「YES」、そうでない場合、出力「NO」。
サンプル入力[1]
。4
25 25 50 50
[サンプル1]出力
YES
[2]入力サンプル
2
25 100
[2]サンプル出力
NO
[3]サンプル入力
。4
50 50 25 25
[サンプル出力3 ]
NO
分析[問題]は
この質問には、アルゴリズムを設計していない:貪欲。
まず、現在のチームの通貨が25であれば、最初の人、魔法のコインを取得するために、導体25、チケットを販売し、
現在のチームの通貨が50であれば、魔法のコインから取り出すべき導体25は、最初の人出ていないし、 「NO」、マジックコイン50を得ながら、
最初の人の現在のチームの通貨が100の場合、優先順位は彼に50と25と魔法のコインマジックコインを与えた; $ 50魔法が存在しない場合は、戻って彼に魔法のコインが3〜25を検討するために、2場合プログラムの種類は、法律の変更は、「NO」ではありません。
誰もがチケットを買った場合は、正常終了、「YES」。
次のようにコードは次のとおりです。

#include <ビット/ STDC ++ H> 
名前空間STDを使用して、
const int型MAXN = 100010; 

nはint型、cnt25、cnt50。

メインINT(){ 
    CIN >> N。
    (N - )、一方{ 
        CIN >>。
        もし(== 25)cnt25 ++; 
        そうでなければ(== 50){もし
            cnt50 ++。
            (!cnt25){プット( "NO")の場合。0を返します。} 
            cnt25 - 。
        } 
        他{// 100 
            であれば(cnt50 && cnt25){ 
                cnt50 - 。
                cnt25 - ; 
            } 
            そうであれば(cnt25> = 3){ 
                cnt25 - = 3。
            } 
            他{ 
                プット( "NO")。
                0を返します。
            } 
        } 
    } 
    プット( "YES")。
    0を返します。
}

 

おすすめ

転載: www.cnblogs.com/ocac/p/11131658.html