hdu 1160 FatMouse's Speed(水DP)
2011-08-14 10:12
441 查看
最长XX子序列,预处理需要排序,我的是按体重升序排序的,相同的降序处理。
寻找具体老鼠是从后往前推,如果记录的以ind 结尾的老鼠的最长XX序列 == 下一个结尾的老鼠的个数 - 1,那么说明后面那个点是经过这个点更新的(多种情况,任一均可)。
当然这个老鼠也要符合体重,速度的性质。
发现这题在ZOJ我以前过了= =。。当时记录的是前一个点的下标。。。
寻找具体老鼠是从后往前推,如果记录的以ind 结尾的老鼠的最长XX序列 == 下一个结尾的老鼠的个数 - 1,那么说明后面那个点是经过这个点更新的(多种情况,任一均可)。
当然这个老鼠也要符合体重,速度的性质。
发现这题在ZOJ我以前过了= =。。当时记录的是前一个点的下标。。。
#include <queue> #include <stack> #include <math.h> #include <time.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <limits.h> #include <string.h> #include <string> #include <algorithm> #define MID(x,y) ( ( x + y ) >> 1 ) #define L(x) ( x << 1 ) #define R(x) ( x << 1 | 1 ) #define BUG puts("here!!!") using namespace std; const int MAX = 1010; struct NODE{ int w,s,ind;}; NODE a[MAX]; int len[MAX]; stack<int> s; bool cmp(NODE a,NODE b) { if( a.w == b.w ) return a.s > b.s; return a.w < b.w; } int main() { int n = 0; while( ~scanf("%d%d",&a .w, &a .s) ) { a .ind = n + 1; n++; } sort(a, a+n, cmp); memset(len, 0, sizeof(len)); int sum = 0; for(int i=0; i<n; i++) { int t = 0; for(int k=0; k<i; k++) if( a[i].w > a[k].w && a[i].s < a[k].s ) t = max(t, len[k]); len[i] = t + 1; } int ind = max_element(len,len+n) - len; s.push(a[ind].ind); int t = ind; for(int i=ind-1; i>=0; i--) if( a[i].w < a[t].w && a[i].s > a[t].s && len[t] == len[i] + 1 ) { s.push(a[i].ind); t = i; } printf("%d\n",len[ind]); while( !s.empty() ) { printf("%d\n",s.top()); s.pop(); } return 0; }
相关文章推荐
- zju 1108||hdu 1160 FatMouse's Speed(dp,最长单调序列)
- HDU---1160-FatMouse's Speed (DP)
- HDU 1160 FatMouse's Speed(DP)
- ZOJ 1108 FatMouse's Speed (HDU 1160) DP
- hdu 1160 FatMouse's Speed 题解(简单dp)
- 【HDU】 1160 FatMouse's Speed (DP)
- HDU 1160 FatMouse's Speed--经典DP
- HDU 1160 FatMouse's Speed--dP--(元素1递增元素2递降的最长子序列)
- HDU 1160 FatMouse's Speed (dp, 最长子序列)
- HDU 1160 FatMouse's Speed(DP)
- hdu 1160 FatMouse's Speed 简单dp 题解
- HDU 1160 FatMouse's Speed(DP)
- hdu 1160 FatMouse's Speed(最大上升子序列dp)
- hdu 1160(FatMouse's Speed)(dp)
- hdu 1160 FatMouse's Speed (dp---最长有序子序列)
- HDU1160——FatMouse's Speed(DP入门)
- hdu 1160 FatMouse's Speed(DP)
- HDU 1160 FatMouse's Speed(dp)
- HDU-1160 FatMouse's Speed(LIS)
- FatMouse's Speed(HDU 1160)—— DP记录路径