HDU 1224 Free DIY Tour (DP again!)
2012-07-08 00:17
363 查看
有N个城市,从某城市出发到到终点城市,每次经过一个城市都会得一定的分数,但不是每个城市间都是连通的,图中无环路,并且单向。问怎样走得分最高。
DFS应该也可以做,不过看起来用DP思路更简单些,依次对每个城市求最大值,只要把该城市的分数加上能够到达该城市的其他城市的分数相加,并记录路线即可。
DFS应该也可以做,不过看起来用DP思路更简单些,依次对每个城市求最大值,只要把该城市的分数加上能够到达该城市的其他城市的分数相加,并记录路线即可。
#include<iostream> #include<vector> using namespace std; struct { int point; int prev_node; } dp[110]; bool map[110][110]; int point[110]; int main(){ int T, caseNo = 0; cin >> T; while(T--){ int N; cin >> N; for(int i = 1; i < N + 1; i++){ cin >> point[i]; } point[N + 1] = 0; for(int i = 1; i < N + 2; i++) for(int j = 1; j < N + 2; j++) map[i][j] = false; int M; cin >> M; for(int i = 0; i < M; i++){ int x, y; cin >> x >> y; map[x][y] = true; } dp[1].point = 0; for(int i = 2; i < N + 2; i++){ int MAX = -1; int maxPos; for(int j = 1; j < i; j++) if(map[j][i]){ if(MAX < dp[j].point){ MAX = dp[j].point; maxPos = j; } } if(MAX != -1){ dp[i].point = dp[maxPos].point + point[i]; dp[i].prev_node = maxPos; }else{ dp[i].point = -1; dp[i].prev_node = -1; } } vector<int> result; result.push_back(1); int i = N + 1; while(i != 1){ int temp = dp[i].prev_node; result.push_back(temp); i = temp; } cout << "CASE " << ++caseNo << "#" << endl; cout << "points : " << dp[N + 1].point << endl; cout << "circuit : "; for(int i = result.size() - 1; i >= 1; i--) cout << result[i] << "->"; cout << 1 << endl; if(T != 0) cout << endl; } }
相关文章推荐
- HDU 1224 Free DIY Tour(DP)
- hdu 1224 Free DIY Tour(dp)
- HDU 1224 Free DIY Tour(简单dp?+记录路径)
- hdu 1224 Free DIY Tour(最长路/dp)
- HDU 1224 Free DIY Tour 简单DP
- hdu 1224 Free DIY Tour(最长的公路/dp)
- HDU 1224 Free DIY Tour(DP求最短路)
- HDU 1224 Free DIY Tour--DP--(bug集锦)
- HDU 1224 Free DIY Tour(DP)
- hdu 1224 Free DIY Tour(DP多阶段决策)
- hdu 1224 Free DIY Tour(DP多阶段决策)
- hdu1224 Free DIY Tour--DP
- HDU 1224 Free DIY Tour——DP
- 【数塔DP|最长路】HDU-1224 Free DIY Tour
- hdu 1224 Free DIY Tour(dp)
- hdu1224 Free DIY Tour 动态规划
- HDU1224 Free DIY Tour(最短路变形,最长路打印路径,spfa)
- HDU - 1224 Free DIY Tour 【DAG求最长路】
- HDU 1224 Free DIY Tour
- hdu 1224【Free DIY Tour】