ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

9月杂题

2022-09-03 17:05:16  阅读:67  来源: 互联网

标签:复杂度 枚举 lt 序列 杂题 最大值 dp


1. LIS with Stack

difficulty 非常恐怖的题,但是远没有这么难。

考虑对于确定的序列 \(a_1,a_2,...,a_n\) 来说,如何判断 \(a\) 能否栈排序。

容易发现 \(a\) 可以栈排序的充要条件是不存在 “\(2-3-1\)” 型的子序列,即不存在三个位置 \(i\lt j\lt k\) 满足 \(a_k\lt a_i\lt a_j\)。

如果我们从前往后地进行 dp,则很难维护所需要的内容。

联想到笛卡尔树,我们可以想到区间 dp:设 \(f(l,r,x,y)\) 是 \([l,r]\) 这一段区间,最长的,每个数都在 \([x,y]\) 范围内的合法序列长度。

转移的时候,枚举最大值的位置,然后枚举左侧的最大值,即可推出右侧的最小值,因为 \(n\) 与值域同阶,所以复杂度可以视作 \(O(n^6)\)。

P.S. 容易发现,容易优化到 \(O(n^5)\) 的复杂度;另外,本题的计数版本也是类似的做法。

记录

标签:复杂度,枚举,lt,序列,杂题,最大值,dp
来源: https://www.cnblogs.com/Cry-For-theMoon/p/16653000.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有