uva 10131 Is Bigger Smarter? (DAG)
2015-03-14 17:54
423 查看
uva 10131 Is Bigger Smarter?
题目大意:当一只大象的体重大于另一只的体重,且智商小于另一只的智商,该大象便可以“嵌套”另一只大象。问,最长的嵌套方式。(答案不唯一)
解题思路:DAG。
[code]#include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std; struct ELE{ int w, i; }; ELE e[10005]; int dp[10005], cnt, rec[10005];; int check(int a, int b) { if (e[a].w > e[b].w && e[a].i < e[b].i) return 1; else return 0; } int DP(int x) { if (dp[x]) return dp[x]; for (int i = 0; i < cnt; i++) { if (check(i, x)) { int temp = DP(i); if (temp > dp[x]) { dp[x] = temp; rec[x] = i; } } } return ++dp[x]; } void solve() { int Max = 0, r; for (int i = 0; i < cnt; i++) { if (DP(i) > Max) { r = i; Max = DP(i); } } printf("%d\n", Max); for (int i = 0; i < Max; i++) { printf("%d\n", r + 1); r = rec[r]; } } int main() { cnt = 0; while (scanf("%d %d", &e[cnt].w, &e[cnt].i) == 2) { cnt++; } memset(dp, 0, sizeof(dp)); memset(rec, 0, sizeof(rec)); solve(); return 0; }
相关文章推荐
- uva 10131 Is Bigger Smarter? dag 最长路 加路径还原
- 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? 【严格单调递增子序列】
- UVA 10131 Is Bigger Smarter?(DP)
- UVA 10131 Is Bigger Smarter? 越大越聪明? dp,LDS
- UVA 10131 Is Bigger Smarter? (DP,最长条件子序列)
- UVa 10131 Is Bigger Smarter?
- UVA 10131 - Is Bigger Smarter?
- UVA 10131 Is Bigger Smarter?
- UVa 10131 - Is Bigger Smarter
- UVa Problem 10131 Is Bigger Smarter? (越大越聪明?)
- uva 10131 Is Bigger Smarter?(动态规划:LIS变形+路径打印)
- UVa 10131 Is Bigger Smarter? 最长公共子序列
- UVA 10131 - Is Bigger Smarter?