博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU5036 Explosion(期望 bitset)
阅读量:4587 次
发布时间: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

你可能感兴趣的文章
Java设计模式
查看>>
mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
查看>>
基本概念复习
查看>>
红黑树
查看>>
【数据库】
查看>>
WindowManager.LayoutParams 详解
查看>>
安卓中数据库的搭建与使用
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
sql 内联,左联,右联,全联
查看>>
C++关于字符串的处理
查看>>
Breaking parallel loops in .NET C# using the Stop method z
查看>>
[轉]redis;mongodb;memcache三者的性能比較
查看>>
让你的WPF程序在Win7下呈现Win8风格主题
查看>>
构建Docker Compose服务堆栈
查看>>
浮点数内存如何存储的
查看>>
JsonCpp 的使用
查看>>
问题账户需求分析
查看>>
hp 服务器通过串口重定向功能的使用
查看>>
此博客不再发表对自己私事的看法
查看>>
导致Asp.Net站点重启的10个原因
查看>>