HDU 3001 Travelling
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相关推荐
- HDU 3001 Travelling (三进制状压dp)
题意 n(n<=10)n(n个城市,知道每个城市间的旅行费用,但每个城市最多走两遍.问最小花费是多少 . 也就是每个城市可以走两次的tsp问题. 分析 最多走两次,三进制0 1 2可满足,即用三 ...
- HDU 3001 三进制状压DP
HDU 3001 三进制状压DP N个城市,M条道路,每条道路有其经过的代价,每一个城市最多能够到达两次,求走全然部城市最小代价,起点随意. 三进制状压.存储每一个状态下每一个城市经过的次数. 转移方 ...
- hdu 3001 tsp问题/三进制
题意:变形tsp 必须搞成三进制 #include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a; ...
- kuangbin带你飞专题合集
题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...
- 算法学习经典例题整理
陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...
- [置顶] 状态压缩DP 简单入门题 11题
1.每一行用一个二进制数表示, 有些二进制数是题目中不合法的状态,我们可以预处理出一行合法状态的个数,在递推的过程中复杂度就会大大降低. POJ 3254 Corn Fields ...
- kuangbin带你飞 专题1-23 题单
kuangbin大神,对于打过ACM比赛的ACMer,无人不知无人不晓. 在此,附上vjudge平台上一位大神整理的[kuangbin带你飞]专题目录链接. [kuangbin带你飞专题目录1-23] ...
- 老鱼的-kuangbin专题题解
kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Flipt ...
- 搜索专题(不定期更新)
1.POJ 2386 Lake Counting 题意:给出一块区域,询问有多少个湖泊? 思路:DFS,对于'W',深搜一次,并标记已访问.之后每次对未访问的'W'做一次深搜. 1 #include ...
最新文章
- java session验证码_利用session实现一次性验证码
- linux里打包和压缩文件,linux ---打包和压缩文件
- python和c++哪个好学-你应该学Python还是C++
- 读书笔记 - 企业精简架构
- JavaScript中数组使用总结
- 笔记-项目立项管理-项目建议书
- MongoDB Hot Backup 测试及痛点
- Partition--分区总结
- 组装自己的tesla超级计算机
- c语言可以利用数组处理批量数据库,C语言程序设计 利用数组处理批量数据.ppt...
- 全网最好用的VS Code插件推荐
- 织梦友情链接html,总结dedecms怎么调用友情链接的方法[全]
- python中unicode编码表_python unicode 编码整理
- Java去除使用富文本编辑器时自动生成的标签
- steam加速_Steam玩家试用追梦加速器后,怎么说?
- 杰理之ANC降噪【篇】
- 九种电脑变慢的常见症状、原因、以及解决办法。
- 2022南京商业贷款提前还款
- app中跳转到手机浏览器,部分手机白屏解决(Vue)
- 南京申瓯SOC1000-UC IPPBX为中小企业提供电话系统解决方案
热门文章
- PPT 下载 | 神策数据徐美玲:如何挖好数据这座矿?
- 只因这个模型,它 1 年增长 44%,收入达 2.15 亿美元
- 神策数据荣获 2017 年度商业影响力大数据领域新锐企业 TOP 10
- 模型剖析 | 如何解决业务运维的四大难题?
- Nutanix 将社区版代码带入云中
- jboss\server\default\.\tmp 拒绝访问 axis2
- Object.wait()与Object.notify()的用法
- Tar打包、压缩与解压缩到指定目录的方法
- 让XP恢复文件权限功能
- if you canget up early