【codevs2800】送外卖,状态压缩DP练习
来源:互联网 发布:迈克尔芬利数据 编辑:程序博客网 时间:2024/05/08 17:03
传送门
写在前面:困=_=
思路:
f[i][j]指状态为i时最后经过的城市为j,那么转移就比较明显了
要求j在状态i中表示为1
初始化就是
dis数组预处理用floyed即可
注意:
1.算好范围,小心数组越界
2.最后还是要回到0城市的,所以答案是
代码:
#include<bits/stdc++.h>using namespace std;int a[16][16],dis[16][16],f[1<<16][16];int n,ans=0x7fffffff;main(){ scanf("%d",&n); for (int i=0;i<=n;i++) for (int j=0;j<=n;j++)scanf("%d",&dis[i][j]); for (int i=0;i<=n;i++) for (int j=0;j<=n;j++) for (int k=0;k<=n;k++) if (i!=j&&j!=k) dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); memset(f,63,sizeof(f)); f[1][0]=0; for (int i=1;i<=(1<<n+1)-1;i++) for (int j=0;j<=n;j++) if ((1<<j)&i) { for (int p=0;p<=n;p++) if (p!=j) f[i|(1<<p)][p]=min(f[i|(1<<p)][p],f[i][j]+dis[j][p]); } for (int i=1;i<=n;i++) ans=min(ans,f[(1<<n+1)-1][i]+dis[i][0]); printf("%d",ans);}
0 1
- 【codevs2800】送外卖,状态压缩DP练习
- 【codevs2800】送外卖 floyd+状压DP
- [CODEVS2800]送外卖(状压dp)
- codevs2800送外卖(floyd+状压dp)
- [codevs2800]送外卖(状压dp)
- codevs2800送外卖题解
- Codevs2800 送外卖
- [CodeVS2800] 送外卖
- codevs2800送外卖
- CodeVS2800 送外卖
- Codevs_P2800 送外卖(状态压缩DP+Floyd)
- Codevs_P2800 送外卖(状态压缩DP+Floyd)
- CODEVS_2800 送外卖 状态压缩+动态规划
- wikioi2800 送外卖 dp+floyd
- 状态压缩dp
- pku1038状态压缩dp
- 状态压缩DP 入门
- HDU1074 状态压缩DP
- css层模型初理解
- 自动加载
- 一张照片让你的安卓手机崩溃
- springmvc对静态资源的访问
- 学习小结(上册第四章)
- 【codevs2800】送外卖,状态压缩DP练习
- 腾讯产品三大核心方法论
- const关键字
- 手把手教android studio中安装Android Butterknife Zelezny
- 9. Delete Node in a Linked List
- iOS通过宏定义来创建单例
- 程序已经执行完毕,返回JSP页面报错 Servlet.service() for servlet jsp threw exception
- TCP协议的滑动窗口协议
- 涉笔节点