hdu 1160 FatMouse's Speed
来源:互联网 发布:音效制作软件 编辑:程序博客网 时间:2024/04/30 13:33
解题思路:按某一维排序,则二维简化为一维。先按体重从小到大排序,再按速度从大到小排序,找出速度最长递减子序列。建一个结构体:struct mouse,其中weight,speed是体重和速度,num是其输入的顺序,pre是记录路径上的前一点的下标。状态转移方程为:dp[i]=dp[j]+1; 如果 mice[i].speed<mice[j].speed && mice[i].weight>mice[j].weight ,并且dp[j]+1>dp[i]。 max{dp[i]}就是所要求的值,index为最长递减子序列的最后一个mouse,将路径逆序保存在a[]中,再顺序输出。输出有点搞,花费了较长时间。
#include<stdio.h>#include<stdlib.h>#define NUM 1005struct mouse{int weight;int speed;int num;int pre;}mice[NUM];int cmp(const void *x, const void *y){mouse *a = (mouse *)x;mouse *b = (mouse *)y;if(a->weight==b->weight)return b->speed - a->speed;return a->weight - b->weight;}int dp[NUM];int a[NUM];int main(){int n=1,i,j,max_num=-1,index;while(scanf("%d%d",&mice[n].weight,&mice[n].speed)!=EOF){mice[n].num=n;n++;}qsort(mice+1,n-1,sizeof(mice[1]),cmp);dp[1]=1;index=1;for(i=2;i<n;i++){dp[i]=1;mice[i].pre=i;for(j=1;j<i;j++){if(mice[i].speed<mice[j].speed&&dp[j]+1>dp[i]&&mice[i].weight>mice[j].weight){dp[i]=dp[j]+1;mice[i].pre = j;}}if(dp[i] > max_num){max_num=dp[i];index=i;}}printf("%d\n",max_num);n=max_num;while(dp[index]+1){a[--n]=mice[index].num;index=mice[index].pre;dp[index]--;}a[0]=mice[index].num;for(i=0;i<max_num;i++)printf("%d\n",a[i]);return 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
- How to use Tower on Mac to control your local Xcode Projects
- 敏捷开发(Agile development)(转)
- linux驱动学习笔记(linux驱动头文件说明)
- struts2教程:5、Action中result的各种转发类型
- JavaScript红用于判定==和===的规则
- hdu 1160 FatMouse's Speed
- ENCODE30篇论文全摘要 聚焦人基因组功能研究
- UIWebView的相关操作
- struct 结构体的创建
- mysql安装start service applay security setting出错的解决方法
- spring 定时任务的 执行时间设置规则
- 《设计模式》读书笔记(一)
- -webkit-appearance实现iPad端日历框样式的改变
- ultraiso制作u盘启动盘