hdu1160 FatMouse's Speed
来源:互联网 发布:香草天空知乎 编辑:程序博客网 时间:2024/05/17 22:29
#include<cstdio></span>
#include<algorithm>#include<cstring>#include<iostream>using namespace std;int dp[1005],path[1005];struct ss { int w,s,cnt;} num[1005];bool tmp(ss x,ss y) { if(x.w == y.w) return x.s > y.s; return x.w < y.w;}int maxx(int x,int y) { if(x > y) return x; else return y;}void output(int x) { if(!path[x]) return; output(path[x]); printf("%d\n",num[path[x]].cnt);}int main() { int count = 1; while(~scanf("%d%d",&num[count].w,&num[count].s)) { num[count].cnt = count; count++; //if(count == 10) //break; } sort(num+1,num+count,tmp); //for(int i = 1;i < count;i++) //printf("%d-%d-%d\n",num[i].w,num[i].s,num[i].cnt); memset(path,0,sizeof(path)); int ans = 0,k; for(int i = 1;i < count;i++) { dp[i] = 1; for(int j = 1;j < i;j++) if(num[j].w < num[i].w && num[j].s > num[i].s) { if(dp[j]+1 > dp[i]) {//只有在dp[i]<dp[j]+1的时候才需要更新path,因此不能直接用max(dp[i],dp[j]+1)!!!!!!!
dp[i] = dp[j]+1; path[i] = j; } } if(ans < dp[i]) { ans = dp[i]; k = i; } } printf("%d\n",ans); output(k); printf("%d\n",num[k].cnt);}
</pre><pre name="code" class="cpp">一个小细节浪费了将近俩小时~心累,还是要想清楚。
0 0
- HDU1160--FatMouse's Speed
- HDU1160 FatMouse's Speed
- HDU1160 FatMouse's Speed
- hdu1160,FatMouse's Speed
- HDU1160--FatMouse's Speed
- hdu1160 FatMouse's Speed
- HDU1160 FatMouse's Speed
- hdu1160 FatMouse's Speed
- HDU1160 FatMouse's Speed
- hdu1160 FatMouse's Speed
- [HDU1160]-FatMouse's Speed
- hdu1160 FatMouse's Speed
- HDU1160——FatMouse's Speed
- HDU1160 FatMouse's Speed LIS变种+路径
- hdu1160 FatMouse's Speed(LIS普通法)
- hdu1160 FatMouse's Speed--DP&记录路径
- hdu1160 FatMouse's Speed (子序列
- hdu1160 FatMouse'Speed
- 通过有名管道实现两个进程单向通讯
- time
- 协方差矩阵
- 常见聚类算法
- Android快速开发系列 10个常用工具类
- hdu1160 FatMouse's Speed
- navicat 连接数据库报错 2003 cannot connect mysql on .......
- Hive数据倾斜问题总结
- Glide 对比 Picasso
- kotlin基础
- js 表格操作
- 下载最新的版本的SVN方法
- 【Python学习笔记】单元测试
- MAVEN项目目录结构