上一页 1 2 3 4 5 6 7 ··· 14 下一页
摘要: 有关“序列、区间里、数值的出现次数”的问题,一般都要想到用莫队来维护。莫队后,往往就是要维护一个序列,支持单点修改,然后回答各种各样的询问。因为外层套了莫队,所以需要 O(1) 的单点修改,而询问则可以较慢。一般的数据结构(如线段树、平衡树),修改和查询都是 O(log n) 的,往往难以胜任。此时有一些巧妙的解决方法。 阅读全文
posted @ 2021-02-04 10:55 duyiblue 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 首先想到把 k/2 个元素分为一块,不同块里元素的去重,可以暴力枚举每一对块,将它们一起加入队列。搞一对块就清一次队列,有点浪费。考虑把块连成一张有向图,那么每次可以顺着图上的路径一直走。问题转化为将图划分为尽可能少的路径,使得每条边恰属于一条路径。发现扩充为完全图后,可以得到更优秀的划分方案。 阅读全文
posted @ 2021-02-03 21:31 duyiblue 阅读(307) 评论(0) 推荐(3) 编辑
摘要: 对值域分块,每块内按原序列里的位置排序。查询时把每块内下标在 [l,r] 之间的提取出来,依次合并。问题转化为预处理出每块内的所有区间对应的集合。可以在值域上分治。每次把小于等于 mid 的元素和大于 mid 的元素,按原顺序分在两边,递归求解后,再把两边的答案合并。 阅读全文
posted @ 2021-02-03 01:06 duyiblue 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 构造题, 交互题选做。还会选入一些其他妙妙题 阅读全文
posted @ 2021-02-02 20:49 duyiblue 阅读(2457) 评论(23) 推荐(12) 编辑
该文被密码保护。 阅读全文
posted @ 2021-01-31 22:37 duyiblue 阅读(6) 评论(0) 推荐(1) 编辑
摘要: 记两次查询的节点分别为 a, b,两次查询得到的结果分别为 d1, d2。我们依次枚举 a, d1, b, d2。枚举 a, d1 后,对每个点 v,预处理出罪犯第二天来到点 v 的概率 p(v)。这样就能很方便地对一组 (a, d1, b, d2) 计算答案。发现对同一个 a,在所有 d1 下,p(v)!=0 的点 v 数量是 O(n) 的。所以这四重枚举的时间复杂度,实际是 O(n^3)。 阅读全文
posted @ 2021-01-29 22:28 duyiblue 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 先考虑期望的定义,发现不好计算。于是补集转化,发现转化后可以通过简单的树形 DP 解决。添加叶子时,只需要更新它祖先的 DP 值。并且在精度允许的范围内,我们只需要更新距离不超过某个阈值的祖先。 阅读全文
posted @ 2021-01-22 22:01 duyiblue 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 很神的 DP 题!!!在 N 个关键点之间,做一个大 DP。大 DP 的转移系数是用另一个朴素的小 DP 预处理出来的。而这个朴素的小 DP 可以用矩阵快速幂优化! 阅读全文
posted @ 2021-01-20 11:39 duyiblue 阅读(96) 评论(1) 推荐(2) 编辑
摘要: 涉及到无穷大的概念,就可以抛弃一些传统的 DP 做法。使用数学的推导。本题的状态设计和转移方式,都是非常巧妙的。 阅读全文
posted @ 2021-01-19 12:49 duyiblue 阅读(253) 评论(0) 推荐(2) 编辑
摘要: 考虑实现一个核心函数:求出某个后缀,花费不超过 c 时,字典序第 k 小的结果序列,的第一次操作。实现这个函数后,通过调用不超过 c 次该函数,可以求出答案。我们对后缀做一些预处理,就可以快速实现这个核心函数。预处理需要观察一些性质,然后用 deque 实现。 阅读全文
posted @ 2021-01-11 13:57 duyiblue 阅读(732) 评论(1) 推荐(5) 编辑
摘要: 区间 DP。朴素想法是用第三维,记录区间内的赢家是谁。这样做复杂度是 O(n^5) 的。大胆地考虑,如果只记录左/右端点是赢家的情况,是否可以转移呢?答案是肯定的! 阅读全文
posted @ 2021-01-09 15:04 duyiblue 阅读(345) 评论(4) 推荐(0) 编辑
摘要: 很神的数据结构题!!!先做前缀和等初步转化,可以变成关于两个序列、区间最大、最小值的问题。枚举 r,用单调栈维护出使其中一个序列合法所需要做的操作。对另一个序列,可以贪心地在区间端点处进行操作。找出最小的、合法的区间端点,可以在线段树上二分。但这个线段树维护的信息比较特殊,要用到类似于《楼房重建》这题里,log^2 线段树的技巧。 阅读全文
posted @ 2021-01-05 14:30 duyiblue 阅读(308) 评论(7) 推荐(3) 编辑
摘要: 树形 DP。把第二维搬到线段树上,然后线段树合并。这是常见的套路(NOI2020 d1t2),但在本题里会 MLE。进一步优化,需要根据题目性质(有效 DP 值的单调性),将线段树改为 set,做启发式合并。 阅读全文
posted @ 2021-01-03 18:13 duyiblue 阅读(311) 评论(0) 推荐(1) 编辑
摘要: 根号分治。对序列里小于 sqrt(n) 的数和大于等于 sqrt(n) 的数,用两种不同的 DP,分别计算出方案数,最后卷起来,得到答案。 阅读全文
posted @ 2021-01-02 07:08 duyiblue 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 分情况讨论。枚举最终相遇的环,然后对其他环做个背包。用 CSP2019 d2t1 的套路设计 DP 状态,只记录二者的差值。 阅读全文
posted @ 2020-12-29 22:35 duyiblue 阅读(155) 评论(1) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 14 下一页