Luogu1091 合唱队形
Posted PushinL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu1091 合唱队形相关的知识,希望对你有一定的参考价值。
线性动态规划
思路:一遍算出最长不降子序列,再一遍算出最长不升子序列,再一遍历维护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 合唱队形的主要内容,如果未能解决你的问题,请参考以下文章