[poj3311]Hie with the Pie(Floyd+状态压缩DP)
题意:tsp问题,经过图中所有的点并回到原点的最短距离。
解题关键:floyd+状态压缩dp,注意floyd时k必须在最外层
转移方程:$dp[S][i] = \min (dp[S \wedge (1 < < (i - 1))][k] + dis[k][j],dp[S][i])$
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#define inf 100000000
using namespace std;
int dis[][];
int dp[<<][];
int n,ans;
int main(){
while(scanf("%d",&n)&&n){
for(int i=;i<=n;i++)for(int j=;j<=n;j++)scanf("%d",&dis[i][j]);
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]);
for(int S=;S<=(<<n)-;S++)
for(int i=;i<=n;i++){
if(S&(<<(i-)))//状态S中已经过城市i
{
if(S==(<<(i-))) dp[S][i]=dis[][i];
else{
dp[S][i]=inf;
for(int j=;j<=n;j++){
if(S&(<<(j-))&&i!=j)//枚举不是城市I的其他城市
dp[S][i]=min(dp[S^(<<(i-))][j]+dis[j][i],dp[S][i]);
}
}
}
}
int ans=inf;
for(int i=;i<=n;i++){
ans=min(ans,dp[(<<n)-][i]+dis[i][]);
}
printf("%d\n",ans);
}
return ;
}
改进了一下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#define inf 100000000
using namespace std;
int dis[][];
int dp[<<][];
int n,ans;
int main(){
while(scanf("%d",&n)&&n){
for(int i=;i<=n;i++)for(int j=;j<=n;j++)scanf("%d",&dis[i][j]);
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]);
for(int S=;S<=(<<(n+))-;S++)
for(int i=;i<=n;i++)
if(S&(<<i))//状态S中已经过城市i
{
if(S==(<<i)) dp[S][i]=dis[][i];
else{
dp[S][i]=inf;
for(int j=;j<=n;j++){
if(S&(<<j)&&i!=j)//枚举不是城市I的其他城市
dp[S][i]=min(dp[S^(<<i)][j]+dis[j][i],dp[S][i]);
}
}
}
printf("%d\n",dp[(<<(n+))-][]);
}
return ;
}
[poj3311]Hie with the Pie(Floyd+状态压缩DP)的更多相关文章
- POJ 3311 Hie with the Pie(Floyd+状态压缩DP)
题是看了这位的博客之后理解的,只不过我是又加了点简单的注释. 链接:http://blog.csdn.net/chinaczy/article/details/5890768 我还加了一些注释代码,对 ...
- poj 3311 Hie with the Pie(状态压缩dp)
Description The Pizazz Pizzeria prides itself or more (up to ) orders to be processed before he star ...
- POJ3311 Hie with the Pie 【状压dp/TSP问题】
题目链接:http://poj.org/problem?id=3311 Hie with the Pie Time Limit: 2000MS Memory Limit: 65536K Total ...
- POJ 3311 Hie with the Pie floyd+状压DP
链接:http://poj.org/problem?id=3311 题意:有N个地点和一个出发点(N<=10),给出全部地点两两之间的距离,问从出发点出发,走遍全部地点再回到出发点的最短距离是多 ...
- HDU 5418 Victor and World (Floyd + 状态压缩DP)
题目大意:从起点 1 开始走遍所有的点,回到起点 1 ,求出所走的最短长度. 思路:首先利用 Floyed 求出任意两点之间的最短距离 dis[i][j].求出任意两点之间的最短距离后,运用动态规划. ...
- TZOJ 1937 Hie with the Pie(floyd+状压dp)
描述 The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as possible. Unfo ...
- POJ3311 Hie with the Pie(状压DP,Tsp)
本题是经典的Tsp问题的变形,Tsp问题就是要求从起点出发经过每个节点一次再回到起点的距离最小值,本题的区别就是可以经过一个节点不止一次,那么先预处理出任意两点之间的最短距离就行了,因为再多走只会浪费 ...
- poj 3311(floyd+状态压缩)
题目链接:http://poj.org/problem?id=3311 思路:Floyd + 状态压缩DP 题意是有N个城市(1~N)和一个PIZZA店(0),要求一条回路,从0出发,又回到0,而且 ...
- POJ 3311 Hie with the Pie(状压DP + Floyd)
题目链接:http://poj.org/problem?id=3311 Description The Pizazz Pizzeria prides itself in delivering pizz ...
随机推荐
- Linux基础系列:常用命令(5)_samba服务与nginx服务
作业一:部署samba 每个用户有自己的目录,可以浏览内容,也可以删除 所有的用户共享一个目录,只能浏览内容,不能删 安装samba服务 1.准备环境 setenforce 0 2.安装软件包 yum ...
- 关于tomcate跨域配置的配置问题和表头加入新属性的过滤
1 .在项目中常常遇到本地访问服务器上的链接数据访问不到,并出现如下问题: 这是因为tomcate 的配置中过滤了请求方式, 解决方案: 1.在tomcate中引入两个jar包:java-proper ...
- 20145239 GDB调试汇编堆栈过程分析
20145239 GDB调试汇编堆栈过程分析 测试源代码 #include<stdio.h> ; ; ; static int g(int x) { return x + addend1; ...
- Vim 分隔窗口
一,分隔窗口: 打开文件时在:命令模型时下面输入:split 将分隔为上下2个窗口:默认上窗口为活动窗口,可以通过CTRL-w来来回切换窗口; :close 为关闭窗口,最后一个窗口不能关闭: :on ...
- 修改SecureCRT终端的Home和End功能键
SecureCRT真是个不错的ssh客户端工具,但在使用时发现跟自己的一些使用习惯不符合,例如home.end.pageup.pagedown和delete等键.默认情况下一些按键的功能如下:page ...
- 分享一个关于R语言黄皮书的网站!
这个网站上有许多关于R语言黄皮书的系列书籍,而且都是免费的望珍惜 http://bbs.pinggu.org/thread-870446-1-1.html
- QuickReport FastReport
一.QuickReport1.安装Component->Install packages->X:/Program Files/Borland/Delphi7/Bin/dclqrt70.bp ...
- 分享知识-快乐自己:虚拟机 NET 网络配置
第一步: 第二步: 第三步: 第四步: 第五步: 第六步: 第七步: 第九步: 第十步: 第十一步: 第十二步: 第十三步: 成功. 第十四步:开启开机自启动网路连接 cd /etc/sy ...
- Python中深拷贝与浅拷贝区别
浅拷贝, list值是可变的,str值不可变,只能重新赋值 a=b=c='wjx'print(a,b,c)c= 'jmy'#重新赋值了,所以内存分配了新的地址print(a,b,c)print(id( ...
- centos下安装Mysql5.7.20
0.环境 本文操作系统: CentOS 7.2.1511 x86_64MySQL 版本: 5.7.16 1.卸载系统自带的 mariadb-lib [root@centos-linux ~]# rpm ...