Date:2022.03.23
题目描述
给定一个长度为 NN(NN 为偶数)的序列,问能否将其划分为两个长度为 N / 2N/2 的严格递增子序列。
输入格式
若干行,每行表示一组数据。
对于每组数据,首先输入一个整数 NN,表示序列的长度。之后 NN 个整数表示这个序列。
输出格式
输出行数与输入行数相同。
对于每组数据,如果存在一种划分,则输出 Yes!,否则输出No!。
输入输出样例
输入 #1复制
6 3 1 4 5 8 7
6 3 2 1 6 5 4
输出 #1复制
Yes!
No!
说明/提示
【数据范围】
共三组数据,每组数据行数<=50,0 <= 输入的所有数 <= 10^9
第一组(30%):N <= 20
第二组(30%):N <= 100
第三组(40%):N <= 2000

思路①:易得其中一个串必定以 a [ n ] a[n] a[n]结尾,因此打表出所有以它结尾且长度为 n / 2 n/2 n/2的严格上升序列,check所有的补集。(可我不会求啊…也没想到复杂度合理的做法)
思路②:看了题解,我们来一步一步推一下怎么得到的二维式子。
我们要讨论两个序列,最暴力的想法是 f [ i ] [ j ] [ p ] [ q ] f[i][j][p][q] f[i][j][p][q]:讨论前 i i i个元素,有一个长度为 j j j的上升序列,另一个长度为 i − j i-j i−j且也严格上升,两个序列结尾分别为 p p p、 q q q。
首先不难发现合法解的两个序列中必然有一个序列是以最后一个元素结尾的,因此可去掉一维。由此, f [ i ] [ j ] [ p ] : f[i][j][p]: f[i][j][p]:讨论前 i i i个元素,其中有 j j j个在1号串中,有 i − j i-j i−j个在2号串中。且1、2号串中有一个以 a [ i ] a[i] a[i]结尾,另一个以 a [ p ] a[p] a[p]结尾,属性为是否存在这样的情况。
再研读,发现使得当前值尽可能小才能使后续有更多情况成立,而 a [ i ] a[i] a[i]是一个串的结尾不能变化,另一个串的结尾是 a [ p ] a[p] a[p],因此我们贪心,使 a [ p ] a[p] a[p]尽可能小,而不用每次存下另一个串结尾 p p p的值。由此, f [ i ] [ j ] : f[i][j]: f[i][j]:前 i i i个元素,有 j j j个在1号串中,因此 i − j i-j i−j个在2号串中;且1号串结尾为 a i a_i ai​,此时 f [ i ] [ j ] f[i][j] f[i][j]表示2号串结尾最小为多少。(这一步好玄学)
因此状态转移就是讨论下一个元素加到哪个串中能更新其它的 f [ i ] [ j ] f[i][j] f[i][j]。
① a [ i ] < a [ i + 1 ] 时 : a[i]<a[i+1]时: a[i]<a[i+1]时: f [ i + 1 ] [ j + 1 ] = m i n ( f [ i + 1 ] [ j + 1 ] , f [ i ] [ j ] ) ; f[i+1][j+1]=min(f[i+1][j+1],f[i][j]); f[i+1][j+1]=min(f[i+1][j+1],f[i][j]);【相当于 a [ i + 1 ] a[i+1] a[i+1]直接加在1号串后面】
② f [ i ] [ j ] < a [ i + 1 ] 时 : f[i][j]<a[i+1]时: f[i][j]<a[i+1]时: f [ i + 1 ] [ i − j + 1 ] = m i n ( f [ i + 1 ] [ i − j + 1 ] , a [ i ] ; ) f[i+1][i-j+1]=min(f[i+1][i-j+1],a[i];) f[i+1][i−j+1]=min(f[i+1][i−j+1],a[i];)【相当于 a [ i + 1 ] a[i+1] a[i+1]直接加在了第2号串后面】

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 2010,INF=0x3f3f3f3f;
int n,m,a[N],f[N][N];
int main()
{while(cin>>n){for(int i=1;i<=n;i++) cin>>a[i];a[n+1]=0;memset(f,0x3f,sizeof f);f[1][1]=-1;for(int i=1;i<=n;i++)for(int j=1;j<=i;j++){if(f[i][j]==0x3f3f3f3f) continue;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-j+1]=min(f[i+1][i-j+1],a[i]);}if(f[n][n/2]!=INF) cout<<"Yes!\n";else cout<<"No!\n";}return 0;
}

