TSP+期望——lightoj1287记忆化搜索,好题!
感觉是很经典的题
记忆化时因为不好直接通过E判断某个状态是否已经求过,所以再加一个vis打标记即可
/*E[S][u]表示从u出发当前状态是S的期望*/
#include<bits/stdc++.h>
using namespace std;
#define N 16
#define INF 0x3f3f3f3f int mp[N][N],n,m;
double E[N][<<N];
bool vis[N][<<N]; bool dfs(int S,int root){//在状态S下,从root点出发
if(S==(<<n)-){E[root][S]=;return ;}
if(vis[root][S])return E[root][S]>;//这个点这个状态已经被访问过
vis[root][S]=;
E[root][S]=; int cnt=,step;
for(int i=;i<n;i++){
if(!(S&(<<i)) && mp[root][i]!=INF && dfs(S|(<<i),i)){//状态集合里没有i,有边,且该边符合条件
step=S|(<<i);
cnt++;
E[root][S]+=mp[root][i]+E[i][step];
}
} if(!cnt){E[root][S]=;return ;}
E[root][S]/=cnt;
return true;
} int main(){
int T;cin>>T;
for(int tt=;tt<=T;tt++){
memset(mp,0x3f,sizeof mp);
memset(vis,,sizeof vis); int u,v,w;
cin>>n>>m;
for(int i=;i<=m;i++){
cin>>u>>v>>w;
mp[u][v]=mp[v][u]=w;
}
dfs(,);
printf("Case %d: %.10lf\n",tt,E[][]);
}
}
TSP+期望——lightoj1287记忆化搜索,好题!的更多相关文章
- 【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索
[题意]给定无向图,聪聪和可可各自位于一点,可可每单位时间随机向周围走一步或停留,聪聪每单位时间追两步(先走),问追到可可的期望时间.n<=1000. [算法]期望DP+记忆化搜索 [题解]首先 ...
- [CH3803] 扑克牌 (期望DP+记忆化搜索)
[题目链接] [CH3803] 扑克牌 [题面描述] \(54\)张牌,每次随机摸一张,求得到 A张黑桃 B张红桃 C张梅花 D张方块 的期望步数.特别地,大王和小王可以当做任意一种花色,当然,会选择 ...
- bzoj 1415: [Noi2005]聪聪和可可 期望dp+记忆化搜索
期望dp水题~ 你发现每一次肯定是贪心走 2 步,(只走一步的话就可能出现环) 然后令 $f[i][j]$ 表示聪在 $i$,可在 $j$,且聪先手两个人碰上面的期望最小次数. 用记忆化搜索转移就行了 ...
- poj1088(记忆化搜索入门题)
题目链接:http://poj.org/problem?id=1088 思路: 明显的记忆化搜索题,用dp[i][j]表示从(i,j)出发能滑的最远距离,用dfs搜索,若dp[x][y]>0即已 ...
- BZOJ1415 [Noi2005]聪聪和可可 【SPFA + 期望dp记忆化搜索】
题目 输入格式 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行 ...
- luogu P4206 [NOI2005]聪聪与可可 期望dp 记忆化搜索
LINK:聪聪与可可 这道题的核心是 想到如何统计答案. 如果设f[i][j]表示第i个时刻... 可以发现还需要统计位置信息 以及上一次到底被抓到没有的东西 不太好做. 两者的位置都在变化 所以需要 ...
- UVA10118(记忆化搜索 + 好题)
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19440 题意,4堆不同颜色的糖果,每堆N个,从堆上往下拿,放入一个最大装5个 ...
- 记忆化搜索模板题---leetcode 1155. 掷骰子的N种方法
1155. 掷骰子的N种方法 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, ..., f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数 ...
- 洛谷4206/NOI2005T4 聪聪和可可 期望DP+记忆化搜索
题意:给出n个点m条边的无向图,两个主角聪聪和可可开始分别在S点和T点.聪聪想吃掉可可,每次由匆匆先行动后来可可行动.聪聪的行动是选他到可可的最短路上的点走最多两步(如果最短路有几条就选编号最小的走) ...
随机推荐
- SPI 及初始化例子
概述 时钟相性与极性 CPOL(Clock Polarity)控制空闲状态时SCK的值:CPOL=0,空闲时SCK=0:CPOL=1,空闲时SCK=1. CPHA(Clock Phase)控制何时捕获 ...
- 剑指offer——29顺时针打印矩阵
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...
- 剑指offer——13矩阵中的路径
题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩阵中 ...
- html清除浮动的6种方法示例
使用display:inline-block会出现的情况: 1.使块元素在一行显示2.使内嵌支持宽高3.换行被解析了4.不设置的时候宽度由内容撑开5.在IE6,7下步支持块标签 由于inline-bl ...
- 【校OJ】选网线
暑假学校OJ上的题目. 一道很有意思的二分. 题意:三个数组,每个数组各选一个数出来看是否能组成目标数. 题解:前两个数组两两的和组合一下,二分第三个数组,找是否能组成目标数. 代码: #includ ...
- 各版本IE兼容问题,IE6,IE7,IE8,IE9,IE10,IE11
在网站开发和学习中,由于各种兼容性问题,让开发者挺烦恼的,我的学员也经常因为兼容问题来找我取经. 事实上,IE给出了解决方案,谷歌给出了解决方案,国内著名网站百度也将这个解决方案应用于IE的兼容性问题 ...
- 在npm中使用bower包依赖工具
什么是bower Bower是一个客户端技术的软件包管理器,它可用于搜索.安装和卸载如JavaScript.HTML.CSS之类的网络资源.其他一些建立在Bower基础之上的开发工具,如YeoMan和 ...
- 归档和解档配合NSFile存储数据
NSString *Name = @"yc"; //第一个常量NSDocumentDirectory表示正在查找沙盒Document目录的路径(如果参数为NSCachesDirec ...
- lds 文件说明
主要符号说明 OUTPUT_FORMAT(bfdname) 指定输出可执行文件格式. OUTPUT_ARCH(bfdname) 指定输出可执行文件所运行 CPU 平台 ENTRY(symbol) 指定 ...
- ASCII part of UTF8
UTF8 所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码. UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1 ...