hdu 1160 FatMouse's Speed(dp)
http://acm.hdu.edu.cn/showproblem.php?pid=1160
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <queue> using namespace std; struct Node { int w,s,id,fa; }; Node mice[1000+10]; int dp[1000+10]; int cmp(Node a,Node b) { return a.w<b.w; } int main() { int i,j,k; int cnt=1; int t1,t2; int ans,ansn; while (scanf( "%d%d" ,&t1,&t2)!=EOF) { if (t1==-1) break ; mice[cnt].w=t1; mice[cnt].s=t2; mice[cnt].id=cnt; cnt++; } sort(mice+1,mice+cnt,cmp); ans=mice[cnt-1].id; ansn=1; for (i=1;i<cnt;i++) { mice[i].fa=i; dp[i]=1; } for (i=cnt-2;i>=1;i--) { for (j=i+1;j<cnt;j++) { if (dp[j]+1>dp[i]&&mice[i].w<mice[j].w&&mice[i].s>mice[j].s) { dp[i]=dp[j]+1; mice[i].fa=j; } } if (dp[i]>ansn) {ans=i;ansn=dp[i];} } /* for(i=1;i<cnt;i++) { printf("%d %d %d %d\n",mice[i].w,mice[i].s,dp[i],mice[i].fa); }*/ printf( "%d\n" ,ansn); while (mice[ans].fa!=ans) { printf( "%d\n" ,mice[ans].id); ans=mice[ans].fa; } printf( "%d\n" ,mice[ans].id); return 0; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步