摘要: 发现一个神奇的事实:显然不限制交换次数可以实现交换任意字符。 因此可以直接判断字符集是否相等。 在考虑哪些地方可以交换。 根据题意可知可以交换的区间为 \([1,n - k]\) 以及 \([k + 1,n]\)。 不能交换的区间是静态的,所以判断是否相等即可。 代码实现很简单,就不给出了。 阅读全文
posted @ 2024-02-27 18:12 ChiFAN鸭 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 写了一小时结果被卡常了(笑。 考虑新加入一个数什么时候会产生贡献,或者什么时候不会产生贡献。 发现当一个数的位置与他前一次出现时的位置所构成的区间内假若有一个比它小的数那么就不得不对这个数新进行一次操作而不能共用。 又因为询问一个值域范围内的贡献,所以考虑把这个范围内最大的小于这个数本身的数找出来就 阅读全文
posted @ 2024-02-27 18:12 ChiFAN鸭 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 既然是求最大值而且有收益有代价,所以考虑建立一个最大权封闭子图模型。 收益 正的美味值是收益,所以假若 \(d_{i,j} \geq 0\) 则建边 \((s,pos_{i,j},d_{i,j})\)。 代价 负的美味值是代价,所以假若 \(d_{i,j} < 0\) 则建边 \((pos_{i,j 阅读全文
posted @ 2024-02-27 18:12 ChiFAN鸭 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 其实很简单,把之前随机数据的解法中维护块内数据的数据结构换成约束 RMQ,这样子复杂度 严格 单点修改 \(O(\sqrt n)\),区间查询 \(O(1)\),线性空间。 唯一的问题是常数太大了,有 \(4\) 倍常数。 #include <bits/stdc++.h> using namespa 阅读全文
posted @ 2024-02-27 18:12 ChiFAN鸭 阅读(23) 评论(0) 推荐(1) 编辑
摘要: \(x = 2^k\) 是好做的,每次以 \(2^{k-1}\) 为因数即可。 对于其他情况,考虑每次让 \(x\) 减去其二进制下最低位的 \(1\) 直至变成 \(2^k\)。 这种策略下显然每个数只会在以上两个大步骤下取到,故每个数使用不超过 \(2\) 次。 同时操作次数在 \(O(\log 阅读全文
posted @ 2024-02-27 18:11 ChiFAN鸭 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 考虑把每个字符串的前 \(k\) 位和后 \(k\) 位看成点,字符串看成边,那么一个字符串前缀后缀至少有一个是相似群体的前缀后缀,看成这条边的两个端点至少有一个被选中。 那么这就变成了一个最小点覆盖问题。 考虑匈牙利算法算出答案,然后考虑如何构造答案。 考虑右边没有被匹配的点,选中这些点向左边连的 阅读全文
posted @ 2024-02-27 18:11 ChiFAN鸭 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 考虑把贡献摊到每个点上计算,每个点带来的贡献实际上是经过它的路径并大小,算完求和之后在除以 \(2\) 就得到了答案。 考虑怎么计算路径并大小。 考虑这样一个办法,将所有路径的起始点和终点按照 DFS 序排序,相邻两点(包括第一个会最后一个点)在树上的距离之和便是其路径并大小的两倍。原理的话便是路径 阅读全文
posted @ 2024-02-27 18:11 ChiFAN鸭 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 学长给我们讲了就顺便来写一篇题解。 首先最优解一定包括根,不然一定可以从当前根连接一条到根的链。 然后考虑假若最大导出子树深度为 \(n\) 则显然可以把深度为 \(n\) 的节点全部选上,然后每个节点可以去选择它的父亲,重复这样的操作,一直到根,也可以在某一层多选节点。 因此考虑记录每个深度有多少 阅读全文
posted @ 2024-02-12 00:36 ChiFAN鸭 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 整体二分时遍历数组从 \(mid\) 开始的最大值再合并就可以了,时间 \(O(n \log n + q)\) 空间 \(O(n)\)。 #include<bits/stdc++.h> //#define int long long //#define lowbit(x) (x&-(x)) usin 阅读全文
posted @ 2024-02-12 00:36 ChiFAN鸭 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 原理 在随机数据下,把原序列分成 \(\sqrt n\) 个块,维护每个块的前缀后缀最大值,那么,在随机询问下,对于在一个块中的询问,暴力查询。 复杂度 概率 $ n ^ {-\frac{1}{2}}$ ,复杂度 \(O(\sqrt n)\) ,均摊 \(O(1)\) 。 对于在不同块中的询问,对连 阅读全文
posted @ 2024-02-12 00:36 ChiFAN鸭 阅读(26) 评论(0) 推荐(0) 编辑