UVA 10131-Is Bigger Smarter?
2011-12-05 18:28
369 查看
这道题要求我们找到一个满足体重是升序,智商是降序的最长的序列。首先将大象的体重做升序排序,
这样我们就只要找到排序后的序列的关于智商的最长下降子序列。为了方便操作,定义一个结构体,
包含 体重、 智商、 编号。还有定义一个数组来模拟链表,数组存的是点的父节点,然后用输出路径
的函数将路径输出。这道题输入比较奇葩,而且我们检查是否正确也会比较麻烦。
这样我们就只要找到排序后的序列的关于智商的最长下降子序列。为了方便操作,定义一个结构体,
包含 体重、 智商、 编号。还有定义一个数组来模拟链表,数组存的是点的父节点,然后用输出路径
的函数将路径输出。这道题输入比较奇葩,而且我们检查是否正确也会比较麻烦。
#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAXD 1005 typedef struct aa { int w; int s; int r; }E; E e[MAXD]; int N, d[MAXD], p[MAXD], len, first; int cmp( const void *_p, const void *_q) { E *p = (E *)_p; E *q = (E *)_q; return p->w - q->w; } void dp() { for( int i = 0; i < N; i ++) d[i] = 1; memset( p, -1, sizeof p); qsort( e, N, sizeof e[0], cmp); for( int i = 1; i < N; i ++) for( int j = 0; j < i; j ++) { if( e[i].w == e[j].w) break; if( e[i].s < e[j].s && d[i] < d[j] + 1) { d[i] = d[j] + 1; p[i] = j; } } len = 0; for( int i = 0; i < N; i ++) if( len < d[i]) { len = d[i]; first = i; } } void printpath( int i) { if( p[i] != -1) printpath( p[i]); printf("%d\n", e[i].r); } void print() { printf( "%d\n", len); printpath( first); } int main() { /* N = 9; for( int i = 0; i < N; i ++) { scanf( "%d%d", &e[i].w, &e[i].s); e[i].r = i + 1; } */ N = 0; while( scanf( "%d%d", &e .w, &e .s) == 2) { e .r = N + 1; N ++; } dp(); print(); return 0; }
相关文章推荐
- UVA 10131 Is Bigger Smarter? (DP)
- UVA 10131 - Is Bigger Smarter?
- 一中OJ #1457 越大越聪明[Uva 10131 -> Is Bigger Smarter?] | 动态规划 字典序LIS | 解题报告
- UVA 10131 - Is Bigger Smarter?
- uva 10131 Is Bigger Smarter? dag 最长路 加路径还原
- UVA - 10131 Is Bigger Smarter?(dp+最大升序子序列)
- UVa 10131 - Is Bigger Smarter?
- UVa 10131 - Is Bigger Smarter
- uva 10131 Is Bigger Smarter ? (简单dp 最长上升子序列变形 路径输出)
- 【解题报告】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?(DP)
- UVa 10131 Is Bigger Smarter?
- UVa 10131 Is Bigger Smarter? (LDS+数据结构排序)
- UVA 10131 Is Bigger Smarter?
- uva 10131 Is Bigger Smarter?(DAG最长路)
- UVA 10131 Is Bigger Smarter?
- UVA 10131 - Is Bigger Smarter?非连续的单调递增的最长子序列的长度