hdu 题目1160 FatMouse's Speed (DP)
来源:互联网 发布:gogoing知乎 编辑:程序博客网 时间:2024/06/02 02:54
FatMouse's Speed
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7280 Accepted Submission(s): 3218
Special Judge
Problem Description
FatMouse believes that the fatter a mouse is, the faster it runs. To disprove this, you want to take the data on a collection of mice and put as large a subset of this data as possible into a sequence so that the weights are increasing, but the speeds are decreasing.
Input
Input contains data for a bunch of mice, one mouse per line, terminated by end of file.
The data for a particular mouse will consist of a pair of integers: the first representing its size in grams and the second representing its speed in centimeters per second. Both integers are between 1 and 10000. The data in each test case will contain information for at most 1000 mice.
Two mice may have the same weight, the same speed, or even the same weight and speed.
The data for a particular mouse will consist of a pair of integers: the first representing its size in grams and the second representing its speed in centimeters per second. Both integers are between 1 and 10000. The data in each test case will contain information for at most 1000 mice.
Two mice may have the same weight, the same speed, or even the same weight and speed.
Output
Your program should output a sequence of lines of data; the first line should contain a number n; the remaining n lines should each contain a single positive integer (each one representing a mouse). If these n integers are m[1], m[2],..., m[n] then it must be the case that
W[m[1]] < W[m[2]] < ... < W[m[n]]
and
S[m[1]] > S[m[2]] > ... > S[m[n]]
In order for the answer to be correct, n should be as large as possible.
All inequalities are strict: weights must be strictly increasing, and speeds must be strictly decreasing. There may be many correct outputs for a given input, your program only needs to find one.
W[m[1]] < W[m[2]] < ... < W[m[n]]
and
S[m[1]] > S[m[2]] > ... > S[m[n]]
In order for the answer to be correct, n should be as large as possible.
All inequalities are strict: weights must be strictly increasing, and speeds must be strictly decreasing. There may be many correct outputs for a given input, your program only needs to find one.
Sample Input
6008 13006000 2100500 20001000 40001100 30006000 20008000 14006000 12002000 1900
Sample Output
44597
1.先将老鼠的speed递减排序,
2.求排过序数组的 weight 最长递增子序列
3求最长递增子序列时,每个元素的dp数组中递增时,都要记录它前面的递增元素下标,
4.根据最大的递增长度那个元素,递增找到这个递增子序列
#include<iostream>#include<stdio.h>#include<algorithm>#define N 1002using namespace std;struct mouse{ int id,w,v;}m[N];struct fun{ int len; int i; int pre; }f[N];bool cmp(mouse a,mouse b){ if(a.v>b.v) return true; return false;}bool cmp1(fun a,fun b){ if(a.len<b.len) return true; return false;}int main(){ int i,j,w,v,max,cnt = 1,k = 1; while(scanf("%d%d",&w,&v)!=EOF){ m[k].id = cnt++; m[k].w = w; m[k].v = v; k++; } sort(m+1,m+cnt,cmp); f[1].len = 1; f[1].i = m[1].id; for(i=2;i<cnt;i++){ for(max =0,j=1; j<i; j++){ if(m[i].w>m[j].w && f[j].len>max){ max = f[j].len; f[i].pre = j; } } f[i].len = max+1; f[i].i = m[i].id; } int index; for(max=1,i=1;i<cnt;i++) if(max<f[i].len) { max= f[i].len; index = i; } k = 0; int p[N]; while(f[index].pre!=0){ p[k++] = f[index].i; index = f[index].pre; }p[k] = f[index].i; printf("%d\n",max); for(i=k;i>=0;i--) { printf("%d\n",p[i]); } return 0;}
- hdu 题目1160 FatMouse's Speed (DP)
- hdu 1160 FatMouse's Speed (DP)
- 【HDU】 1160 FatMouse's Speed (DP)
- HDU---1160-FatMouse's Speed (DP)
- HDU 1160 FatMouse's Speed(DP)
- hdu 1160 FatMouse's Speed(DP)
- HDU 1160 FatMouse's Speed (dp)
- HDU 1160 FatMouse's Speed DP
- HDU 1160 FatMouse's Speed(DP)
- HDU 1160 FatMouse's Speed(dp)
- HDU 1160 FatMouse's Speed--经典DP
- HDU 1160 FatMouse's Speed DP题解
- HDU 1160 FatMouse's Speed(DP)
- HDU 1160 FatMouse's Speed(DP)
- hdu 1160 FatMouse's Speed dp
- dp hdu 1160 FatMouse's Speed
- DP-HDU-1160-FatMouse's Speed
- hdu 1160 FatMouse's Speed dp
- Android与MVC 模式
- 软件设计之UML—UML中的六大关系
- 1_辞职后的事情
- 这位清华妈妈的教育方法
- windows游戏编程大师技巧源码C++改写DX9改写
- hdu 题目1160 FatMouse's Speed (DP)
- 利用 Delegate Design Pattern 进行 View Controller 之间的沟通
- QMetaObject::connectSlotsByName: No matching signal for问题的解决方法
- 判断是否是日期格式YYYYMM
- Mac OS 下的 Django,pip,virtualenv 和 homebrew 环境的搭建
- SQL Union和SQL Union All用法
- 【你有成功特质吗?】
- preprocessor-宏
- poj 1149 Pigs 网络流-最大流 建图的题目(明天更新)-已更新