随笔分类 - 学习总结
摘要:P11052 [IOI 2024] 象形文字序列 做一个题的通用思路,就是考虑问题的若干特例,即找部分分做法,然后做“启发式搜索”找最有思路的。 因为最长公共子序列是 NP-Hard,这里要 所以我们不能先求出最长公共子序列再判断。 考虑 是一个排列的部分分,那么考
阅读全文
摘要:CF1286D LCC 这个题还是比较简单的,考虑拆贡献,将所有碰撞情况拿出来考虑其出现的概率,显然只有相邻的。 按照时间排序。假设我们钦定了 这对碰撞为最先碰撞的,那么需要满足若干条件: 例如若 向右, 不能向左等,因为限制只存在于相邻两位,我们可
阅读全文
摘要:P3514 [POI2011] LIZ-Lollipop 我们需要重点利用值只有 的性质。我们可以用 将 分段模型化题目。 一个想法是选最左边的 为左端点,往右二分到第一个 的位置,如果是 就将左端点右移。 但是
阅读全文
摘要:新年好,各位。 P7054 [NWRRC2015] Graph 我们假设 ,那么我们求最小字典序就是通过一个小根堆维护当前入度为 的点,每次取出最小。 那么如果 ,我们就可以阻止“取出最小”这个过程,也就是给当前最小这个点一个入边。 我们重复给当前最小
阅读全文
摘要:实在是难以相信我竟然又来到了机房训练。 P10141 [USACO24JAN] Merging Cells P 一个简单的 表示最后如果剩下的是 ,当前 所处的区间是 的概率。 区间往外拓展当前仅当当前 区间
阅读全文
摘要:这大概是最后一篇近期练习了。 P8365 [LNOI2022] 吃 与 CF2023F 很相似,对于 分类, 相同的最多只会选 大的前 用于加。 所以考虑 dp,设 表示少乘了 的贡献后最多
阅读全文
摘要:CF1442D Sum 很显然可以设 表示当前处理了前 个数组,选了 个数的最大值,然而转移需要 。 考虑挖掘题目数据元素非降的性质。猜个结论呢? 因为元素是逐渐变大的,所以越往后选就一定越优。所以,至多只有一个数组没有被选完。 这个很
阅读全文
摘要:CF1993F2 Dyn-scripted Robot 这个题非常的一眼,首先翻转路径的操作可以转化为翻转矩形。 也就是,如果触碰了边界不改变行走的路径,而是继续走下去,只不过对应的位置需要对称回去。 那么,计算走到 的次数,也就是在反转后的坐标系里的 \((2k_1w,2k_2
阅读全文
摘要:CF1261F Xor-Set 我们把 集合分别处理,把其拥有的区间放到字典树上,就会拆成 个区间。 考虑其两两组合,每个区间都是形如前面若干位确定,后面 位任意。 两个区间组合,就是取 更大的那个后面都是任意的,前面的若干位合并
阅读全文
摘要:CF461E Appleman and a Game 我们可以先建出 SAM,设 表示当前处理到 位,SAM 上到 节点当前最小答案。 由于答案具有单调性,考虑二分答案,也就是二分 ,考虑如何检验最短的串是否不超过 。
阅读全文
摘要:CF1930E 2..3...4.... Wonderful! Wonderful! 我们相当于计算 串的个数, 表示删除了, 表示还保留着。 考虑 串合法的条件:首先 的个数为 的倍数;其次存在 使得其左侧和右侧
阅读全文
摘要:P5044 [IOI2018] meetings 会议 对于 的数据,我们每个点维护单调栈,其代价为 的时候,取的位置是一个区间。 很显然已经有一个莫队算法,支持区间加,区间查询即可。然而不优。 其实单调栈与笛卡尔树是相似的,考虑建出笛卡尔树。 我们假设就对
阅读全文
摘要:P3349 [ZJOI2016] 小星星 我们想到状压 dp,设 表示 子树由 集合的点构成,根节点是 的方案数。 这样的话,转移需要枚举子集,是过不了的。这里应该使用容斥。 尝试把编号是一个 的排列这一条
阅读全文
摘要:CF1677E 本题转化之后就是矩阵覆盖,矩阵查询被覆盖的点数。现在将讲解线段树如何实现这个。 扫描线的话将转化为求区间为 个数的历史和,历史和是很难的。 注意到我们每次把当前序列加入历史和去也就是把区间为 的位置加 。 所以我的想法是在线段树节点上加一个标记 tm
阅读全文
摘要:AGC060C 由于 分别位于树的左链和右链,所以我们不妨把这两个链剥出来。 考虑从小到大加数,从根开始向叶子加。 不妨设 表示左链加 个数,右链加 个数,并且最后分别是 先的概率。 传统外向树拓扑序是 \(n!\prod
阅读全文
摘要:P3488 [POI2009] LYZ-Ice Skates 我们对于鞋码为 的人,贪心地,显然先把鞋小的给他穿。 所以就有了一个暴力的检验方法:从左往右扫,并对应修改。但是这样太慢。 这是一个二分图匹配问题,考虑 Hall 定理。 对于任意 ,当
阅读全文
摘要:P6619 [省选联考 2020 A/B 卷] 冰火战士 对于一次战斗,冰火两方能量较少的那方会耗尽,答案为这个能量的两倍。 我们就是要找一个中间值,左边的冰战士能量值之和与右边火战士能量值之和最小值最大。 离散化,我们可以二分找到第一个冰的前缀和大于火的后缀和的位置 ,答案为 \(p-1
阅读全文
摘要:CF1924D 先考虑一个串的最长合法序列,维护一个栈,答案就是右括号加入时栈非空的次数。 我们看成从 走到 ,发现没被匹配的右括号个数就是 的最大值。 要想只有 个匹配,那么要和 “相切”。 若 \(f(k)
阅读全文