洛谷 P1410 子序列(DP)
这题的题解的贪心都是错误的...正解应该是个DP
考虑有哪些有关的条件:两个序列的当前长度, 两个序列的末尾数, 把这些都压进状态显然是会GG的
考虑两个长度加起来那一位的数一定是其中一个序列的末尾, 而我们要末尾的数尽量小, 所以完全可以把这个DP缩成两维
设f[i][j]为当前选到第i位, a[i]选入第一个序列, 则末尾为a[i], 第一个序列长度为j, 则第二个序列长度为i-j时第二个序列末尾的数最小为多少。
则有 if(a[i]<a[i+1]) f[i+1][j+1]=min(f[i+1][j+1], f[i][j])
if(f[i][j]<a[i+1]) f[i+1][i+1-j]=min(f[i+1][i+1-j], a[i]) (此时第一个序列和第二个序列互换了)
互换的思想真的非常喵喵哇....第一次见到T T
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=, inf=1e9;
int n;
int f[maxn][maxn], a[maxn];
inline void read(int &k)
{
int f=; k=; char c=getchar();
while(c<'' || c>'') c=='-'&&(f=-), c=getchar();
while(c<='' && c>='') k=k*+c-'', c=getchar();
k*=f;
}
inline int min(int a, int b){return a<b?a:b;}
int main()
{
while(scanf("%d", &n)!=EOF)
{
for(int i=;i<=n;i++) read(a[i]);
for(int i=;i<=n;i++) for(int j=;j<=i;j++) f[i][j]=inf;
for(int i=;i<n;i++)
for(int j=;j<=i;j++)
{
if(a[i]<a[i+]) f[i+][j+]=min(f[i+][j+], f[i][j]);
if(f[i][j]<a[i+]) f[i+][i-j+]=min(f[i+][i-j+], a[i]);
}
printf("%s\n", (f[n][n>>]!=inf)?"Yes!":"No!");
}
}
洛谷 P1410 子序列(DP)的更多相关文章
- 洛谷P1410 子序列
		题目描述 给定一个长度为N(N为偶数)的序列,问能否将其划分为两个长度为N/2的严格递增子序列, 输入输出格式 输入格式: 若干行,每行表示一组数据.对于每组数据,首先输入一个整数N,表示序列的长度. ... 
- 洛谷教主花园dp
		洛谷-教主的花园-动态规划 题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价 ... 
- 洛谷 p6858 深海少女与胖头鱼 洛谷月赛 期望dp
		洛谷10月月赛 2 t2 深海少女与胖头鱼 题目链接 参考资料:洛谷10月赛2讲评ppt; 本篇题解考完那天就开始写,断断续续写到今天才写完 本题作为基础的期望dp题,用来学习期望dp还是很不错的 ( ... 
- 洛谷T21776 子序列
		题目描述 你有一个长度为 nn 的数列 \{a_n\}{an} ,这个数列由 0,10,1 组成,进行 mm 个的操作: 1~l~r1 l r :把数列区间 [l, r][l,r] 内的所有数取反. ... 
- 落谷 P1410 子序列
		题目链接. Discription 给定长度为 \(n\) 的序列 \(A\)(\(n\) 为偶数),判断是否能将其划分为两个长度为 \(\dfrac{N}{2}\) 的严格递增子序列. Soluti ... 
- 洛谷P4719 动态dp
		动态DP其实挺简单一个东西. 把DP值的定义改成去掉重儿子之后的DP值. 重链上的答案就用线段树/lct维护,维护子段/矩阵都可以.其实本质上差不多... 修改的时候在log个线段树上修改.轻儿子所在 ... 
- 2018普及组摆渡车洛谷5017(dp做法)
		啦啦啦,这一篇是接上一篇的博客,上一篇是记忆化搜索,而这一篇是dp+前缀和小技巧 dp这种玄学做法我这种蒟蒻当然不是自己想出来的,参考https://blog.csdn.net/kkkksc03/ar ... 
- 洛谷P3975 跳房子 [DP,单调队列优化,二分答案]
		题目传送门 跳房子 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 n 个格子,这些格子都在同一 ... 
- 洛谷1373(dp)
		常规线性dp,需要时就加一维.\(dp[i][j][t][s]\)表示在点\((i,j)\)时瓶子里剩\(t\)且为\(s\)走(0代表小a,1代表uim)时的方案数. de了半天发现是初次尝试的快速 ... 
随机推荐
- hexo部署
			title: hexo 部署(一) date: 2018-09-16 18:01:26 tags: hexo部署配置 categories: 博客搭建 hexo博客搭建 折腾了好久的时间,终于使用he ... 
- 「LeetCode」0952-Largest Component Size by Common Factor(Go)
			分析 注意到要求的是最大的连通分量,那么我们可以先打素数表(唯一分解定理),然后对每个要求的数,将他们同分解出的质因子相连(维护一个并查集),然后求出最大的联通分量即可. 这里使用了筛法求素数.初始化 ... 
- Query类型_JDBC的方法_JAVA方法_Loadrunner脚本
			数据库查询压力测试脚本 jdbc_java_查询类型接口测试 package com.test; import java.sql.Connection; import java.sql.DriverM ... 
- 简单在kubernetes中安装cadvisor
			cadvisor用于分析docker资源占用情况及性能的工具 安装命令: docker run --volume=/:/rootfs:ro --volume=/: --detach=true --na ... 
- RedHat yum源配置
			RedHat yum源配置 原本以为Redhat7 和Centos7是完全一样的,可是安装完Redhat7以后,使用yum安装软件,提示红帽操作系统未注册.在网上搜索教程,最后成功解决,解决方式是将y ... 
- Python基础灬文件常用操作
			文件常用操作 文件内建函数和方法 open() :打开文件 read():输入 readline():输入一行 seek():文件内移动 write():输出 close():关闭文件 写文件writ ... 
- Cross origin requests are only supported for protocol schemes: http, data, chrome,chrome-extension的问题
			Cross origin requests are only supported for protocol schemes: http, data, chrome,chrome-extension的问 ... 
- C# 钱数 小写 转 大写
			public class Rmb { /// <summary> /// 转换人民币大小金额 /// </summary> /// <param name="n ... 
- 2018-2019-20172321 《Java软件结构与数据结构》第五周学习总结
			2018-2019-20172321 <Java软件结构与数据结构>第五周学习总结 教材学习内容总结 第9章 排序与查找 9.1查找 查找是这样一个过程,即在某个项目组中寻找某一指定目标元 ... 
- Firefox必备的24款web开发插件
			from: 软件过滤: 排序:收录时间 | 浏览数 网页开发FireFox插件 Firebug Firebug是Firefox下的一款开发类插件,现属于Firefox的 五星级强力推荐插件之一.它集H ... 
