HDU 5036 Explosion (bitset + DP)
2017-02-02 21:46
316 查看
题意:
给你一张图,每个图都可以到达另一个节点,当然你也可以选择炸开者结点来进入这个图,问你炸开节点的期望次数是多少。
分析:
因为每个点是独立的,我们考虑每一个点的单独的期望,到这个点要炸的次数其实就是到这个点的节点数的倒数,所以我们需要把可以到达每个点的点数处理出来,直接求的话,用floyd来求闭包,复杂度不够,所以用bitset来优化。
代码:
给你一张图,每个图都可以到达另一个节点,当然你也可以选择炸开者结点来进入这个图,问你炸开节点的期望次数是多少。
分析:
因为每个点是独立的,我们考虑每一个点的单独的期望,到这个点要炸的次数其实就是到这个点的节点数的倒数,所以我们需要把可以到达每个点的点数处理出来,直接求的话,用floyd来求闭包,复杂度不够,所以用bitset来优化。
代码:
// // Created by CQU_CST_WuErli // Copyright (c) 2016 CQU_CST_WuErli. All rights reserved. // //#pragma comment(linker, "/STACK:102400000,102400000") #include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> #include <cctype> #include <cmath> #include <string> #include <vector> #include <map> #include <queue> #include <stack> #include <set> #include <algorithm> #include <sstream> #include <bitset> #define CLR(x) memset(x,0,sizeof(x)) #define OFF(x) memset(x,-1,sizeof(x)) #define MEM(x,a) memset((x),(a),sizeof(x)) #define BUG cout << "I am here" << endl #define lookln(x) cout << #x << "=" << x << endl #define SI(a) scanf("%d", &a) #define SII(a,b) scanf("%d%d", &a, &b) #define SIII(a,b,c) scanf("%d%d%d", &a, &b, &c) const int INF_INT=0x3f3f3f3f; const long long INF_LL=0x7f7f7f7f; const int MOD=1e9+7; const double eps=1e-10; const double pi=acos(-1); typedef long long ll; using namespace std; const int N = 1010; int n; bitset<N> bit ; int main(int argc, char const *argv[]) { #ifdef LOCAL freopen("C:\\Users\\john\\Desktop\\in.txt","r",stdin); // freopen("C:\\Users\\john\\Desktop\\out.txt","w",stdout); #endif for (int T_T, kase = SI(T_T); kase <= T_T; kase++) { SI(n); for (int i = 1; i <= n; i++) bit[i].reset(); for (int i = 1; i <= n; i++) { int x; SI(x); bit[i].set(i); while (x--) { int pos; SI(pos); bit[i].set(pos); } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) if (bit[j][i]) { bit[j] |= bit[i]; } } double ans = 0.0; for (int i = 1; i <= n; i++) { double tmp = 0.0; for (int j = 1; j <= n; j++) if (bit[j][i]) tmp += 1.0; ans += 1.0 / tmp; } printf("Case #%d: %.5f\n", kase, ans); } return 0; }
相关文章推荐
- hdu5890 bitset优化DP
- 【HDU5808 BestCoder Round 86E】【时间排序 树状数组计数 bitsetDP 或分治】Price List Strike Back 距离范围、区间范围商店购物 使得价值和恰为m
- dp+bitset优化______La Vie en rose( hdu 5745 2016多校第二场)
- 牛客练习赛22-C-dp+bitset
- HDU 5890 Eighty seven(bitset优化dp)
- codeforces 788C The Great Mixing( BFS / dp+bitset优化 )
- 【动态规划23】hdu5036 Explosion(bitset优化)
- [bzoj 3687] 简单题:bitset,DP
- 【DP】【bitset】17.6.4 均分 题解
- [HDOJ5890]Eighty seven(暴力,dp,bitset)
- hdu_5890_Eighty seven(bitset优化DP)
- hdu 5036 Explosion(有向图的删点期望+bitset优化)
- hdu 5036 Explosion(bitset处理概率)
- hdu5313Bipartite Graph(二分图染色+DP(bitset优化))
- BZOJ 3687 简单题【dp,bitset基础应用
- 2015 Multi-University Training Contest 10 (hdu 5406-5416)数据结构+dp+矩阵快速幂+bitset优化拓扑排序+(dp&树状数组)
- 【hdu5890】【bitset+dp】Eighty seven【每次从序列中删掉第i,j,k个数后,是否存在一种选10个数和为87的方案】
- hdu_5036_Explosion(bitset优化传递闭包)
- ZOJ-3931-Exact Compression【dp】【bitset】【好题】
- [数位DP 高精度 拓扑排序 bitset] BZOJ 2913 [Poi1997]XOR Gates