hdu 4089 不錯的DP 北京現場賽題

2021-06-23 07:20:25 字數 1037 閱讀 3845

還有疑惑,需要重新推:

但是學到的:

1、a=a+b+c  abc是三種情況,那麼p(a)=a*p(a->事件)+b*p(b->事件)+c*p(c->事件);

a->事件意思是 在a情況下的事件,就是全概率公式的思想吧

2、一定注意每一步會不會出現分母為0 的情況,以及預處理的時候對於一些特殊情況導致自己的式子會出現分母為0的排除掉

3、概率dp經常出現推出了式子但是自己不會寫**的情況,那麼就模擬計算,注意迭代找計算規律

題解參考著兩個:

至於第一篇部落格提到的tle的事情,目測是分母出現0了,其實演算法挺多的,不一定用那個:

可以這樣:(因為dp[i][i]和dp[i][1] c[j]已經算出來了)

for(int j=2;j

for(int j=2;j#include #include #include #include #include #include #include #include #include using namespace std;

#define ls(rt) rt*2

#define rs(rt) rt*2+1

#define ll long long

#define ull unsigned long long

#define rep(i,s,e) for(int i=s;i>1;

const double eps = 1e-8;

const int maxn = 2000+5;

double dp[maxn][maxn],pp[maxn];

double c[maxn];

int main()

{ //in("hdu4089.txt");

int n,m,k;

double p1,p2,p3,p4,p21,p31,p41;

while(~scanf("%d%d%d",&n,&m,&k))

{cl(dp,0);

scanf("%lf%lf%lf%lf",&p1,&p2,&p3,&p4);

if(abs(1.0-p1-p2)

不錯的網試題目(集合dp)

floyd 路徑dp 集合dp for int s i i 1 s s s 1 i 列舉i的每乙個非空真子集s,若包含i需修改s初始化 ifndef solver h define solver h include using namespace std const int kmaxn 55 con...

hdu4415 不錯的想法題

題意 乙個人他有一定的血,有一些怪物,他去殺怪物,有的怪物殺死他後還可以在不費自己血的情況下任意殺死一些怪物,問你他最多殺死多少怪物,在最多殺怪前提下最好用多少血,大體題意是這樣 思路 首先我們把怪物分成兩個集合,a乙個是殺死他後可以免費殺死其他人的,b另乙個是殺死他後不能免費殺死其他人的,分析下我...

hdu4415 不錯的想法題

題意 乙個人他有一定的血,有一些怪物,他去殺怪物,有的怪物殺死他後還可以在不費自己血的情況下任意殺死一些怪物,問你他最多殺死多少怪物,在最多殺怪前提下最好用多少血,大體題意是這樣 思路 首先我們把怪物分成兩個集合,a乙個是殺死他後可以免費殺死其他人的,b另乙個是殺死他後不能免費殺死其他人的,分析下我...