01 2025 档案
摘要:题面 题目传送门 前言 绿题,爆切我 世界,遗忘我 正文 这是一个经典操作:找到一个值为为最大值的最大区间长度/区间个数 那么在单调栈里这个数的前一个数就是他的左边界限,反过来做一下就能确定右端点 最小值一样 直接贴一个很清晰的题解代码 代码 #include<iostream> #include<
阅读全文
摘要:题面 题目传送门 前言 呜呜呜,云落好菜 正文 圆规正传 我们枚举 那么 一定是 的后缀最小值的位置 并且由于 要是区间最大值,也就是说,第二个后缀最大值的位置一定在 左面 那么我们就通过 第二个后缀最大值的位置,二分出最靠右的 \(A
阅读全文
摘要:题面 题目传送门 前言 晦涩的题意 正文 后缀最大值? 如果一个数在你后面还比你大 那么你无论如何都成为不了后缀最大值 那么维护一个单调递减的单调栈即可 注意要输出后缀最大值下标的异或和 迷惑的值域之 代码 #include<iostream> #include
阅读全文
摘要:题面 题目传送门 前言 思维难度:紫- 代码难度:黑 正文 对于每一种约束,都可以将其抽象为一条有向边 注意到有 个约束,并且对于图上的每一个结点,都有且仅有一条出边 所以整张图形如内向基环树 建模建完了,该上算法了 考虑拆分成若干个子问题回答 Subtask 1 所谓的“暴力”分 因为
阅读全文
摘要:题面 题目传送门 前言 前置知识:DP,线段树合并 口齿不清的云落又双叒叕上线了…… 第四道黑题~ 正文 集训期间,shr 说:“这是一道线段树合并优化 DP” 其实 DP 是很好想到的,毕竟求方案数嘛~ 但是怎么 DP,或者说怎么设置状态并转移? 比较朴素的做法:依照题意,列出状态 设 \(f_{
阅读全文
摘要:题面 题目传送门 前言 试图口述讲解但失败的云落 正文 前置芝士:线段树合并 这个是相对来说比较好理解的 对于待合并的两棵线段树,我们递归性地将每个节点合并 比如这道题我们需要求某一个最值对应的种类 所以比较容易想到,用线段树维护四个信息 左子树编号 右子树编号 多种救济粮的
阅读全文
摘要:题面 题目传送门 前言 无聊的暴力模拟 正文 一个红题就不整调和级数了 代码 #include<iostream> using namespace std; double sum; int main(){ int k; cin>>k; for(int i=1;true;i++){ sum+=(1.0
阅读全文
摘要:题面 题目传送门 前言 云落的搜索能力实在是太差劲了 正文 其实许多杂七杂八的做法也能过掉这个题 但我们还是选用搜索较好 由题意,矩形数量是给定的 很显然有两种搜索方式 一种是枚举矩形,扩展点(该矩形包含哪些点) 一种是枚举点,扩展矩形(该点属于哪个矩形) 矩形的位置根本无从下手,故舍弃
阅读全文
摘要:题面 题目传送门 前言 字符串简单处理 + 迭代加深搜索 正文 本题一眼搜索 题解区好像都是广搜(或者 meet in the middle 之类的) 云落不大喜欢 BFS,所有我们选择 DFS 题意要求我们去求一个最小变换次数,即搜索树上的最小深度 很容易想到迭代加深搜索 若干个难点: 区别于朴素
阅读全文