UVA - 10131 - Is Bigger Smarter? (动态规划,LIS)
2014-03-09 21:10
477 查看
点击打开链接
给出一系列大象的体重和智商,求在体重升序的排序中找出智商的最大下降序列,并输出序列。
先排序,再用LIS的动规。
WA了一次,因为输出路径的时候出了点问题。
给出一系列大象的体重和智商,求在体重升序的排序中找出智商的最大下降序列,并输出序列。
先排序,再用LIS的动规。
WA了一次,因为输出路径的时候出了点问题。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAX_N = 1001, MAX_W = 10001, MAX_S = 10001, INF = 0x3f3f3f3f; int N = 0; int d[MAX_N], fa[MAX_N]; struct E { int n, w, s; bool operator<(const E e) const { return this->w < e.w; } }e[MAX_N]; void print(int x) { if(x == -1) return; printf("%d\n", e[x].n+1); print(fa[x]); } void solve() { int ans = -1, mi = -1; for(int i = N-1; i >= 0; i--) { d[i] = 1; fa[i] = -1; for(int j = N-1; j > i; j--) if(e[j].w != e[i].w && e[j].s < e[i].s && d[j]+1 > d[i]) { d[i] = d[j]+1; fa[i] = j; } if(ans < d[i]) { ans = d[i]; mi = i; } } printf("%d\n", ans); print(mi); } int main() { //freopen("in.txt", "r", stdin); while(scanf("%d%d", &e .w, &e .s) != EOF) e .n = N++; sort(e, e+N); solve(); return 0; }
相关文章推荐
- 一中OJ #1457 越大越聪明[Uva 10131 -> Is Bigger Smarter?] | 动态规划 字典序LIS | 解题报告
- UVa 10131 Is Bigger Smarter? (DP&LIS)
- 【解题报告】uva10131_Is Bigger Smarter?(越大越聪明, dp, LIS)
- UVA 10131 - Is Bigger Smarter? (动态规划)
- Uva 10131 Is Bigger Smarter? (LIS,打印路径)
- [动态规划]UVA10131 - Is Bigger Smarter?
- UVA 10131 - Is Bigger Smarter? (动态规划)
- uva 10131 Is Bigger Smarter?(动态规划:LIS变形+路径打印)
- UVA10131 Is Bigger Smarter? 简单动态规划
- Uva 10131 Is Bigger Smarter? (LIS,打印路径)
- UVA 10131 Is Bigger Smarter? 【严格单调递增子序列】
- UVA 10131 Is Bigger Smarter? 越大越聪明? dp,LDS
- 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?
- uva 10131 Is Bigger Smarter ? (简单dp 最长上升子序列变形 路径输出)
- UVA 10131-Is Bigger Smarter?