首页 > 其他 > 详细

洛谷P1091 合唱队形

时间:2019-08-22 13:25:47      阅读:110      评论:0      收藏:0      [点我收藏+]

技术分享图片

题解:要让出去的人最少,我们很容易会想到让留下的人更多。

要让队列单调的不等关系,我们很容易就想到了最长上升子序列。

问题是找到转折点,所以我们就做一遍最长上升子序列,再做一遍最长下降子序列,然后枚举每个点当转折点

的答案大小即为留在队伍里最多的人,用总人数减去即为答案。

技术分享图片
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 
 6 using namespace std;
 7 
 8 int n,dp_up[205],dp_down[205],a[205];
 9 
10 int main()
11 {
12     scanf("%d",&n);
13     for(int i=1;i<=n;i++)
14         scanf("%d",&a[i]);
15     for(int i=1;i<=n;i++)
16     {
17         dp_up[i]=1;
18         for(int j=1;j<i;j++)
19             if(a[i]>a[j]&&dp_up[j]+1>dp_up[i]) dp_up[i]=dp_up[j]+1;
20     }
21     for(int i=n;i>=1;i--)
22     {
23         dp_down[i]=1;
24         for(int j=n;j>i;j--)
25             if(a[i]>a[j]&&dp_down[j]+1>dp_down[i]) dp_down[i]=dp_down[j]+1;
26     }
27     int ans=0;
28     for(int i=1;i<=n;i++)
29         ans=max(ans,dp_up[i]+dp_down[i]-1);
30     printf("%d",n-ans);
31     return 0;
32 }
View Code

 

洛谷P1091 合唱队形

原文:https://www.cnblogs.com/Hoyoak/p/11393287.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!