hdu 5036 概率+bitset
来源:互联网 发布:qq群关系数据库 编辑:程序博客网 时间:2024/06/14 15:09
http://acm.hdu.edu.cn/showproblem.php?pid=5036
n个房间每个房间里面有一把或多把钥匙可以打开其他的门。如果手上没有钥匙可以选择等概率随机选择一个门炸开,求用炸弹数的期望。
O(N^3)的复杂度过不了
单独考虑一个房间,如果有k个房间被炸开都会导致这个房间被打开。那么炸一次这个房间被打开的概率即为
bitset第一次见..
#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <string>#include <bitset>#include <map>#include <iostream>#include <algorithm>using namespace std;#define RD(x) scanf("%d",&x)#define RD2(x,y) scanf("%d%d",&x,&y)#define clr0(x) memset(x,0,sizeof(x))const int INF = ( 1 << 30 );int n;bitset <1005> g[1005];int cnt[1005];int main(){ int _,cas = 1,k,x; RD(_); while(_--){ printf("Case #%d: ",cas++); RD(n); clr0(cnt); for(int i = 1;i <= n;++i) g[i].reset(); for(int i = 1;i <= n;++i){ g[i][i] = 1; RD(k); while(k--){ RD(x); g[x][i] = 1; } } for(int i = 1;i <= n;++i){ for(int j = 1;j <= n;++j){ if(g[j][i]) g[j] |= g[i]; } } double ans = 0.0; for(int i = 1;i <= n;++i){ for(int j = 1;j <= n;++j){ if(g[i][j]) cnt[i]++; } ans += 1.0/(double)cnt[i]; } printf("%.5lf\n",ans); } return 0 ;}
0 0
- hdu 5036 概率+bitset
- hdu 5036 Explosion(bitset处理概率)
- hdu 5036 概率+期望+bitset优化
- hdu 5036 Explosion (bitset优化的传递闭包求解概率)
- HDU 5036 (STL之bitset)
- HDU 5036 Explosion (bitset + DP)
- hdu-Bitset
- hdu5036(概率dp+bitset优化)
- HDU 5036 Explosion 概率 期望
- HDU 5036 Explosion 概率 期望
- Hdu 2051 - Bitset
- HDU 2051 Bitset
- HDU 2051 - Bitset
- hdu-2501-Bitset
- HDU 2051 Bitset
- HDU 2051 Bitset
- hdu 2051 Bitset(水题)
- HDU 2051 Bitset
- 配置虚拟主机并更改Apache默认解析路径
- Combination Sum
- 两道Splay小结--bzoj1112: [POI2008]砖块Klo&bzoj1588: [HNOI2002]营业额统计
- Google是如何做测试的?(一、二)
- 各类创业公司
- hdu 5036 概率+bitset
- 将博客搬至CSDN
- java使用UDP
- Python学习笔记——如何了解(grok)一个module
- 三星坠落;最糟的日子还没到来
- 上机作业
- MATLAB总结--delicious
- 开灯问题
- Android EditView 开发中遇到的问题(未完善)