博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Luogu P1091 合唱队形
阅读量:5277 次
发布时间:2019-06-14

本文共 637 字,大约阅读时间需要 2 分钟。

思路

看题目中给出的式子,其实就是一半是最长上升子序列,一半是最长下降子序列。那么就需要进行两次DP,第一次求最长上升子序列,第二次求最长下降子序列,然后枚举序列的最高点。这个从这个最高点劈开。维护一个最大的值。到最后有总人数减去最大值

 

代码

#include 
#include
#include
using namespace std;int dp[233], n, t[123], ans, f[233], Ans;int main() { scanf("%d", &n); for(int i=1; i<=n; i++) scanf("%d", &t[i]); t[0] = 0; for(int i=1; i<=n; i++) { for(int j=0; j
=1; i--) { for(int j=n+1; j>i; j--) { if(t[j] < t[i]) f[i] = max(f[i], f[j]+1); } } for(int i=1; i<=n; i++) Ans = max(dp[i] + f[i] - 1, Ans); printf("%d", n-Ans);}

  

转载于:https://www.cnblogs.com/bljfy/p/9335957.html

你可能感兴趣的文章
Upload Image to .NET Core 2.1 API
查看>>
【雷电】源代码分析(二)-- 进入游戏攻击
查看>>
Linux中防火墙centos
查看>>
如何设置映射网络驱动器的具体步骤和方法
查看>>
centos下同时启动多个tomcat
查看>>
Leetcode Balanced Binary Tree
查看>>
[JS]递归对象或数组
查看>>
linux sed命令
查看>>
程序存储问题
查看>>
优雅地书写回调——Promise
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>
Round B APAC Test 2017
查看>>
MySQL 字符编码问题详细解释
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
css & input type & search icon
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
0320-学习进度条
查看>>
MetaWeblog API Test
查看>>