• <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>
            posts - 43,  comments - 9,  trackbacks - 0
            500pt Perfect Memory
            題意: 某神在M*N(1<=M, N<=50, M*N為偶數)的格子上玩對對碰: 每個格子都有個隱藏的圖形. 此神一次行動翻開2個, 如果相同, 就成功消去這2個格子. 如果不相同, 那這2個格子又恢復隱藏狀態. 但是此神記憶力很NB, 能記住所有翻開過的格子是什么圖形. 還有重要的一點, 他一次行動時, 是先翻開1個格子, 知道它的圖形之后, 再決定怎么翻第2個格子, 而不是兩個格子同時翻開. 問此神把所有格子都消去, 需要消耗的行動次數的期望.

            容易想到期望與翻格子的位置無關. 有關的量是: 當前還有多少對圖形沒被消去. 其中有多少對圖形已經知道其中一個的位置了. so, dp[i][j], i為前者, j為后者. 一次行動中, 第1個格子肯定翻之前沒翻過的(一共有2i-j個, 記為s), 除非已經知道某1對的位置, 直接把2個都翻出來消掉. 所以轉移有幾種情況:
            1) 從s中翻出1個新圖形. 從剩下s-1中翻出了相同圖形, 消除. 這樣的概率是2(i-j)/s * 1/(s-1), 轉移到dp[i-1][j].
            2) 從s中翻出1個新圖形. 從剩下s-1中又翻出新圖形, 這樣就多了2種已知圖形. 概率是2(i-j)/s * 2(i-j-1)/(s-1), 轉移到dp[i][j+2].
            3) 從s中翻出1個新圖形. 從剩下s-1中翻出了之前j個已知圖形中的一個. 這樣, 下一次就可以消耗一次行動把那對已知圖形消去, 轉移到dp[i-1][j], 概率是2(i-j)/s * j/(s-1).
            4) 從s中翻出1個已知圖形. 直接翻出與它配對的消去. 轉移到dp[i-1][j-1], 概率是j/s * 1.

            所以 dp[i][j] = p1*(dp[i-1][j]+1) + p2*(dp[i][j+2]+1) + p3*(dp[i-1][j]+2) + p4*(dp[i-1][j-1]+1).
            其中2)的條件是i>=j+2, 4)的條件j>=1. 邊界dp[i][i] = i. 最后dp[M*N][0]即為所求.

            [概率 期望 DP]

            1000pt Reflections
            題意: 某神在三維空間中玩一個游戲, 空間中有N個(N<=20)平面, 每個平面都垂直于某個坐標軸, 并且與該坐標軸交于整點. 此神從(0,0,0)處出發, 想去(X,Y,Z)處. 現在他每行動一次可以做如下移動:
            1) 走到與他相鄰的1個整點上, 即(x+1, y, z) (x-1, y, z) (x, y+1, z) (x, y-1, z) (x, y, z+1) (x, y, z-1)中的一個.
            2) 神一次行動可以利用一個平面, 移動到關于這個平面對稱的點處. 每個平面在整個游戲過程中至多只能利用一次.
            問此神到達終點花費的最少行動次數.

            易知三個方向是不相關的. 所以只用先考慮一維的情形.
            首先要想到, 走路和反射交替, 是等效于先反射完了再一口氣走到終點的. 因為在反射之前的走動, 不會被反射動作放大. 反射前移動多少步, 經過若干次反射后所到達的位置, 與不移動直接反射到達的位置, 相差正好是移動的步數.
            所以可以轉化為先反射若干次, 再行走到終點. 現在就要推出反射到達的位置公式.
            假設每個反射軸的坐標依次是x[1], x[2], ..., x[n], 神經過第k次反射后的位置是p[k].
            容易推出, p[1] = 2x[1], p[2] = p[1] + 2(x[2]-x[1]) = 2x[2] - 2x[1], ... p[k] = 2x[k]-2x[k-1]+2x[k-2]-...+2*(-1)^(k-1)x[1].
            這是很規則的正負交替求和, 正項數等于負項數, 或者比負項數多1.
            到此問題轉化得很清晰了: 在20個數中選出k個數作為正項, k(或k-1)個數作為負項, 每個數至多被選1次. 該方案的總行動次數是選出的個數(即做反射的總次數), 加上這些項之和到終點的距離(即最后一路走過去). 
            選數要降低復雜度, 可以把20個數分成兩個集合, 每邊10個數, 先各自生成2^10個和. 兩邊分別排序后, 從小到大枚舉左邊的, 記一個指針從大到小掃右邊的.

            [數學 分治]
            posted on 2011-07-30 11:04 wolf5x 閱讀(319) 評論(0)  編輯 收藏 引用 所屬分類: topcoder
            <2011年7月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            "Do not spend all your time on training or studying - this way you will probably become very exhausted and unwilling to compete more. Whatever you do - have fun. Once you find programming is no fun anymore – drop it. Play soccer, find a girlfriend, study something not related to programming, just live a life - programming contests are only programming contests, and nothing more. Don't let them become your life - for your life is much more interesting and colorful." -- Petr

            留言簿(3)

            隨筆分類(59)

            隨筆檔案(43)

            cows

            搜索

            •  

            最新評論

            評論排行榜

            亚洲国产一成人久久精品| 精品国产乱码久久久久软件| 91精品国产高清91久久久久久| 亚洲综合精品香蕉久久网| 久久久无码一区二区三区| 国产农村妇女毛片精品久久| 亚洲精品97久久中文字幕无码| 久久婷婷成人综合色综合| 91亚洲国产成人久久精品网址| 一级a性色生活片久久无| 久久精品a亚洲国产v高清不卡| 久久久精品视频免费观看| 奇米影视7777久久精品| 亚洲精品成人久久久| 精品午夜久久福利大片| 国产69精品久久久久久人妻精品| 国产一区二区精品久久 | 亚洲av伊人久久综合密臀性色| 成人妇女免费播放久久久| 午夜精品久久影院蜜桃| 久久久久久久尹人综合网亚洲| 伊人久久大香线蕉av不变影院| 久久久久久久综合日本| 久久综合久久综合九色| 久久久久无码精品国产不卡| 狠狠综合久久综合88亚洲| 伊人久久大香线蕉无码麻豆| 91精品国产高清久久久久久91| 999久久久免费精品国产| 色综合久久无码五十路人妻| 97精品依人久久久大香线蕉97| 三级韩国一区久久二区综合| 欧美国产成人久久精品| 久久se精品一区二区影院| 超级碰久久免费公开视频| 久久精品国产影库免费看| 亚洲午夜久久久精品影院| 久久久久免费精品国产| 国产精品亚洲美女久久久| 亚洲国产天堂久久综合网站| 国内精品久久久久久麻豆|