• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            算法學(xué)社
            記錄難忘的征途
            posts - 141,comments - 220,trackbacks - 0

            題目描述:

            給一個長度為 N<1000 的環(huán)。A和B兩個人每次在這個鏈上選一段長度為 M<1000 的未染色區(qū)間進行染色。直到某人不能進行此操作時判此人負(fù)。假設(shè)兩人都足夠聰明,請你判斷誰會取得勝利?

            吐槽:

                1. 真是不太喜歡博弈題,能推出SG函數(shù)還好說,關(guān)鍵有的題要純靠YY這就很讓人上火了.....
                2. 最近感覺狀態(tài)還可以,似乎又找到了高中時候的感覺-----為了一個目標(biāo)不息奮斗!!
                3. SG定理的證明完全不會啊..... 不全部搞懂真不是我性格....

            思路分析:

                明顯和喜聞樂見的NIM游戲是同一類型的....
                推薦兩篇論文
                    1. 《由感性認(rèn)識到理性認(rèn)識 -- 透析一類博弈游戲的解答過程》 張一飛
                    2. 《組合游戲略述——淺談 SG 游戲的若干拓展及變形》賈志豪
                總之SG函數(shù)就是對于某局面u有 
                    SG(u) = mex (SG(v)| u可以轉(zhuǎn)移到v)    --- 1
                而且如果u是游戲的和,那么就有個很牛b的Sprague–Grundy定理:
                    在我們每次只能進行一步操作的情況下,對于任何的游戲的和,我
                    們?nèi)魧⑵渲械娜我粏我?SG-組合游戲換成數(shù)目為它的 SG 值的一堆石子,    
                    該單一 SG-組合游戲的規(guī)則變成取石子游戲的規(guī)則(可以任意取,甚至
                    取完),則游戲的和的勝負(fù)情況不變。
                而且如果局面u是游戲的和,由若干個單一游戲 u0,u1,...,un組成的話,那么SG函數(shù)滿足
                    SG(u) = SG(u0) xor SG(u1) xor ... xor SG(un)       --- 2
                于是就可以解這道題了,雖然我至死都不會證明.....
                
                這道題拿掉一個區(qū)間之后,變成了一個長度為n-m的鏈。
                然后這個游戲的每個局面都可以變成:對于許多個長度不一的鏈,你可以每次選一個鏈(假設(shè)長度為L),把它拆成兩個長度和為L-M的鏈。
                每個單鏈就是一個單一的長度,它有一個SG值SG(L)。它的后繼狀態(tài)最多有L-M+1個,而且后繼狀態(tài)都是游戲的和,SG(x,L-M-x)。
                根據(jù)2式得:
                    SG(x,L-M-x) = SG(x)^SG(L-M-x)。
                這樣可以算出L的每個后繼狀態(tài)SG(i,L-M-i),根據(jù)1式計算出SG(L)
                如果SG(L)沒有后繼狀態(tài)的話,即L<M。有SG(L) = 0 (先手必敗)。
             1 #include<iostream>
             2 #include<cstdio>
             3 #include<cassert>
             4 using namespace std;
             5 int n,m;
             6 int dp[1005];
             7 int solve(int k){
             8 //    cout<<k<<endl;
             9     assert(k >= 0);
            10     if(k<m) return 0;
            11     int &ans = dp[k];
            12     if(ans != -1) return ans;
            13     bool vis[1001] = {0};
            14     for(int i = 0; i<= k-m; i++)
            15         vis[solve(i) ^ solve(k-i-m)] = 1;
            16     for(ans = 0;;ans++)
            17         if(!vis[ans]) break;
            18 //    cout<<k<<" "<<ans<<endl;
            19     return ans;
            20 }
            21 int main(){
            22     int t; cin >> t;
            23     for(int oo= 1; oo <=t; oo++){
            24         cin >> n >> m;
            25         for(int i = 0; i<=n ; i++) dp[i] = -1;
            26         int sg = m > n ? 1 : solve(n-m);
            27         printf("Case #%d: ",oo);
            28         puts(sg==0 ? "aekdycoin" : "abcdxyzk");
            29     }
            30     return 0;
            31 }
            32 
            posted on 2012-04-28 23:14 西月弦 閱讀(446) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告
            狠狠人妻久久久久久综合| 无码超乳爆乳中文字幕久久 | 色欲av伊人久久大香线蕉影院| 乱亲女H秽乱长久久久| 久久天天躁狠狠躁夜夜躁2O2O| 久久人人爽人人人人爽AV| 久久夜色精品国产欧美乱| 久久人人爽人爽人人爽av | 热re99久久精品国99热| 国产一区二区精品久久| 久久亚洲国产最新网站| 91久久精品91久久性色| 中文字幕精品久久| 日韩精品国产自在久久现线拍| 国产精品九九久久免费视频 | 亚洲一级Av无码毛片久久精品| 亚洲欧洲精品成人久久曰影片| 亚洲国产精品一区二区久久hs| 久久精品夜夜夜夜夜久久| 欧美激情精品久久久久久| 精品免费tv久久久久久久| 亚洲精品无码久久久久| 亚洲午夜福利精品久久| 欧美久久一级内射wwwwww.| 国产精品久久久久久福利漫画 | 国产成人精品久久亚洲| 99精品久久精品一区二区| 久久婷婷五月综合97色直播| 97精品伊人久久久大香线蕉| 久久久一本精品99久久精品88| 国产精品九九久久免费视频 | 性做久久久久久免费观看| 国产激情久久久久影院老熟女免费| 久久精品国产亚洲AV忘忧草18| 久久精品无码专区免费东京热| 天天影视色香欲综合久久| 国产香蕉97碰碰久久人人| 成人午夜精品久久久久久久小说| 中文字幕日本人妻久久久免费| 精品久久久久久久久久久久久久久 | 久久久久人妻精品一区三寸蜜桃|