HDU 5036 Explosion (2014年北京赛区网络赛E题)
2015-09-05 00:24
330 查看
1.题目描述:点击打开链接
2.解题思路:本题利用期望的独立可加性解决,要求所有门都能到达的期望,然而门与门之间的到达是独立的,假如我们有k个门都能到达第u个门,然而每次都是只能选择一个门来到u,那么显然,到达u的期望是1/k,那么怎么才可以快速得到有哪些门可以到达u呢?可以使用STL中的bitset,可以同时对n位进行或运算。这样,最终的时间复杂度就是O(N^2)。
3.代码:
2.解题思路:本题利用期望的独立可加性解决,要求所有门都能到达的期望,然而门与门之间的到达是独立的,假如我们有k个门都能到达第u个门,然而每次都是只能选择一个门来到u,那么显然,到达u的期望是1/k,那么怎么才可以快速得到有哪些门可以到达u呢?可以使用STL中的bitset,可以同时对n位进行或运算。这样,最终的时间复杂度就是O(N^2)。
3.代码:
#include<iostream> #include<algorithm> #include<cassert> #include<string> #include<sstream> #include<set> #include<bitset> #include<vector> #include<stack> #include<map> #include<queue> #include<deque> #include<cstdlib> #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<cctype> #include<complex> #include<functional> #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; #define me(s) memset(s,0,sizeof(s)) #define rep(i,n) for(int i=0;i<(n);i++) typedef long long ll; typedef unsigned int uint; typedef unsigned long long ull; typedef pair <int, int> P; const int N=1005; bitset<N>bs ; int main() { int T; scanf("%d",&T); for(int kase=1;kase<=T;kase++) { int n; scanf("%d",&n); for(int i=0;i<n;i++) { bs[i].reset(); bs[i][i]=1; } int num,v; for(int i=0;i<n;i++) { scanf("%d",&num); while(num--) { scanf("%d",&v);v--; bs[i][v]=1; } } for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(bs[j][i]) bs[j]|=bs[i]; double ans=0; for(int i=0;i<n;i++) { int cnt=0; for(int j=0;j<n;j++) if(bs[j][i])cnt++; ans+=1.0/cnt; } printf("Case #%d: %.5lf\n",kase,ans); } }
相关文章推荐
- hdu 3118 Arbiter 2009武汉网络赛 图论 二分图 状压
- 流量引导:网络世界的负载均衡解密
- 流量引导:网络世界的负载均衡解密
- httpClient 深入浅出~
- 基于C#的socket编程的TCP异步实现
- HDU 5001 Walk(2014年鞍山赛区网络赛E题)
- Socket编程 (异步通讯,解决Tcp粘包)
- java网络编程
- 网络协议基础
- android6.0SDK 删除HttpClient的相关类的解决方法
- HDU 5035 Delivery (2014年北京赛区网络赛D题)
- HDU 5033 Building (2014年北京赛区网络赛B题)
- 椰角网络运营的TuziCMS企业网站管理系统正式上线
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
- Linux分享之iptables:防火墙以及网络协议基本原理
- iOS安全系列之一:HTTPS
- http使用post和get方式提交数据
- OSI七层模型与TCP/IP四层模型
- ios网络:应用一个请求的7个步骤
- Caffe学习:使用pycaffe进行网络训练与测试