一本通上的一道题,这是网址
我寻思着这不就是个双向最长下降子序列,从前往后和从后往前都做一遍dp模板不就行了,于是蒟蒻就自信地交了如下代码:
#include<bits/stdc++.h>
using namespace std;
int k,n,a[10000],f1[10000],f2[10000],maxn;
int main()
{
cin>>k;
while(k--)
{
maxn=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
f1[i]=1;
f2[i]=1;
}
for(int i=2;i<=n;i++)
{
for(int j=1;j<i;j++)
if(a[i]<a[j])
f1[i]=max(f1[j]+1,f1[i]);
maxn=max(maxn,f1[i]);
}
for(int i=n-1;i>=1;i--)
{
for(int j=n;j>i;j--)
if(a[i]<a[j])
f2[i]=max(f2[j]+1,f2[i]);
maxn=max(maxn,f2[i]);
}
cout<<maxn<<endl;
}
return 0;
}
结果WA了三个点,大佬们知道蒟蒻那里疏漏了吗?棒棒蒟蒻吧!