-
J - FatMouse's Speed
- HDU - 1160
- 题目大意:
- 很多肥老鼠认为,长的越肥,奔跑速度就越快,为了反驳这个观点,你现在需要对老鼠的体重和速度进行研究,你要在老鼠序列中找出一个子序列,使得老鼠的体重在增加,但是速度却在减慢
-
#include<bits/stdc++.h> using namespace std; #define maxn 1111 #define inf 0x3f3f3f3f struct node { int x,y,z; } a[maxn]; bool cmp(node c,node d) { if(c.x==d.x) return c.y>d.y; return c.x<d.x; } int n,m,ans,pre[maxn]; int dp[maxn],ind; int main() { int cnt=0; ans=-inf; while(~scanf("%d%d",&a[cnt].x,&a[cnt].y)) { a[cnt].z=cnt+1; cnt++; } sort(a,a+cnt,cmp); memset(pre,-1,sizeof(pre)); for(int i=0; i<cnt; i++) { dp[i]=1; for(int j=0; j<i; j++) if(a[i].x>a[j].x&&a[i].y<a[j].y) { if(dp[j]+1>dp[i]) { dp[i]=dp[j]+1; pre[i]=j; } } if(dp[i]>ans) { ans=dp[i]; ind=i; } } printf("%d\n",ans); if(ans==1) printf("%d\n",dp[0]); else { stack<int>stk; while(ind!=-1) { stk.push(a[ind].z); ind=pre[ind]; } while(!stk.empty()) { printf("%d\n",stk.top()); stk.pop(); } } return 0; }
J - FatMouse's Speed -序列DP
最新推荐文章于 2019-07-14 23:29:38 发布