Luogu1091 合唱隊形
阿新 • • 發佈:2018-04-27
out mes main ostream return 合唱隊 () turn 最長
線性動態規劃
思路:一遍算出最長不降子序列,再一遍算出最長不升子序列,再一遍歷維護max求出答案。
#include<iostream>
using namespace std;
int n,t[105],fd[105],ans,fu[105];
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>t[i];
for(int i=1;i<=n;i++)
for(int j=0;j<i;j++)
if(t[i]>t[j])
fd[i]=max(fd[i],fd[j]+1 );
for(int i=n;i>0;i--)
for(int j=n+1;j>i;j--)
if(t[i]>t[j])
fu[i]=max(fu[i],fu[j]+1);
for(int i=1;i<=n;i++)
ans=max(ans,fu[i]+fd[i]-1);
cout<<n-ans;
return 0;
}
Luogu1091 合唱隊形