hdu1160 FatMouse's Speed (dp,记录路径)
来源:互联网 发布:苹果怎么加密软件 编辑:程序博客网 时间:2024/05/17 02:49
题意:输出一组数列,小鼠的体重增加,速度减少,保证这组数列数量最多。
思路:其实是很经典的dp,一个数字排序好后,求最大递增数列,就是有很多细节问题,还有保存路径。用一个数组,把每一组数的前一组位置保留下来,最后用递归输出。
还有就是这道题必须eof才能输出结果,导致我的电脑总是看不到结果,凭运气A。。。
#include <iostream>#include <cstdio>#include <cmath>#include <queue>#include <stack>#include <algorithm>#include <cstring>#include <utility>#define ll long long#define INF 0x3f3f3f3fusing namespace std;int dp[1005];int r[1005];int dpmax=1,dpi;struct node{int m,s;int num;}a[1005];bool cmp(node x,node y){if(x.m<y.m)return 1;else if(x.m==y.m && x.s>y.s) return 1;else return 0;}void p(int e){if(e==0) return;p(r[e]);//e的前一个是r[e]printf("%d\n",a[e].num);}int main(){int k=0;while(scanf("%d%d",&a[k].m,&a[k].s)!=EOF){a[k].num=k+1;//因为k是从0开始的k++;}sort(a,a+k,cmp);//按照m从小到大,m相等时按s从大到小for(int i=0;i<k;i++)dp[i]=1;//dp[i]表示第i个以前中,最多的答案//printf("asdje\n");for(int i=0;i<k;i++){for(int j=0;j<i;j++)if(a[i].s<a[j].s && a[i].m!=a[j].m && dp[i]<dp[j]+1){dp[i]=dp[j]+1;//加上ir[i]=j;//保留路径}if(dpmax<dp[i]){dpmax=dp[i];//保留最大的,也就是答案dpi=i;//答案的最后一对值}}printf("%d\n",dpmax);//个数p(dpi);//用递归输出路径return 0;}
0 0
- hdu1160 FatMouse's Speed--DP&记录路径
- hdu1160 FatMouse's Speed (dp,记录路径)
- HDU1160 FatMouse's Speed(DP+路径记录)
- hdu1160 FatMouse's Speed 最长上升子序列以及记录路径 DP
- HDU1160 FatMouse's Speed LIS变种+路径
- HDU1160 FatMouse's Speed(DP,最长下降子序列)
- 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
- 多线程应用(五)——线程操作函数
- 服务器抓包
- DAO层是什么
- Cookie记住密码
- 排序算法性能及选择总结
- hdu1160 FatMouse's Speed (dp,记录路径)
- 复制一个JAVA WEB工程
- swift -- swift学习笔记(1)
- eclipse导出项目(war包),部署到tomcat,测试实例
- 只因你牛掰的能力20150821-5
- UI_iOS应用状态栏样式设置_及导航栏(NavigationBar)透明
- Java基础——成员变量、局部变量和静态变量的区别
- matlab2015和vs2013混合编程
- poj 2195 Going Home (费用流/KM)