ACM/ICPC2016 青島區域賽


A(hdu5982)、(模擬)

  題意:輸入n對數,將每對數相乘並相加

  分析:模擬

B(hdu5983)、(模擬)

  題意:給你一個二階魔方,問能否通過一次旋轉使得給定魔方的每個面顏色相同

  分析:模擬

C(hdu5984)、(數學,微分方程)

  題意:有一個長為d的木棒,最右端有長為L的區域(L<=d),每次操作從木棒的某個部位切,左邊的部分就全扔掉,右邊的部分保留下來視為新的木棒,一直到切到右端的L區域為止才停止才做,求操作次數的數學期望。

  分析:先考慮離散的,f[i]表示長為i的木棒的數學期望,則f[i]=Σ(f[k]+1)/(i-L) (L<=i<=d,L<=k<=i),嘗試將小數擴大成整數,但發現精度不夠。

     然后把他寫成積分形式:f(x)=∫f(i)di/x(0<=i<=x)  + 1,於是問題就是解這個微分方程,解出f'(x)=1/x,所以f(x)=lnx+C,代入原式解得C=1-lnL

     所以結果就是lnd+1-lnL=ln(d/L)+1

D(hdu5985)、(概率、遞推)

  題意:有n種硬幣,每種硬幣有ai個,每個硬幣有p的概率正面朝上,每次操作后將背面朝上的硬幣全部丟掉,直到只剩下一種硬幣,稱這種硬幣為幸運硬幣,求每種硬幣成為幸運硬幣的概率

  分析:每種硬幣都是獨立的,分開考慮

     f[i][k]表示第i種硬幣,第k輪投完后硬幣全部丟棄的概率

     則f[i][k]=(1-p+(1-p)p+(1-p)p^2+.....)^a[i]=(1-p^k)^a[i]

     那么第k輪后至少存在一枚硬幣的概率就是1-f[i][k]

     ans[i]=Σ(k=0..+無窮)  f[1][k]*f[2][k]*...*f[i-1][k]*f[i+1][k]*....*f[n][k]*(1-f[i][k]-1+f[i][k+1]) 這里是為了防止重復

     然后根據精度和時限要求,k只要取幾百就行了。

G(hdu5988)、(費用流)

  題意:給你個圖,每個點上都有人的數量和包的數量,要求人通過走動滿足每個點的包的數量>=人的數量,每條邊有容量和一個走動破壞概率pi,表示如果一個人走這條邊,那么有pi的概率破壞這條邊(但這條邊被首次經過的時候破壞概率是0),求最小的破壞概率

  分析:明顯的費用流,這里是乘積所以取對數變成加法

     將問題看作要求不破壞概率最大

     對於人的數量>=包的數量的點i,S->i,容量為差值,費用為0,對於人的數量<=包的數量的點i,i->S,容量為差值,費用為0

     另外原圖中的每條邊都要拆一條出來,容量為1,費用為0,保證先走這個第一次走不破壞的

     然后就是求S->T的最大費用最大流

     注意事項:

       由於精度問題,不能取ln,可以取log2或者log10

       實數spfa的時候,松弛操作一定要加eps!不然會TLE

K(hdu5992)、(kdtree)

  題意:給你n個賓館的坐標和價格,有m個詢問,表示每個人的坐標和手上的錢,對於每個人找出離他最近的且價格小於等於手中錢的賓館,如果有多個,輸出順序靠前的賓館。

  分析:一個kdtree的題,可以開到三維,但計算距離時候只計算兩維。

     在搜索最近點的時候,更新答案時候加上第三維的判斷就行

     注意這里要用上第三維的mn[i]數組,代表它所管轄的矩形中錢數的最小值

     如果某個節點管轄矩形中錢數的最小值>當前人手里的錢,那么就不需要進去找了

     如果不加這個優化,那么很容易會TLE/爆棧(hdu容易爆棧)

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM