博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU5036 Explosion(期望 bitset)
阅读量:4584 次
发布时间:2019-06-09

本文共 1099 字,大约阅读时间需要 3 分钟。

题意

Sol

和cf上的一道题几乎一摸一样

首先根据期望的线性性,可以转化为求每个点的期望打开次数,又因为每个点最多会被打开一次,只要算每个点被打开的概率就行了

\(anc[i]\)表示\(i\)的反图中能到达的点集大小,答案等于\(\sum_{i = 1}^n \frac{1}{anc[i]}\)(也就是要保证是第一个被选的)

#include
using namespace std;const int MAXN = 1001;inline int read() { char c = getchar(); int x = 0, f = 1; while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();} while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x * f;}int N;bitset
f[MAXN], Empty;double solve() { N = read(); for(int i = 1; i <= N; i++) f[i] = Empty; for(int i = 1; i <= N; i++) { int k = read(); f[i].set(i); for(int j = 1; j <= k; j++) { int v = read(); f[v].set(i); } } for(int k = 1; k <= N; k++) for(int i = 1; i <= N; i++) if(f[i][k]) f[i] = f[i] | f[k]; double ans = 0; for(int i = 1; i <= N; i++) ans += 1.0 / f[i].count(); return ans;}int main() { int T = read(); for(int i = 1; i <= T; i++) printf("Case #%d: %.5lf\n", i, solve()); return 0;}

转载于:https://www.cnblogs.com/zwfymqz/p/10275673.html

你可能感兴趣的文章
网络编程协议
查看>>
5.9
查看>>
备份项目实例
查看>>
8天学通MongoDB——第二天 细说增删查改
查看>>
TextBloc研究
查看>>
Engine auto idle help conserve fuel reduce noise
查看>>
MAC下安装pomelo
查看>>
182. Duplicate Emails
查看>>
Redis、Memcache和MongoDB的区别
查看>>
设计模式笔记 ------ 原型模式
查看>>
通过Repeater控件绑定数据,相同数据合并单元格。
查看>>
h5 和之前版本的区别
查看>>
【UVAlive 3989】 Ladies' Choice (稳定婚姻问题)
查看>>
【FFT&NTT 总结】
查看>>
洛谷——P1802 5倍经验日
查看>>
leetcode121—Best Time to Buy and Sell Stock
查看>>
【系统优化】为系统提速,何须重装
查看>>
让Chrome 接管邮件连接,收发邮件更方便了
查看>>
cmd 编码 utf8
查看>>
jquery-file-upload demo
查看>>