CF1215Dチケットゲーム

タイトルリンクhttp://codeforces.com/problemset/problem/1215/D

分析

この質問は比較的水ベースのゲーム理論ですか?なぜ私が非常に明確な考えを書いたのか分かりません。
まず、データで指定された文字列の文字列を保存する必要はありません。両面のみが保存されますか?数と総数の合計。
最も単純なのは例1の場合です。疑問符がない場合、明らかにこの場合、両側の数字と\(cnt \)が最初に等しくない場合のみ、\(Monocarp \)が勝ちます。この状況は非常に特殊です。 、一般化できますか?これが、左側のxjbで紹介した結論です。そして右側に?同等です。なんで?もし\(Monocarp \)から(CNT \)\数を埋めるために大きな側、確かに他の側という、ギャップ、その塗りつぶし9を広げるために起こっている\(Bicarp \)ときのギャップを狭くするためには、9を入力されます\ (Monocarp \)小さい側からも同じです。つまり、左側に5つある場合はどうでしょうか。、右側に3つありますが、左側に2つあるのですか?では、サンプル1の状況は両側に拡張されるのでしょうか。同じ数の場合、\(cnt \)が等しくなければ\(Monocarp \)が優先されます。
次に、不平等な状況を考えます。上記の結論によれば、両側のゲームを片側のゲームに変換できます。
残りの辺の同等の疑問符の数が\(w \)であると仮定します。たとえば、\(w \)が4の場合\(Bicarp \)の操作数は2です。5の場合、彼はまだ2回操作しますなぜなら\(Monocarp \)が最初に起動します。
のはどちら側、ここでは一例として、左に、それは左の桁とのために仮定される同等の疑問符を考えてみましょう\(CNT1 \)右の\(CNT2 \)場合には、\(CNT1 \)より大きくし始め\ (CNT2 \)その後、私は申し訳ありません\(Bicarp \)ので、勝つことができない\(Monocarpが\)常に残りの場合には、9を埋めることができ、唯一の、極端なケースと考えることができる2つの人々が選択されているゲーム処理の半ばから最も優れた操作なので、考える必要はありません。極端なケースは2つあります。1つは\(Monocarp \)で、9を入力し、もう1つは停止せず、0のみを入力でき、最後に\(cnt1 \)が\(cnt2より大きい\)、2つ目は\(Bicarp \)がめちゃくちゃに9を埋め、もう1つは0を埋め続けますが、最後\(cnt2 \)に達しません。どちらの場合も\(Monocarp \)が勝ち、残りは判断するだけです。

#include<cstdio>
const int N=2e5+10;
char s[N];
int main(){
    int cnt1,cnt2,w1,w2;
    int n;
    cnt1=cnt2=w1=w2=0;
    scanf("%d",&n);
    scanf("%s",s+1);
    for(int i=1;i<=n;i++){
        if(i<=n>>1){
            if(s[i]=='?')w1++;
            else cnt1+=s[i]-'0';
        }else {
            if(s[i]=='?')w2++;
            else cnt2+=s[i]-'0';
        }
    }
    bool flag=1;
    if(w1==w2){
        if(cnt1!=cnt2)flag=0;
    }
    else if(w1>w2){
        int w=w1-w2;w>>=1;
        if(cnt1>cnt2)flag=0;
        else if(cnt1+w*9<cnt2 || cnt1+(w1-w2-w)*9>cnt2)flag=0;//Monocarp的操作次数可能比w大1.
    }else {
        int w=w2-w1;w>>=1;
        if(cnt2>cnt1)flag=0;
        else if(cnt2+w*9<cnt1 || cnt2+(w2-w1-w)*9>cnt1)flag=0;
    }
    if(flag)printf("Bicarp\n");
    else printf("Monocarp\n");
}

最後

自分で書いたのでバグがあるかもしれませんが、ハックデータがあれば連絡してください〜

おすすめ

転載: www.cnblogs.com/anyixing-fly/p/12758348.html