洛谷P1091 合唱队列 DP_Huglight的博客-程序员秘密

技术标签: 动态规划  ACM  

题意:给一个序列,为了使序列为从左到中间、从中间到右分别为递增、递减(中间最大),求从序列中删去的最少元素个数
思路:转换一下思路,求删去最少元素即求n-留下最多元素,对于每个中间点i,留下的元素个数等于从左到i求最长递增子序列和从右到i-1求最长递增子序列,两者相加即可得到最长留下长度。首先从左到右求一次,再从右到左求一次,答案即为dp1[i]+dp2[i]-1

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 105;
int a[maxn], dp1[maxn], dp2[maxn], n;
int main()
{
	while (cin >> n) {
		for (int i = 0; i < n; i++) {
			cin >> a[i];
			dp1[i] = dp2[i] = 1;
		}
		for (int i = 0; i < n; i++) 
			for (int j = 0; j < i; j++) 
				if (a[i] > a[j]) 
					dp1[i] = max(dp1[i], dp1[j]+1);
		for (int i = n; i >= 0; i--)
			for (int j = n; j > i; j--)
				if (a[i] > a[j])
					dp2[i] = max(dp2[i], dp2[j]+1);
		int ans = 0;
		for (int i = 0; i < n; i++)
			ans = max(ans, dp1[i]+dp2[i]-1);
		cout << n-ans << endl;
	}
	return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42397248/article/details/95919660

智能推荐

【7-2 杨辉三角】求杨辉三角的前n行数据。 输入格式: 输入n(n<10)值。 输出格式: 输出杨辉三角的前n行数据,每个数据占4列。_以下是杨辉三角形。输入一个整数n(n<=10),计算杨辉三角形前n行数据之和。_妍zzzxxy的博客-程序员秘密

7-2 杨辉三角#include &lt;iostream&gt;using namespace std;int main(){ int a[100][100] = { 0 }; int i, j, n; //cout &lt;&lt; "请输入行数:" &lt;&lt; endl; cin &gt;&gt; n; for (i = 0; i &lt; n; i++) { for(j = 0; j &lt;= i; j++) { if (j &lt; 1) a[i][j] =

【NLP+图神经网络+推荐领域】2020年最新综述性文章推荐_阿里巴巴淘系技术团队官网博客的博客-程序员秘密

学习永无止境。本期橙子邀请到淘系技术部算法同学分别就「NLP领域」、「图神经网络」、「推荐领域」三个技术模块,结合行业技术发展与研究,重新整理历史经典综述文献与最新文献,去其糟粕,取其精华...

Scala学习(七)---包和引入_weixin_30778805的博客-程序员秘密

包和引入摘要:在本篇中,你将会了解到Scala中的包和引入语句是如何工作的。相比Java不论是包还是引入都更加符合常规,也更灵活一些。本篇的要点包括:1. 包也可以像内部类那样嵌套2. 包路径不是绝对路径3. 包声明链x.y.z并不自动将中间包x和x.y变成可见4. 位于文件顶部不带花括号的包声明在整个文件范围内有效5.包对象可...

OpenMP & Fortran_qry的博客-程序员秘密

在Fortran中应用OpenMP,有时会遇到一行中openmp的编译指令太长,需要换行的情形。今天在网上看到一段例程,明白了该如何处理这种情形。!$omp parallel &!$omp shared ( h, n ) &!$omp private ( i, x ) 源自http://people.sc.fsu.edu/~jburkardt/f_src/openmp/comp

tf.depth_to_space和torch.nn.pixel_shuffle_depth2space和pixelshuffle_CHNguoshiwushuang的博客-程序员秘密

   最近做项目用到了这两个函数,本人经过仔细对比,认为它们的功能应该是完全一样的,都是将一个较多通道的特征变成较少通道的特征,具体定义如下:def depth_to_space(input, block_size, name=None):   block_size用来说明数据移动的方式。该函数的操作是将block_size x block_size数目的特征图转换成一个不重叠的特征,...

对MTK的pdaf对焦方式的分析_vasvas的博客-程序员秘密

上周五分析了下mt6752的pdaf对焦规律,以前一直认为pdaf对焦不可能准到一步到位,应该是走到清晰点附近后再用CAF(反差式)对焦到最清晰点. 但通过log查看,感觉应该是分几种情况,如果pdaf的可信度高,比如色彩分明,环境亮度高,则可以一步到位,但到位后,pdaf会在清晰问题再次进行pdaf确认,如果确认是清晰的则就停在此位置,反之则继续移动(每次停留两帧,猜测应该是一帧无法获取准确的p

随便推点

解决GitHub连不上的问题fatal: unable to access ‘https://github.com/..’: Failed to connect to github.com port_no access to github_栗子酱15551的博客-程序员秘密

解决GitHub连不上的问题fatal: unable to access ‘https://github.com/dmlc/dgl.git’: Failed to connect to github.com port 443: Connection refused1、使用ssh key在终端输入:git clone [email protected]:dmlc/dgl.git配置ssh key见下方链接https://blog.csdn.net/u013778905/article/deta

SMART原则助你设定有效目标_foruok的博客-程序员秘密

目标就可以让人工作和生活充满动力,SMART原则指导我们如何设定有效目标……

构造函数的作用_空构造函数作用_yufaw的博客-程序员秘密

构造函数主要用来初始化对象。它又分为静态(static)和实例(instance)构造函数两种类别。大家应该都了解如果来写类的构造函数,这里只说下默认构造函数的作用,以及在类中保留默认构造函数的重要性。实际上,我说错了。正确的说法是:以及在类中保留空参数构造函数的重要性。我们来写一个类A,代码如下:public class A{   public int Number;

ECharts制作报表模板--.NET_LazyTojava的博客-程序员秘密

原文出自:http://blog.csdn.net/makang456/article/details/52873121【效果】【实例】    一、html代码[html] view plain copy span style="font-family:KaiTi_GB2312;

【习题】腐烂的橘子_carl_2018的博客-程序员秘密

题目描述在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。分析:先找到所有的腐烂橘子,入队,用第一批带出新一批腐烂的橘子。每一批橘子都会在一分钟之内腐烂,所以此题可以转化...

关于css 中margin-bottom 失效_wangmiao_1995的博客-程序员秘密

项目中发现margin-bottom 在一些情况下会失效后找到的一种解决办法,虽然low了点,但能用(小程序同理)html:&lt;div class="clear"&gt;&lt;/div&gt;小程序:&lt;view class="clear"&gt;&lt;/view&gt;css:.clear{ clear:both;}...

推荐文章

热门文章

相关标签