http://acm.hdu.edu.cn/showproblem.php?pid=3001     

题意:小明想去n个城市游玩,m条路,从一个城市到达另一个城市有一定的花费,每个城市最多可以走两次

求最少的花费

题解:因为每个城市最多走两次,可以用三进制,保存状态,感觉同二进制没区别,不过想了半天没想通,

看了一下题解,懂了。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define M 60000
#define INF 0x3f3f3f3f
int s[12];
int t[M][12],map[12][12];
int n,m;
int dp[M][12];
void init(){s[0] = 1;for(int i = 1;i <= 11;i++){s[i] = s[i-1] * 3 ;}for(int i = 0;i < 59049;i++){int tmp = i;for(int j = 0;j < 10;j++){t[i][j] = tmp % 3;tmp /= 3;}}
}int main(){init();int u,v,w;while(cin >> n >> m){memset(map,INF,sizeof(map));for(int i = 0;i < m;i++){cin >> u >> v >> w ;u -- ; v --;map[u][v] = map[v][u] = min(map[u][v],w);}memset(dp,INF,sizeof(dp));for(int i = 0;i < n;i++)dp[s[i]][i] = 0; //初始化第i个状态只有1个城市花费为0int ans = INF;for(int i = 0;i < s[n];i++){bool flag = true ;//如果城市都被走过for(int j = 0;j < n;j++){if(!t[i][j]) flag = false;if(dp[i][j] != INF){for(int k = 0;k < n;k++){if(k == j || t[i][k] == 2 || map[j][k] == INF) continue;dp[i+s[k]][k] = min(dp[i+s[k]][k],dp[i][j] + map[j][k]);}}}if(flag) {for(int l = 0;l < n;l++){ans = min(ans,dp[i][l]);}}}if(ans == INF) cout << "-1" << endl;else cout << ans << endl;}
}

HDU 3001 Travelling相关推荐

  1. HDU 3001 Travelling (三进制状压dp)

    题意 n(n<=10)n(n个城市,知道每个城市间的旅行费用,但每个城市最多走两遍.问最小花费是多少 . 也就是每个城市可以走两次的tsp问题. 分析 最多走两次,三进制0 1 2可满足,即用三 ...

  2. HDU 3001 三进制状压DP

    HDU 3001 三进制状压DP N个城市,M条道路,每条道路有其经过的代价,每一个城市最多能够到达两次,求走全然部城市最小代价,起点随意. 三进制状压.存储每一个状态下每一个城市经过的次数. 转移方 ...

  3. hdu 3001 tsp问题/三进制

    题意:变形tsp 必须搞成三进制 #include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a; ...

  4. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  5. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

  6. [置顶] 状态压缩DP 简单入门题 11题

    1.每一行用一个二进制数表示, 有些二进制数是题目中不合法的状态,我们可以预处理出一行合法状态的个数,在递推的过程中复杂度就会大大降低. POJ 3254        Corn Fields     ...

  7. kuangbin带你飞 专题1-23 题单

    kuangbin大神,对于打过ACM比赛的ACMer,无人不知无人不晓. 在此,附上vjudge平台上一位大神整理的[kuangbin带你飞]专题目录链接. [kuangbin带你飞专题目录1-23] ...

  8. 老鱼的-kuangbin专题题解

    kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Flipt ...

  9. 搜索专题(不定期更新)

    1.POJ 2386  Lake Counting 题意:给出一块区域,询问有多少个湖泊? 思路:DFS,对于'W',深搜一次,并标记已访问.之后每次对未访问的'W'做一次深搜. 1 #include ...

最新文章

  1. java session验证码_利用session实现一次性验证码
  2. linux里打包和压缩文件,linux ---打包和压缩文件
  3. python和c++哪个好学-你应该学Python还是C++
  4. 读书笔记 - 企业精简架构
  5. JavaScript中数组使用总结
  6. 笔记-项目立项管理-项目建议书
  7. MongoDB Hot Backup 测试及痛点
  8. Partition--分区总结
  9. 组装自己的tesla超级计算机
  10. c语言可以利用数组处理批量数据库,C语言程序设计 利用数组处理批量数据.ppt...
  11. 全网最好用的VS Code插件推荐
  12. 织梦友情链接html,总结dedecms怎么调用友情链接的方法[全]
  13. python中unicode编码表_python unicode 编码整理
  14. Java去除使用富文本编辑器时自动生成的标签
  15. steam加速_Steam玩家试用追梦加速器后,怎么说?
  16. 杰理之ANC降噪【篇】
  17. 九种电脑变慢的常见症状、原因、以及解决办法。
  18. 2022南京商业贷款提前还款
  19. app中跳转到手机浏览器,部分手机白屏解决(Vue)
  20. 南京申瓯SOC1000-UC IPPBX为中小企业提供电话系统解决方案

热门文章

  1. PPT 下载 | 神策数据徐美玲:如何挖好数据这座矿?
  2. 只因这个模型,它 1 年增长 44%,收入达 2.15 亿美元
  3. 神策数据荣获 2017 年度商业影响力大数据领域新锐企业 TOP 10
  4. 模型剖析 | 如何解决业务运维的四大难题?
  5. Nutanix 将社区版代码带入云中
  6. jboss\server\default\.\tmp 拒绝访问 axis2
  7. Object.wait()与Object.notify()的用法
  8. Tar打包、压缩与解压缩到指定目录的方法
  9. 让XP恢复文件权限功能
  10. if you canget up early