開始的時候我沒有考慮1/2的概率,直接一波組合數,然後wa
後來去看題解發現我們可以反過來想,求最後兩個人不一樣的情況
這個時候肯定會拋到最後的
所以每一種可能就是(0.5)^(n - 2),然後一共有c(n-2,n/2-1)種
乘起來就ok了。
但是這樣會超時而且結果太大
所以我們可以嘗試遞推
通過計算可以發現d[i+2] = d[i] * (i-1) / i
所以就遞推出所有值然後直接輸出就好了。
#include#define rep(i, a, b) for(int i = (a); i < (b); i++)
using namespace std;
const int maxn = 112345;
double d[maxn];
void init()
int main()
return 0;
}
紫書 習題 9 8 uva1632
題意 有n個寶藏,每個都在乙個位置p i 在規定的時間t i 就會消失。阿里巴巴要在寶藏消失前收集齊所有寶藏,問 有方法嗎?有的話最少多少秒?思路 開始想的是用狀態轉移方程來乙個個判斷,不好寫。看了題解知道在一段區間 l,r 要使時間最短必須從端點出來,然後果斷寫了乙個記憶化搜尋,tle了。再看題解...
紫書 習題 9 8 uva 10163
解題感想 好久沒刷題了,自己連揹包dp都差不多忘了。題目看著很複雜,可以將問題分解來看,和高中數學題的感覺一樣 1.求任意一組組合的最小的保護值 的最大值 2.求在改最大組合的情況下的,求最小的工資和,和某圖論一樣的思路。解題思路 第乙個揹包 任意組合 抽象成模板 在n個應聘者中選x人使得看守m個倉...
紫書 習題8 12 UVa 1153(貪心)
本來以為這道題是考不相交區間,結果還專門複習了一遍前面寫的,然後發現這道題的區間是不是 固定的,是在乙個範圍內 滑動的 只要右端點不超過截止時間就ok。然後我就先考慮有包含關係的時候怎麼選,然後發現當兩個區間只能放乙個的時候時間更短而截 至時間更長的時候,顯然更優。然後我就試著每個區間放的時候後後面...