合唱队形 ( 双向LIS )

 

 

复制代码
 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <algorithm>
 4 
 5 using namespace std;
 6 
 7 int list[105];
 8 int dp1[105];
 9 int dp2[105];
10 
11 
12 int main() 
13 {
14     int n;
15     while(cin >> n)
16     {
17         for(int i = 1; i <= n; ++i)
18             cin >> list[i];
19         
20         // 正反两次运用LIS 
21         for(int i = 1; i <= n; ++i)
22         {
23             int tmax = 1;
24             for(int j = 1; j < i; ++j)
25             {
26                 if(list[j] < list[i])
27                 {
28                     tmax = max(tmax, dp1[j] + 1);
29                 }
30             }
31             
32             dp1[i] = tmax;
33         }
34         
35         for(int i = n; i >= 1; --i)
36         {
37             int tmax = 1;
38             for(int j = n; j > i; --j)
39             {
40                 if(list[j] < list[i])
41                 {
42                     tmax = max(tmax, dp2[j] + 1);
43                 }
44             }
45             
46             dp2[i] = tmax;
47         }
48         
49         // 当某个人左侧的LIS和右侧的LIS长度之和smax最大时,易知 n-smax+1即为答案(此处加1的原因是这个人重复算了一次,即多减了一次) 
50         int smax = 0;
51         for(int i = 1; i <= n; ++i)
52         {
53             if(dp1[i] + dp2[i] > smax)
54                 smax = dp1[i] + dp2[i];
55         }
56         
57         cout << n - smax + 1 << endl;
58     }
59     
60     
61     
62     
63     return 0;
64 }
复制代码

 

posted @   拾月凄辰  阅读(246)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示
主题色彩