uva 10131 Is Bigger Smarter?(动态规划:LIS变形+路径打印)
2014-09-05 12:23
429 查看
如果按照w排序,则只需求s的最长下降子序列即可
这道题难点就在于路径打印,但是因为要求打印任意一条
这就好处理多了
注意下细节即可
代码如下:
这道题难点就在于路径打印,但是因为要求打印任意一条
这就好处理多了
注意下细节即可
代码如下:
#include <vector> #include <cstdio> #include <cstring> #include <algorithm> #define MAXN 1010 using namespace std; int dp[MAXN]; vector<int> vec; struct Elepant { int w, s, id; }a[MAXN]; bool cmp(Elepant c, Elepant d) { if(c.w < d.w) { return true; } if(c.w == d.w) return c.s > d.s; return false; } void dfs(int pos) { if(pos < 1) return ; for(int i=pos-1; i>=0; --i) { if(dp[pos] == dp[i]+1 && a[pos].w>a[i].w && a[pos].s<a[i].s) { vec.push_back(a[i].id); dfs(i); break; } } return ; } int main(void) { int cnt = 0; while(scanf("%d%d", &a[cnt].w, &a[cnt].s) != EOF) { a[cnt].id = cnt+1; ++cnt; } a[cnt].id = cnt+1; ++cnt; sort(a, a+cnt, cmp); for(int i=0; i<cnt; ++i) { dp[i] = 1; } for(int i=0; i<cnt; ++i) { for(int j=i+1; j<cnt; ++j) { if(a[j].w>a[i].w && a[j].s<a[i].s) dp[j] = max(dp[j], dp[i]+1); } } /* for(int i=0; i<cnt; ++i) printf("%d\t%d\t%d\n", a[i].w, a[i].s, dp[i]); */ int ans = -1; int pos, res; for(int i=0; i<cnt; ++i) { if(ans <= dp[i]) { ans = dp[i]; pos = i; res = a[i].id; } } printf("%d\n", ans); vec.clear(); vec.push_back(res); dfs(pos); for(int i=vec.size()-1; i>=0; --i) printf("%d\n", vec[i]); return 0; }
相关文章推荐
- Uva 10131 Is Bigger Smarter? (LIS,打印路径)
- Uva 10131 Is Bigger Smarter? (LIS,打印路径)
- uva 10131 Is Bigger Smarter ? (简单dp 最长上升子序列变形 路径输出)
- UVA - 10131 - Is Bigger Smarter? (动态规划,LIS)
- 一中OJ #1457 越大越聪明[Uva 10131 -> Is Bigger Smarter?] | 动态规划 字典序LIS | 解题报告
- UVa 10131 Is Bigger Smarter? (DP&LIS)
- uva 10131 Is Bigger Smarter? dag 最长路 加路径还原
- 【解题报告】uva10131_Is Bigger Smarter?(越大越聪明, dp, LIS)
- UVA 10131 - Is Bigger Smarter
- UVA 10131 - Is Bigger Smarter? (动态规划)
- UVA 10131 - Is Bigger Smarter?
- UVa 10131 - Is Bigger Smarter?
- UVA 10131 Is Bigger Smarter?
- UVa 100131 Is Bigger Smarter(LIS)
- UVA 10131 - Is Bigger Smarter?
- UVA 10131 - Is Bigger Smarter? (动态规划)
- UVa 10131: Is Bigger Smarter?
- UVa 10131 - Is Bigger Smarter?
- UVA 10131 - Is Bigger Smarter
- UVa 10131 - Is Bigger Smarter