HDU 1160 FatMouse's Speed
来源:互联网 发布:java swing 做成exe 编辑:程序博客网 时间:2024/04/27 20:05
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160
题意:有n只老鼠,每只老鼠有wei和speed2个属性,要求往队列里赛老鼠,要求wei递增,speed递减,问队列最多只老鼠的方法
思路:感觉也是最长递增子序列的思路,先按wei进行排序,依次递归就可以了,dp[i]表示以老鼠i为队尾的队列长度
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;struct Node{ int w,v,pos;}s[1030];int dp[1030],pre[1030];bool cmp(Node p,Node q){ if (p.w!=q.w) return p.w<q.w; else return p.v>q.v;}int main(){ while (scanf("%d%d",&s[1].w,&s[1].v)!=EOF) { int num=2; while (scanf("%d%d",&s[num].w,&s[num].v)!=EOF) s[num].pos=num++; s[1].pos=1; dp[num-1]=1; pre[num-1]=num-1; sort(s+1,s+num,cmp); for (int i=num-2;i>=1;i--) {//cout<<s[i].w<<"------"<<s[i].v<<endl; dp[i]=1; pre[i]=i; for (int j=i+1;j<num;j++) { if (s[i].w<s[j].w && s[i].v>s[j].v) { if (dp[i]<dp[j]+1) { dp[i]=dp[j]+1; pre[i]=j;//cout<<s[j].w<<":"<<s[j].v<<":"<<dp[j]<<":"<<j<<endl; } } } } int res=0,pos; for (int i=1;i<num;i++) { if (res<dp[i]) { res=dp[i]; pos=i; //cout<<dp[i]<<":"<<i<<endl; } } printf("%d\n",res); while (res--) { printf("%d\n",s[pos].pos);//cout<<":"<<pos<<endl; pos=pre[pos]; } }}
0 0
- HDU 1160 FatMouse's Speed
- HDU 1160 - FatMouse's Speed
- hdu FatMouse's Speed 1160
- HDU-1160-FatMouse's Speed
- hdu 1160 FatMouse's Speed
- hdu 1160 FatMouse's Speed
- Hdu 1160 FatMouse's Speed
- hdu 1160 FatMouse's Speed
- hdu 1160 FatMouse's Speed
- HDU 1160 FatMouse's Speed
- HDU 1160 FatMouse's Speed
- hdu 1160 FatMouse's Speed
- HDU-1160 FatMouse's Speed
- hdu 1160 FatMouse's Speed
- hdu 1160 FatMouse's Speed
- hdu 1160 FatMouse's Speed
- hdu 1160 - FatMouse's Speed
- hdu 1160 FatMouse's Speed
- 属性动画+贝塞尔曲线实现落叶效果~~~(@_@;)
- aaaa
- swift手记-2
- Activity切换动画overridePendingTransition
- 安卓事件拦截机制分析
- HDU 1160 FatMouse's Speed
- Java接口与抽象类的区别
- 将Maven项目转换成Eclipse支持的Java项目
- 89. cURL
- 使用Java的JNative调用dll动态链接库
- 文件加解密—解密版
- iOS 页面间几种传值方式(属性,代理,block,单例,通知)
- SIP信令中的PRACK的含义和使用
- 快速排序java版