洛谷P1410 子序列【玄学DP】【绿】相关推荐

  1. 洛谷 P1410 子序列(DP)

    这题的题解的贪心都是错误的...正解应该是个DP 考虑有哪些有关的条件:两个序列的当前长度, 两个序列的末尾数, 把这些都压进状态显然是会GG的 考虑两个长度加起来那一位的数一定是其中一个序列的末尾, ...

  2. 洛谷--橙色百道DP总结

    最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结. 大概分为三类 第一类,九大背包及其衍生 第二类,经典DP模型,如LCS,LIS等 第三类,实际问题背景的普通,环形,树上D ...

  3. Educational Codeforces Round 81 (Rated for Div. 2) F.Good Contest \ 洛谷 划艇 组合 计数dp

    cf传送门 P3643 [APIO2016]划艇 文章目录 题意: 思路: 题意: aia_iai​在[li,ri][l_i,r_i][li​,ri​]等概率随机选一个数,求aaa数组不增的概率. 思 ...

  4. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 "低价购买"这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:"低价购买:再低价购买".每次你购买一支股 ...

  5. 洛谷P1244 青蛙过河 DP/思路

    又是一道奇奇怪怪的DP(其实是思路题). 原文戳>>https://www.luogu.org/problem/show?pid=1244<< 这题的意思给的挺模糊,需要一定的 ...

  6. 洛谷 P2657 (数位DP)

    ### 洛谷 P2657 题目链接 ### 题目大意:给你一个数的范围 [A,B] ,问你这段区间内,有几个数满足如下条件: 1.两个相邻数位上的数的差值至少为 2 . 2.不包含前导零. 很简单的数 ...

  7. 洛谷 Golden Sword(dp,优先队列优化【含板子】)|| 补充练习:洛谷 跳房子

    题目链接: 「SWTR-03」Golden Sword - 洛谷 思路: 设表示放第i个原料,锅里共有 j 个时的耐久度之和. 容易知道dp方程为,其中 这样就可以写出暴力dp的代码如下:(需要枚举i ...

  8. layui树形父子不关联_DP专题7 | 没有上司的舞会 洛谷1352(树形DP)

    高能预警:这是一篇超过5分钟的学习文章,暑假了可以多学会 本篇继续咱们的DP专题,树形DP入门.动态规划每一个类型的DP都是深坑,期望童鞋们自己在这个系列的基础上多花时间进行拓展,学习愉快~ 在讨论树 ...

  9. 【洛谷P4719】动态DP【LCT】【矩阵】

    之前的后缀平衡树其实没完,只是过于鬼畜就弃了 传送门 题意:带修改点权的最大独立集 N≤1e5N \leq 1e5N≤1e5 一个没啥用的模板,不过适合练习LCT 先写出方程 f(u,0)=∑v∈so ...

最新文章

  1. 「小程序JAVA实战」小程序视频上传方法的抽象复用(57)
  2. ZW网络团队及资源简介
  3. PyTorch cat
  4. OCS 2007 R2将前端加入到企业版池
  5. SQLSERVER自动定时(手动)备份工具
  6. 云炬随笔20180607
  7. 1.2 决策树代码实现
  8. python fieldnames_csvreader.fieldnames在python中未被识别为csv reader对象的属性
  9. java的jsp要下载吗_jsp、java下载附件
  10. 手册如何看运放的db_如何处理金属离子与配体之间的配位键?
  11. 博途软件中多重背景块的建立_如何正确的理解西门子博途中的—单个实例和多重实例的区别...
  12. 中英文搜索引擎收录口整理
  13. wegame饥荒一直登录中_经历网游和单机发行的左右摇摆后,Wegame决定“我全都要”...
  14. 第一次使用博客,略激动。
  15. OBS( Open Broadcaster Software )录制视频黑屏问题录制方法
  16. 【智能控制实验】基于MATLAB的BP神经网络PID控制器设计
  17. protel常用元件封装大全
  18. 苹果id是什么格式的_苹果用户福利 | 史上最简利用itunes抓包教程只需4步!!!...
  19. 我们梳理了国内外逾80家公司,发现6大关键趋势 | 36氪眼健康行业报告
  20. NC协议服务器端库登陆失败,NC数据库日常维护

热门文章

  1. 【DP】 FZU 2204 7 成环
  2. java 整合MQTT客户端和Windows安装服务端1
  3. 为入门运维的你送上 12 个 Git 的使用技巧!
  4. 【毕业设计】 python小游戏设计 -吃豆人小游戏
  5. Centos7.5使用本地iso文件创建本地源,实现安装源中已经打包存在的软件
  6. (PC+WAP)带手机端pbootcms模板类网站
  7. 2021级高考成绩查询四川绵阳,2021绵阳市地区高考成绩排名查询,绵阳市高考各高中成绩喜报榜单...
  8. 计算机组成原理x移,计算机组成原理移位运算
  9. 笔算登月轨道的NASA传奇科学家、[人型计算机]凯瑟琳·约翰逊去世
  10. linux表示隐藏文件的格式,文件查看 -- ls