题意: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[35];
int cnt;
int num[35];
bool vis[35];int dfs(int u) {int count = 1;vis[u] = 1;for(int i=0;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-9)return f[s];int con = 0;for(int i=0;i<cnt;i++)if(s&(1<<i))con+=num[i];if(con==n)return f[s] = 0;f[s] = (n-1)*1.0/(n-con);for(int i=0;i<cnt;i++) {if(!(s&(1<<i)))f[s] +=dp(s|(1<<i))*num[i]*1.0/(n-con);}return f[s];
}int main()
{int t;scanf("%d",&t);int kase = 0;while(t--) {scanf("%d%d",&n,&m);f.clear();for(int i=0;i<=n;i++)g[i].clear();cnt = 0;memset(vis,0,sizeof(vis));memset(num,0,sizeof(num));int u,v;for(int i=0;i<m;i++) {scanf("%d%d",&u,&v);g[u].push_back(v);g[v].push_back(u);}for(int i=1;i<=n;i++) {if(!vis[i])num[cnt++] = dfs(i);}printf("Case %d: %lf\n",++kase,dp(1));}return 0;
}

View Code

转载于:https://www.cnblogs.com/TreeDream/p/7076631.html

Uva 11600 期望DP相关推荐

  1. 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/ ...

  2. uva 11600 - Masud Rana(记忆化搜索)

    题目链接:uva 11600 - Masud Rana 题目大意:给出n和m,表示说有n座城市,每两座城市间有一条路,每条路上都有怪物,现在有m条路上没有怪物,给出没有怪物的路.现在任选一座城市移过去 ...

  3. luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现) Weblin ...

  4. [SCOI2008]奖励关(期望dp)

    你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...

  5. 【bzoj4318】OSU! 期望dp

    题目描述 osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的0 ...

  6. 【loj6342】跳一跳 期望dp

    题目描述 一个人从 $1$ 开始向 $n$ 跳,在 $i$ 时会等概率跳到 $i,i+1,...,n$ 之一.求从 $1$ 跳到 $n$ 的期望步数. $n\le 10^7$ . 题解 期望dp傻逼题 ...

  7. 【高斯消元】兼 【期望dp】例题

    [总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $           ...

  8. Luogu P3251 [JLOI2012]时间流逝 期望dp

    题面 题面 题解 期望\(dp\)好题! 今年\(ZJOI\)有讲过这题... 首先因为\(T\)只有\(50\),大力\(dfs\)后发现,可能的状态数最多只有\(20w\)左右,所以我们就可以大力 ...

  9. 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra

    题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择 ...

最新文章

  1. 采购订单的审批状态异常的处理,审批状态为:预审批或是处理中的单据
  2. php入门的ppt,php学习 字符串课件
  3. poj 3207 2-sat
  4. window php 安装zip扩展,Windows下安装php_rar 扩展,让php实现rar文件的读取和解压
  5. Cesium Workshop
  6. [Leetcode] single number ii 找单个数
  7. 项目Alpha冲刺(团队)-第九天冲刺
  8. 绝地求生测试服画面优化软件,绝地求生大逃杀优化方法 画面优化工具使用教程_3DM单机...
  9. Animate.css动画库下载、安装、使用与解析
  10. 如何在html中加入字体库,网页中添加特殊字体解决方案
  11. CARLA 笔记(01)— 基本架构、核心模块(Traffic Manager、Sensors、ROS bridge、Scenario runner)、高级功能、生态系统
  12. linux的ib网卡驱动安装,linux安装IB网卡(mellanox)驱动
  13. 云计算就业前景怎么样 学后可以胜任哪些岗位
  14. 企业微信需不需要养号
  15. java微服务项目简历_微服务框架-SpringCloud简介
  16. python中seaborn是什么_Python数据分析之seaborn常用方法
  17. css打造超能陆战队--大白
  18. 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系
  19. 虹膜识别论文5:DeepIrisNet2 2019年 学习心得
  20. Aresio Web 2.0网页UI图标素材分享下载[微盘地址]

热门文章

  1. 如何压测基于容器服务ACK托管的DUBBO服务
  2. 基于多任务学习和负反馈的深度召回模型
  3. RPG+模拟经营,《喧嚣的城堡》如何做闭环设计?
  4. Cocos 技术派:实时竞技小游戏技术实现分享
  5. ADAMoracle预言机的发展趋势和特点
  6. 华为史上最大规模升级!鸿蒙系统进度发布:近百款机型已适配
  7. ASP.NET MVC (四、ASP.NET Web API应用程序与跨域操作)
  8. 超全干货 | 软件测试岗技术笔试
  9. 使用TCP可靠吗?为什么可靠?
  10. 在linux下安装db2全过程