hdu5036(bitset求并集)
来源:互联网 发布:文字设计软件手机软件 编辑:程序博客网 时间:2024/05/16 04:57
//bitset 求并集加速。
i - > j , j - > k 处理出 i > k
可以直接这样,前提数组的值为0 或 1
//注意循环顺序。 for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(vis[j][i]){ vis[j] |= vis[i]; } } }
本题处理出可以通向某个门的方案数,
到达某个门的期望就是 1/方案数
最后求和就是打开或炸开所有门的期望。
#include <set>#include <map>#include <list>#include <cmath>#include <ctime>#include <deque>#include <queue>#include <stack>#include <cctype>#include <cstdio>#include <string>#include <vector>#include <cassert>#include <cstdlib>#include <cstring>#include <sstream>#include <iostream>#include <algorithm>#include <bitset>#define PI acos(-1.0)#define MOD 1000000009#define INF 0x3f3f3f3f#define Lowbit(x) (x & (-x))#define mem(a,x) memset(a,x,sizeof(a))#define Read() freopen("in.txt", "r", stdin);#define Write() freopen("out.txt", "w", stdout);#define bitnum(a) __builtin_popcount(a)using namespace std;typedef long long int ll;inline int in(){ ll res=0;char c;ll f=1; while((c=getchar())<'0' || c>'9')if(c=='-')f=-1; while(c>='0' && c<='9')res=res*10+c-'0',c=getchar(); return res*f;}const int N =1010;bitset<N>vis[N];int main(){ int t;scanf("%d",&t); for(int cas=1;cas<=t;cas++){ printf("Case #%d: ",cas); int n;scanf("%d",&n); for(int i=1;i<=n;i++){ vis[i].reset(); vis[i][i] = 1; int k;scanf("%d",&k); for(int j=0;j<k;j++){ int tmp;scanf("%d",&tmp); vis[i][tmp] = 1; } } //注意循环顺序。 for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(vis[j][i]){ vis[j] |= vis[i]; } } } double ans = 0; for(int i=1;i<=n;i++){ double num = 0.0; for(int j=1;j<=n;j++){ if(vis[j][i]) num += 1; } ans += 1/num; //假如我们有k个门都能到达第u个门,然而每次都是只能选择一个门来到u,那么显然,到达u的期望是1/k //期望的独立可加性; // 有num种方法到达i; } printf("%.5f\n",ans); } return 0;}
1 0
- hdu5036(bitset求并集)
- hdu5036(概率dp+bitset优化)
- 2014 ACM/ICPC Asia Regional Beijing Online(hdu5036 概率+bitset优化)
- 【动态规划23】hdu5036 Explosion(bitset优化)
- BitSet 设置及取值 求交集和求并集
- 筛选法求素数(数组和BitSet分别存储)
- Java BitSet(位集)
- Java BitSet(位集)
- 不相交集的求并算法(按集合大小求并+按高度求并)
- 求集合并集。
- 求集合并集
- 求集合并集
- 求集合并集
- 求集合并集
- 求集合 并集
- 2014北京网络预选赛1005(强连通缩点+期望)HDU5036
- bitset优化Floyd求传递闭包
- java字符串求并集
- send message
- 【位运算经典应用】 标志位与掩码
- Mybatis源码阅读StatementHandler
- qt访问oracle速度慢
- Hive支持的文件格式与压缩算法(1.2.1)
- hdu5036(bitset求并集)
- 为RecyclerView打造通用Adapter
- 我为什么选择Angular 2?
- maven打包配置resources
- char* char[] char** char*[] char[][]详解
- 继续学习数据库
- Android视频录制命令screenrecord
- 【Android测试】之LogCat命令行(一)
- C++/clr(Mixed managed dll) 编程遇到的问题