2012 ICPC ACM 成都現場賽 Candy

2021-09-30 12:02:07 字數 746 閱讀 2123

題意:輸入m,p;從兩個盒子裡各有n顆糖,每天取一顆,發現其中

乙個盒子空,求另外乙個盒子糖果數的期望。p,1-p為取糖概率;

分析: 給盒子編號 a,b , 

設另外乙個盒子(為b) 剩  n - k 個 , 則 在過去的 (n + k)次 有 k 次 取到b , 且當前這次取到a 。

同理 對另外乙個盒子為(a) 。

則 期望的公式為:

σ( n - k) * c(n + k , k) * (  (1 - p) ^k  *  p ^(n + 1) + p ^k  * (1 - p)^(n + 1)  )  k = 0 ,1 ... n

對於 p^n 次方 肯定 爆double , 於是採用 先 log 再exp ,求值。 

c( n + k , k) = (n + k)! / ( n ! * k !) 

令 f(n) = n!  ,則 f(n) = f(n - 1) + log(n) 

log(p ^n) = n log (p) 

**如下:

const

int max_n = 200010

;double

f[max_n] ;

double loglog(int n , int

k)int

main()

printf(

"case %d: %.6lf\n

" , t ++, ans) ;

}return0;

}

hdu4111 成都現場賽A題

題意 有n堆石子,每堆石子有乙個數目,現有兩個人博弈,每個人每次可以進行兩個操作中的乙個 1 從某堆拿掉乙個石子 若某堆石子為0了,那麼這堆就不存在了 2 合併兩堆石子 沒有操作的就輸。問是哪個贏 思想 如果每堆石子數都大於1,那麼最後結果肯定相當於所有的堆合併成一堆後,然後再乙個乙個拿掉的結果。因...

2011ACM 成都現場 H題 HDU4118

對於每條邊來說,最多只有min a端點數,b端點數 個點可以交換通過此邊,然後只要能證明可以找到這樣一種交換使每條邊都能達到最大交換次數就行了。自己yy了一下,貌似是正確的,沒嚴格證明 找每條邊兩端的點的個數,從葉子遞迴一下就行了 include include include define mym...

2012華為校園招聘機試(成都) 2

第二道 對乙個陣列,將陣列中偶數從大到小排序,奇數從小到大排序,奇數和偶數交叉著放且輸出陣列第一位放奇數 若奇數和偶數不等長,則把剩下的直接放到陣列中。思路 先進行奇偶判斷,得到奇數和偶數陣列。然後對兩陣列排序,進行長度判斷,最後組織資料。include includevoid jiou int a...