• <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 閱讀(318) 評論(0)  編輯 收藏 引用 所屬分類: topcoder
            <2011年5月>
            24252627282930
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            "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久久小草| 精品一区二区久久| 久久亚洲高清综合| 久久久久久国产精品免费无码| 好属妞这里只有精品久久| 国产精品免费看久久久香蕉 | 国产精品美女久久福利网站| 伊人久久大香线蕉综合影院首页| 91久久精品91久久性色| 久久精品国产色蜜蜜麻豆| 99久久精品免费看国产一区二区三区 | 久久天天躁夜夜躁狠狠| 国产精品久久一区二区三区| 久久久久亚洲av毛片大| 久久99国产综合精品免费| 美女久久久久久| 久久精品无码一区二区三区| 久久久久久国产精品无码下载| 91精品国产综合久久婷婷| 一本色综合网久久| 久久久久亚洲AV成人网| 久久国产欧美日韩精品 | 99国产欧美久久久精品蜜芽 | 国产午夜福利精品久久2021| 久久国内免费视频| 午夜视频久久久久一区| 99久久综合狠狠综合久久| 色欲av伊人久久大香线蕉影院 | 男女久久久国产一区二区三区| 欧美激情精品久久久久久久九九九 | 精品久久久久久久久午夜福利| 欧美日韩精品久久久久| 色婷婷久久综合中文久久一本| 国产精品美女久久久久AV福利| 91精品国产综合久久久久久| 丰满少妇高潮惨叫久久久| 久久狠狠高潮亚洲精品| 国产精品久久久久久吹潮|