• <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>
            隨筆 - 97, 文章 - 22, 評論 - 81, 引用 - 0
            數據加載中……

            Southeastern Europe 2004 解題報告

            A. Period

                   PKU 1961 http://poj.org/problem?id=1961

                   題意:給定一個長度為N(N <= 106)的字符串S,求它的所有前綴中能夠表示成AK的前綴,并且要求求出每個前綴對應的K

                   題解:KMP

                   利用KMP求出該串的Next數組,然后枚舉每個前綴,根據Next數組的定義,對于某個前綴S[1...i],有S[1...Next[i]] = S[i-Next[i]+1...i],假設前綴S[1...i]能夠表示長AK的形式,則A = S[Next[i]+1...i],所以必須滿足i能夠被i - Next[i] 整除,滿足條件后K = i/( i - Next[i])

             

            B. Corporative Network

                   PKU 1962 http://poj.org/problem?id=1962

                   題意:給定N(N <= 20000)個點和M(M <= 200000)次操作,每次操作有兩種類型:

                   I a b   a的父結點設為b,并且合并距離為 |a-b| mod 1000

                   E a    詢問a到根結點的合并距離。

            題解:并查集

            利用路徑壓縮的思想,用dist[p]表示pp的父結點的合并距離,每次查詢的時候累加p到根結點的合并距離,并且將pp所在樹的根結點R的路徑上的所有點的父結點都設為R,然后更新各自的合并距離。

            合并操作O(1),查詢操作總復雜度O(N)

             

            C. Cave Exploration

            PKU 1963 http://poj.org/problem?id=1963

            題意:給出N(N <= 1000)條水平或者垂直的走廊,再給定走廊上任意一個坐標點作為起點以及方向,按照以下策略走:能夠左轉就左轉,不能則筆直走,不能筆直走就右轉,都不能就掉頭。這樣走最后繞一圈又會回到起點,問哪些走廊是沒有經過的,只要有一個點走過就算經過。
                  題解:模擬 + 哈希。

            將水平線段和豎直線段分開存,分兩種情況討論:

                  1、水平線段

            對于任意一根水平線段,枚舉所有的豎直線段,計算出交點和水平線段的端點,保存下來并且按x坐標遞增排序,去掉重復點,利用雙向鏈表將兩個相鄰點連接起來,由于xy坐標范圍為-32767~32767,而交點數不會超過N2,所以可以采用哈希將二維的點映射到一位數組中。每個點記錄水平走廊的編號。

                  2、豎直線段

            同上操作,不同的是每個點記錄豎直走廊的編號。

            經過12兩步操作后,走廊上的關鍵點已經被離散化了,并且所有點都通過四向鏈表串接起來,然后只需要從起點開始模擬行走即可,走到一個關鍵點,將關鍵點所在的兩個走廊編號標記掉,最后統計沒有標記的走廊編號就是答案了。

             

            D. City Game

                   PKU 1964 http://poj.org/problem?id=1964

                   題意:給定一個M*N(M <= 1000N <= 1000)01矩陣,求它的一個子矩陣,滿足矩陣元素全為1,并且面積最大。

            題解:枚舉行,對于第i行,以第i行為起點,掃描每一列j,找到第一個不是1的數所在的位置P[j],令K[j] = P[j] - i,于是問題轉化成了一個一維的問題。

            L[i] 表示 K [ L[i]+1 ... i] 中的元素都大于等于K[i],但是L[i]小于K[i]

            R[i] 表示 K [i ... R[i]-1] 中的元素都大于等于K[i],但是R[i]小于K[i]

            Max{  (R[i] - L[i] - 1) * K[i],  1 <= i <= N }就是以當前枚舉行為起點的最大矩陣,枚舉M次取最大值就是全局的最大子矩陣了。

             

            E. Cube Root

                   PKU 1965 http://poj.org/problem?id=1965

                   題意:給定一個不超過150個數字的正整數,求它的三次方根,精確到小數點后10位。

                   題解:大數模擬

            將輸入的數X用字符串存儲,乘上1030,利用二分求出最大的Y,使得Y3 <= X。然后在Y的后十位前插入一個小數點,輸出即可。

             

            F. Cable TV Network

                   PKU 1966 http://poj.org/problem?id=1966

                   題意:求圖的點連通度。給定一個N(N <= 50)個點的圖,求去掉至少多少個點能夠將它變成一個非連通圖。

                   題解:搜索 + 剪枝 (或者 最大流)

                   枚舉每個點去掉或不去掉,總共250種狀態,每次去掉點后判斷當前圖的連通性,一旦破壞了連通,去掉的點數即為答案;如果發現某個點去掉后,剩下點組成的圖變成了一個完全圖,那么不用繼續搜索了,因為當前狀態下不可能將剩下的圖變成非連通圖了;如果去掉的點數超過目前的最優解也直接剪枝。

                   好吧...一定是數據弱了-_-||,正解是最大流拆點。

             

            G. Alibaba

                   PKU 1967 http://poj.org/problem?id=1967

                   題意:給定N(N <= 104)個整數對(Pi, Di)表示在Pi位置有一個寶物,并且需要在Di 時間之前取走(給出順序為Pi遞增的順序)。起始可以任意選擇一個位置,往左或者往右取寶物,問是否能夠保證每個物品都在Di時間之前取走(時間和距離關系為1:1),如果可以,給出取完所有寶物的最少時間。

                   題解:搜索 + 剪枝

                   首先可以想到的是,起始位置一定是N個寶物所在位置中的其中一個,所以首先可以枚舉每個寶物的起始點,比如當前位置為pos,那么在第0秒內,訪問過的區間為[pos, pos],可以選擇往左走,也可以選擇往右走,那么是不是只要選擇某個方向走完,然后再反方向走到底如果能夠滿足所有點都在截止時間內完成一定是對的呢?答案是否定的,來看一組數據,如圖1,起始點只能選擇3號位置,并且只能選擇往右走,走到4后再折回走到2,然后再折回走到5,以此類推,并且只有這一種路徑才能滿足所有寶物都在截至時間內取完。


            1

                     按照這個思路,進行狀態的劃分,假設當前已經訪問的區間為[L, R],并且現在的位置處于pos位置(這里pos要么等于L,要么等于R),所以可以用三維來表示狀態DP[s][l][r](lr表示訪問過的區間的左右端點,如果當前位置在ls = 0,如果當前位置在r,則s=1),總共狀態數目N2,狀態轉移的時候由大狀態推小狀態,即DP[s][l][r]一定是由DP[0][l-1][r]DP[0][l][r+1]DP[1][l-1][r]DP[1][l][r+1]這四個狀態得出。

                   考慮到N比較大,所以把所有狀態存儲到數組中再利用動態規劃進行遞推,如果數據量不多的話,可以卡過,但是狀態存儲需要用滾動數組,否則內存吃不消,也可以采用搜索 + 剪枝,思路是沿用了動態規劃的思想,假設當前已經訪問的區間為[L, R],現在的位置處于pos位置(這里pos要么等于L,要么等于R),并且已經使用了T的時間,無論當前的pos是在左區間端點L上還是在右區間端點R上,他都可以選擇走到L-1(L > 1),或者R+1(R < N),于是就可以遞歸求解了,遞歸出口為L=1R=N的時候。


            2

                   如圖,已經訪問的寶物為紅色標記的點,灰色標記的為未曾訪問過的,并且現在的位置在已經訪問區間的左端點L上,已經使用了T的時間,我們需要判斷這個狀態是否合法,則需要滿足以下的幾個不等式。

                   1、保證右邊未訪問的都能在截止時間內訪問到:

                          T + (P[R] - P[L]) +  (P[R+1] - P[R])  < D[R+1]

                          T + (P[R] - P[L]) +  (P[R+2] - P[R])  < D[R+2]

                          ...

                          T + (P[R] - P[L]) +  (P[N] - P[R])  < D[N]

                          將這些等式化簡,可得:

                          T - P[L]  <  D[R+1] - P[R+1]

                          T - P[L]  <  D[R+2] - P[R+2]

                          ...

                          T - P[L]  <  D[N] - P[N]

                          再進行進一步化簡,得:

                          T - P[L]  <  Min{ D[k] - P[k],  R < k <= N }

                   2、保證左邊未訪問的都能在截止時間內訪問到:

                          同理,可以得出:

                          T + P[R]  <  Min{ D[k] + P[k],  1 <= k < R }

                  

                   那么,令 POSTM[i] = Min{ D[k] - P[k],  i < k <= N }

                                  PREM[i] = Min{ D[k] + P[k],  1 <= k < i }

                   這兩個數組可以分別通過一次逆序和順序的線性掃描求出來,用于搜索的時候判斷可行性。例如,當T - P[L] >= POSTM[R] 表示在右邊未訪問的寶物中有至少一個寶物不能在截止時間前被訪問到,T + P[R] >= PREM [R]表示在左邊未訪問的寶物中有至少一個寶物不能在截止時間前被訪問到,直接剪枝。

                   還需要一個剪枝,就是在當前時間T加上當前狀態下預計訪問完所有寶物的最小時間已經比之前求出的最小時間大,直接剪枝。

             

            H . Booklets

                   PKU 1968 http://poj.org/problem?id=1968

                   題意:N(N <= 3000)本小冊子需要分配給S個學校,每個學校得到的是N/S的上整本冊子或者N/S的下整本冊子,每本冊子有一個頁數,并且規定分配冊子的時候按照頁數遞增來分配,先把上整本冊子分完再分下整的,對于每個學校的分書規則,按照輸入的順序進行分配。求問第T個學校分到的第一本冊子的頁數。

             

                   題解:需要求出幾個量:

                   上整冊子的數目UIP = (N+S-1) / S;

                   下整冊子的數目LIP = N/S;

                   分到上整冊子數目的學校個數UIPC = N % S;

                   分到下整冊子數目的學校個數LIPC = N - N % S;

             

                   首先對所有的冊子按頁數遞增來排序(如果頁數相同按照下標遞增排序),然后減去前T-1個學校的冊子總數,容易得出第T個學校分到的冊子數目C,從接下來的C個冊子中找到之前下標最小的冊子,它對應的頁數就是答案。

             

            I. Count on Canton

                   PKU 1969 http://poj.org/problem?id=1969

                   題意:給定下圖所示的無限分數序列,并且按照蛇形方式編號,即第一個為1/1,第二個為1/2,第三個為2/1,第四個為3/1,以此類推,問第N個分數是什么。

                           1/1         1/2         1/3         1/4           1/5 ...
                           2/1         2/2         2/3         2/4
                           3/1         3/2         3/3
                           4/1         4/2
                           5/1
                題解:數學題。
                首先二分求出在第幾條斜線上,即(K-1)K/2 < N的最大的K,然后求根據K的奇偶性求出蛇形在第K條斜線的行走方向,第N - (K-1)K/2 個數就是答案。
             

            posted on 2014-08-06 21:23 英雄哪里出來 閱讀(1777) 評論(2)  編輯 收藏 引用 所屬分類: 區域賽 解題報告

            評論

            # re: Southeastern Europe 2004 解題報告  回復  更多評論   

            首先二分求出在第幾條斜線上,即(K-1)K/2 < N的最大的K,然后求根據K的奇偶性求出蛇形在第K條斜線的行走方向,第N - (K-1)K/2 個數就是答案www.yongfengxbx.com
            2014-08-10 17:30 | 信報箱

            # re: Southeastern Europe 2004 解題報告  回復  更多評論   

            首先可以想到的是,起始位置一定是N個寶物所在位置中的其中一個,所以首先可以枚舉每個寶物的起始點,比如當前位置為pos,那么在第0秒內,訪問過的區間為[pos, pos],可以選擇往左走,也可以選擇往右走,那么是不是只要選擇某個方向走完,然后再反方向走到底如果能夠滿足所有點都在截止時間內完成一定是對的呢?答案就是http://www.yfxinbaoxiang.com/
            2015-01-20 09:48 | 不銹鋼信報箱

            # re: Southeastern Europe 2004 解題報告  回復  更多評論   

            這兩個數組可以分別通過一次逆序和順序的線性掃描求出來,用于搜索的時候判斷可行性。例如,當T - P[L] >= POSTM[R] 表示在右邊未訪問的寶物中有至少一個寶物不能在截止時間前被訪問到,T + P[R] >= PREM [R]表示在左邊未訪問的寶物中有至少一個寶物不能在截止時間前被訪問到,直接剪枝www.yfxinbaoxiang.com/
            2015-01-20 09:49 | 不銹鋼信報箱
            亚洲乱码日产精品a级毛片久久| 大伊人青草狠狠久久| 久久久久亚洲精品无码网址| 久久亚洲AV无码西西人体| 伊人久久大香线蕉精品不卡| 中文字幕乱码人妻无码久久| 久久亚洲精品中文字幕| 久久精品综合一区二区三区| 免费久久人人爽人人爽av| 久久久久人妻精品一区二区三区| 国产午夜精品久久久久九九| 久久综合九色综合网站| 国产精品一久久香蕉国产线看| 久久久黄片| 国产精品18久久久久久vr| 日韩亚洲国产综合久久久| 国产午夜福利精品久久2021 | 国产精品久久久久天天影视| 久久人人爽人人爽AV片| 久久综合狠狠色综合伊人| 久久综合亚洲色HEZYO社区| 久久精品国产亚洲Aⅴ蜜臀色欲| 久久久精品人妻一区二区三区四| 精品无码久久久久久久动漫| 日本精品久久久久中文字幕8| 午夜精品久久久久久毛片| 亚洲国产成人久久一区WWW| 精品水蜜桃久久久久久久| 中文字幕成人精品久久不卡 | 美女写真久久影院| 麻豆亚洲AV永久无码精品久久| 一级女性全黄久久生活片免费| 国内精品伊人久久久久影院对白 | 俺来也俺去啦久久综合网| 久久夜色精品国产亚洲| 性高朝久久久久久久久久| 久久精品国产福利国产琪琪| 久久精品国产精品亚洲| 久久久91人妻无码精品蜜桃HD| 久久成人18免费网站| 欧美久久久久久午夜精品|