最少链划分 = 最长反链长度 所以最少多少套系统= 最长导弹高度上升 序列长度
虽然不是很明白为什么。。
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int a[105],n=0,dp[105],np[105];
while(cin>>a[n++]){
}
n--;
fill(dp,dp+n,1);
fill(np,np+n,1);
for(int i=0;i<n;i++){
for(int j=0;j<i;j++){
if(a[j]>=a[i]) dp[i]=max(dp[i],dp[j]+1);
}
}
for(int i=0;i<n;i++){
for(int j=0;j<i;j++){
if(a[j]<=a[i]) np[i]=max(np[i],np[j]+1);
}
}
sort(dp,dp+n);
sort(np,np+n);
cout<<dp[n-1]<<endl<<np[n-1]<<endl;
return 0;
}