标签:include HERE script problem mice positive nsis between sequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 24573 Accepted Submission(s): 10896
Special Judge
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.
6008 1300 6000 2100 500 2000 1000 4000 1100 3000 6000 2000 8000 1400 6000 1200 2000 1900
4 4 5 9 7
给出一堆鼠标的重量与速度,输出一个最长的序列,满足重量越来越大,速度越来越小。
先将鼠标根据重量从小到大排序,再求最大下降子序列就行了。
#include<bits/stdc++.h> using namespace std; typedef struct { int add; int w; int s; }node; node a[1005]; int dp[1005],anss,i,temp,c[1005],x,y,num,j,n; bool cmp(node a,node b) { return a.w<b.w; } int main() { while(cin>>x>>y) { num++; a[num].add=num; a[num].w=x; a[num].s=y; } sort(a+1,a+1+num,cmp); for(i=1;i<=num;i++) { dp[i]=1; for(j=1;j<i;j++) { if(a[j].w<a[i].w&&a[j].s>a[i].s) dp[i]=max(dp[j]+1,dp[i]); } if(dp[i]>anss) anss=dp[i]; } cout<<anss<<endl; temp=anss; for(i=num;i>=1;i--) { if(dp[i]==temp) { temp--; c[temp]=a[i].add; } } for(i=0;i<anss;i++) cout<<c[i]<<endl; }
HDU 1160 FatMouse's Speed (动态规划、最长下降子序列)
标签:include HERE script problem mice positive nsis between sequence
原文地址:https://www.cnblogs.com/dyhaohaoxuexi/p/11393480.html