博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3001 Travelling
阅读量:5082 次
发布时间:2019-06-13

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

题意:

有n个城市,一个人选择一个城市开始,游历其它城市,但是他不能到一个城市超过两次。

问是否能游历完这些城市,以及最少的花费。

思路:

一直读错题意,觉得是二进制状压,囧。

不超过两次,那么就是3进制状态压缩,预先把3的进制预处理出来,之后按照二进制同样的处理方法就行了。

还要先把某个数的3进制表示的第几位为0,1,2给预处理出来。

转移方程:

dp[S+p3[k]][k] = min(dp[S+p3[k][k],dp[S][j] + mp[j][k]),S的第k位小于2才能转移。

代码:

1 #include 
2 #include
3 #include
4 using namespace std; 5 const int inf = 0x3f3f3f3f; 6 const int N = 11; 7 int dp[100000][N]; 8 int mp[N][N]; 9 int p3[N];10 int num[100000][N];11 int main()12 {13 int n,m;14 p3[0] = 1;15 for (int i = 1;i <= 10;i++) p3[i] = p3[i-1]*3;16 for (int i = 0;i < p3[10];i++)17 {18 int tmp = i;19 int cnt = 0;20 while (tmp)21 {22 num[i][cnt++] = tmp % 3;23 tmp /= 3;24 }25 }26 while (scanf("%d%d",&n,&m)!=EOF)27 {28 memset(mp,inf,sizeof(mp));29 memset(dp,inf,sizeof(dp));30 for (int i = 0;i < m;i++)31 {32 int a,b,c;33 scanf("%d%d%d",&a,&b,&c);34 a--,b--;35 mp[a][b] = mp[b][a] = min(mp[a][b],c);36 }37 for (int i = 0;i < n;i++)38 {39 dp[p3[i]][i] = 0;40 }41 for (int i = 0;i < p3[n];i++)42 {43 for (int j = 0;j < n;j++)44 {45 if (dp[i][j] < inf && num[i][j] != 0)46 {47 for (int k = 0;k < n;k++)48 {49 if (num[i][k] < 2 && mp[j][k] < inf)50 {51 //printf("gg");52 dp[i+p3[k]][k] = min(dp[i+p3[k]][k],dp[i][j] + mp[j][k]);53 }54 }55 }56 }57 }58 int ans = inf;59 for (int i=0;i < p3[n];i++)60 {61 int cnt = 0;62 for (int j = 0;j < n;j++) if (num[i][j]) cnt++;63 if (cnt == n)64 {65 for (int j = 0;j < n;j++) ans = min(ans,dp[i][j]);66 }67 }68 printf("%d\n",ans == inf ? -1 : ans);69 }70 return 0;71 }

 

转载于:https://www.cnblogs.com/kickit/p/8860092.html

你可能感兴趣的文章
solr后台操作Documents之增删改查
查看>>
http://yusi123.com/
查看>>
文件文本的操作
查看>>
Ubuntu linux下gcc版本切换
查看>>
记一次Web服务的性能调优
查看>>
jQuery.form.js使用
查看>>
(转)linux sort,uniq,cut,wc命令详解
查看>>
关于ExecuteNonQuery执行的返回值(SQL语句、存储过程)
查看>>
UVa540 Team Queue(队列queue)
查看>>
mysql数据增删改查
查看>>
shell中下载最新版本或指定版本的办法(Dockerfile 中通用)
查看>>
极客时间-左耳听风-程序员攻略-分布式架构工程设计
查看>>
akka之种子节点
查看>>
不知道做什么时
查看>>
matlab 给某一列乘上一个系数
查看>>
密码学笔记——培根密码
查看>>
Screening technology proved cost effective deal
查看>>
MAC 上升级python为最新版本
查看>>
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>