Uva 11600 期望DP
题意:n个城市,相互可达(有n(n-1)/2条边),其中有一些道路上面有妖怪,现在,从1号城市出发,随机挑取一个城市走去,这个道路上的妖怪就会被消灭,求:
在平均情况下,需要走多少步,使得任意两个城市之间,可以不经过妖怪而相互可达;
(n<=30)
分析:
1、根据题意可知,我们要将每一个可以不经过妖怪的一个个连通分量找出来;
2、然后从一个连通分量走到另一个连通分量,这时肯定进过妖怪;
3、一个一个连通分量,完成了哪几个连通分量,需要保存,这时,就用集合的方式保存;
4、从一个连通分量,走到另一个连通分量,其概率 n-con/(n-1) ,那么平均要走 n-1 / (n-con) 次;
5、状态转移,下一个状态s|(i<<n),和走向这个状态的概率;
#include <bits/stdc++.h> using namespace std; int n,m;
vector<int> g[];
int cnt;
int num[];
bool vis[]; int dfs(int u) {
int count = ;
vis[u] = ;
for(int i=;i<g[u].size();i++) {
int v = g[u][i];
if(!vis[v])
count+=dfs(v);
}
return count;
} map<int,double> f; double dp(int s) {
if(f[s]>1e-)
return f[s]; int con = ;
for(int i=;i<cnt;i++)
if(s&(<<i))
con+=num[i];
if(con==n)
return f[s] = ; f[s] = (n-)*1.0/(n-con);
for(int i=;i<cnt;i++) {
if(!(s&(<<i)))
f[s] +=dp(s|(<<i))*num[i]*1.0/(n-con);
}
return f[s];
} int main()
{
int t;
scanf("%d",&t);
int kase = ;
while(t--) { scanf("%d%d",&n,&m); f.clear();
for(int i=;i<=n;i++)
g[i].clear();
cnt = ;
memset(vis,,sizeof(vis));
memset(num,,sizeof(num)); int u,v;
for(int i=;i<m;i++) {
scanf("%d%d",&u,&v);
g[u].push_back(v);
g[v].push_back(u);
} for(int i=;i<=n;i++) {
if(!vis[i])
num[cnt++] = dfs(i);
} printf("Case %d: %lf\n",++kase,dp()); }
return ;
}
Uva 11600 期望DP的更多相关文章
- UVa 11762 (期望 DP) Race to 1
设f(x)表示x转移到1需要的次数的期望,p(x)为不超过x的素数的个数,其中能整除x的有g(x)个 则有(1-g(x)/p(x))的概率下一步还是转移到x,剩下的情况各有1/p(x)的概率转移到x/ ...
- UVa 11427 (期望 DP) Expect the Expected
设d(i, j)表示前i局每局获胜的比例均不超过p,且前i局共获胜j局的概率. d(i, j) = d(i-1, j) * (1-p) + d(i-1, j-1) * p 则只玩一天就就不再玩的概率Q ...
- 【BZOJ-1419】Red is good 概率期望DP
1419: Red is good Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 660 Solved: 257[Submit][Status][Di ...
- [NOIP2016]换教室 D1 T3 Floyed+期望DP
[NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...
- HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)
题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...
- 【BZOJ-4008】亚瑟王 概率与期望 + DP
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 832 Solved: 5 ...
- 期望dp BZOJ3450+BZOJ4318
BZOJ3450 概率期望DP f[i]表示到i的期望得分,g[i]表示到i的期望长度. 分三种情况转移: ① s[i]=‘x’:f[i]=f[i-1],g[i]=0 ② s[i]=‘o’:f[i]= ...
- HDU 4405 期望DP
期望DP算是第一题吧...虽然巨水但把思路理理清楚总是好的.. 题意:在一个1×n的格子上掷色子,从0点出发,掷了多少前进几步,同时有些格点直接相连,即若a,b相连,当落到a点时直接飞向b点.求走到n ...
- POJ 2096 【期望DP】
题意: 有n种选择,每种选择对应m种状态.每种选择发生的概率相等,每种选择中对应的每种状态发生的概率相等. 求n种选择和m种状态中每种至少发生一次的期望. 期望DP好别扭啊.要用倒推的方法. dp[i ...
随机推荐
- python练习七十:图片生成
题目:使用python生成类似于下图的字母验证码图片 实现代码: from PIL import Image,ImageFont,ImageDraw,ImageFilter import random ...
- 盒子绝对定位 position:foxed ; 居中
方法1 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 基于云计算的IaaS、PaaS、SaaS三种服务模式的区别
Infrastructure-as-a-Service(IaaS) - 基础即设施服务 基础设施主要包括网络系统(networking).存储设备(storage).服务器(servers).虚拟化技 ...
- js动画实现&&回调地狱&&promise
1. js实现动画 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- Android开发:使用Fragment改造TabActivity
TabActivity在API 13(Android 3.2)被标记为过期,需要使用Fragment来实现,Fragment是Android 3.0引入的一个概念,主要就是为了适应各种不同的屏幕大小( ...
- BNU34058——干了这桶冰红茶!——————【递推】
干了这桶冰红茶! Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class nam ...
- WCF的入门教程dome(一)
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- fabric 自动创建仓库并下载或更新代码
#!/usr/bin/python # -*- coding: utf-8 -* from fabric.api import * from fabric.contrib.files import * ...
- node.js发邮件
在node上使用第三方类库(nodemailer)发邮件是一件很esay的事情:) app.js 以QQ邮箱为例 var nodemailer = require('nodemailer'); v ...
- 初识Socket通信:基于TCP和UDP协议学习网络编程
学习笔记: 1.基于TCP协议的Socket网络编程: (1)Socket类构造方法:在客户端和服务器端建立连接 Socket s = new Socket(hostName,port);以主机名和端 ...