。。。挺厉害的,我没有想到是LIS。。。看到以为要求总共有多少条最长不增子序列,然后不断的跑动态规划。。。还WA
看到题解之后捶胸顿足,居然是一道LIS?,而且还是裸的LIS?!少年啊少年,你的洞察力还不够呀!
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
int n,k;
vector<int> arr,dp;
int main(){
while(scanf("%d",&n)!=EOF){
arr.resize(n);
dp.resize(n);
for(int i=0;i<n;++i)
scanf("%d",&arr[i]);
for(int i=0;i<n;++i){
dp[i]=1;
for(int j=0;j<i;++j)
if(arr[j]<arr[i]&&dp[i]<dp[j]+1)
dp[i]=dp[j]+1;
if(dp[k]<dp[i])
k=i;
}
printf("%d\n",dp[k]);
k=0;
}
return 0;
}
当初第一想法是排个序,然后不就只要一个系统了么。。。然后才发现导弹顺序是不允许变的。。。
嘛,洞察力还是低了一些。