博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj3311(状压dp)
阅读量:6614 次
发布时间:2019-06-24

本文共 973 字,大约阅读时间需要 3 分钟。

 

题目连接:

题意:一个送披萨的,每次送外卖不超过10个地方,给你这些地方之间的时间,求送完外卖回到店里的总时间最小。

分析:跑一遍Floyd求出两两之间的最短距离,然后就是一个裸TSP问题了。

dp[state][i]表示在state状态下(state的二进制1表示经过的点)当前处于i点的的最少时间。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define mod 100000000#define inf 0x3f3f3f3f#define eps 1e-9#define N 100010#define FILL(a,b) (memset(a,b,sizeof(a)))#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;int dis[20][20],n;int dp[1200][15];void floyd(){ 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];}int main(){ while(scanf("%d",&n)&&n) { for(int i=0;i<=n;i++) for(int j=0;j<=n;j++) scanf("%d",&dis[i][j]); floyd(); for(int s=0;s<(1<
View Code

 

转载于:https://www.cnblogs.com/lienus/p/4270895.html

你可能感兴趣的文章
计算机科学,大一学生怎样来爱你(文&PPT)
查看>>
linux中vmstat命令详解
查看>>
PHP 开发社区微信服务号实战图解
查看>>
Exchange Server 2013 系列八:邮箱服务器角色DAG实战
查看>>
php使用curl下载指定大小的文件
查看>>
VS2013创建Node.js C++ Addons的过程
查看>>
amaze ui中的icon button
查看>>
tcp 三次握手
查看>>
XML中添加换行符
查看>>
JVM内存配置
查看>>
实战-JavaWweb的Servlet和Filter运行关系(四)
查看>>
rsync与FTP(vsftpd)在不同工作场景中的应用
查看>>
会话层数据交换过程示例
查看>>
中国超级计算机扩大领先优势:TOP500总量首次超越美国
查看>>
cocos2d-x学习笔记10:动作3:补间动作
查看>>
SharePoint 2010 新体验4 - SharePoint Workspace
查看>>
一种特殊的数据库性能测试方法
查看>>
C/C++程序员应聘常见面试题深入剖析(1)
查看>>
SQL2K数据库开发十二之表操作创建CHECK约束
查看>>
java运行原理以及环境变量的配置
查看>>