codevs 2800 送外卖 floyd + Tsp
简单的状压动归
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=17;
const long long INF=10000000+233;
long long dp[1<<N][N],dis[N][N];
int times(int s){
int cnt=0;
for(int k=0;(1<<k)<=s;++k)if(s&(1<<k))++cnt;
return cnt;
}
int check(int s,int j)
{
if(s&(1<<(j-1)))return 1;
return 0;
} //s中是否有j
int main()
{
int n;scanf("%d",&n);
for(int i=0;i<=n;++i)
for(int j=0;j<=n;++j)
if(i!=j)dis[i][j]=INF;
for(int i=0;i<=n;++i)
for(int j=0;j<=n;++j)
scanf("%lld",&dis[i][j]);
for(int k=0;k<=n;++k)
for(int i=0;i<=n;++i)
for(int j=0;j<=n;++j)
if(dis[i][j]>dis[i][k]+dis[k][j])dis[i][j]=dis[i][k]+dis[k][j];
for(int S=1;S<(1<<n);++S)
for(int j=1;j<=n;++j)
{
dp[S][j]=INF;
if(check(S,j)==0)continue;
int mx=S^(1<<(j-1));
int cnt=times(mx);
if(cnt==0){dp[S][j]=dis[0][j];continue;} //只有一个元素
for(int k=1;k<=n;++k)
{
if(k==j||check(mx,k)==0)continue;
dp[S][j]=min(dp[S][j],dp[mx][k]+dis[k][j]);
}
}
long long ans=INF;
for(int i=1;i<=n;++i)
ans=min(ans,dp[(1<<n)-1][i]+dis[i][0]);
printf("%lld",ans);
return 0;
}
codevs 2800 送外卖 floyd + Tsp的更多相关文章
- codevs 2800 送外卖 TSP问题
2800 送外卖 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有一个送外卖的,他手上有n份订单,他要把n份 ...
- Codevs 2800 送外卖(状压DP)
2800 送外卖 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有一个送外卖的,他手上有n份订单,他要把n份东西,分别送达n ...
- [codevs 2800]送外卖
题目描述 Description 有一个送外卖的,他手上有n份订单,他要把n份东西,分别送达n个不同的客户的手上.n个不同的客户分别在1~n个编号的城市中.送外卖的从0号城市出发,然后n个城市都要走一 ...
- POJ 3311 Hie with the Pie 兼 Codevs 2800 送外卖(动态规划->TSP问题)
Description The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as possi ...
- codevs 2800 送外卖(状压dp)
/* f[i][j] 表示走过的点构成i状态 且最后到达的点为j时的最优解 在那最后一个状态就是(1<<n+1)-1 每个点都到达 在由此回到0 */ #include<iostre ...
- codevs2800送外卖(floyd+状压dp)
2800 送外卖 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有一个送外卖的,他手上有n份订单,他要把n份东 ...
- 2800 送外卖[状态压缩dp]
2800 送外卖 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 有一个送外卖的,他手上有n份订单,他 ...
- 【wikioi】2800 送外卖(状压dp+floyd)
http://www.wikioi.com/problem/2800/ 本题状压莫名其妙的tle了,(按照hzwer大神打的喂,他1000多ms,我就2000ms了?) (14.8.7更,将getnu ...
- Codeves 2800 送外卖 状态压缩DP+floyd
送外卖 题目描述 Description 有一个送外卖的,他手上有n份订单,他要把n份东西,分别送达n个不同的客户的手上.n个不同的客户分别在1~n个编号的城市中.送外卖的从0号城市出发,然后 ...
随机推荐
- PAT 1088. Rational Arithmetic
For two rational numbers, your task is to implement the basic arithmetics, that is, to calculate the ...
- firebird数据库建模
用ERS数据库建模,真的很方便.可是8.0版本只支持interbase和ib2007.没有建模工具,查找修改数据库等确实是裹足难走.新的建模工具不适应.找来找去,新版10.0出来了.雷锋帮助把使用权也 ...
- 0209利用innobackupex进行简单数据库的备份
利用innobackupex进行简单数据库的备份yum install perl-DBIyum install perl-DBD-MySQLyum install perl-Time-HiResyum ...
- RubyMine中自动完成只输入部分字母
RubyMine中自动完成只输入部分字母 1,有下划线情况(其实看第二点跟下划线就关系不大了) 对于attr_reader之类的输入,输入attr之后,下划线可以不输入,然后输入r或者e都可以出来, ...
- java基础开发—jstl标签库
在DRP项目中.接触到了JSTL标签库. 在未使用Jstl之前,我们使用JSP脚本实现一些声明或是表达式任务,做一些业务相关操作时,须要在页面中嵌入大量的java代码.在DRP项目开发前期.使用jsp ...
- 推断一个点是否在某个区域内。百度,高德,腾讯都能用。(php版)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- Android应用开发-护眼提醒-总结篇
设计初衷: 在学习<第一行代码>的服务那章时,涉及到了alarmmanager的内容.然后笔者当时正好在关注"程序猿怎样保护眼睛"的问题. 于是便自己做了一个demo, ...
- vue+element-ui实现前端分页
按照他的文档来写分页 最主要的是 el-table里面展示的数据怎么处理 <el-table :data="AllCommodityList.slice((currentPage-1 ...
- CTF-Mayday
打开下载的Mayday.txt文件: 温柔 知足突然好想你 拥抱突然好想你 拥抱温柔 知足温柔 知足突然好想你 拥抱突然好想你 拥抱温柔 知足温柔 知足突然好想你 拥抱突然好想你 拥抱温柔 ...
- Redis(三)、Redis主从复制
一.主从复制 主从复制:主节点负责写数据,从节点负责读数据,从而实现读写分离,提高redis的高可用性. 让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主节点(mast ...