Loading

摘要: CF208E Blood Cousins 线段树合并 考虑把询问离线,转化题意,也就是求 \(v\) 的 \(p\) 级祖先有多少个 \(p\) 级儿子,那么询问的答案就是 「\(p\) 级祖先有多少个 \(p\) 级儿子数量 - 1」(减去自己)。\(p\) 级祖先可以倍增找到。 我们可以维护根节 阅读全文
posted @ 2024-03-30 14:32 Fire_Raku 阅读(19) 评论(0) 推荐(0) 编辑
摘要: P4556 [Vani有约会] 雨天的尾巴 /【模板】线段树合并 在这题里面讲一下线段树合并。顾名思义就是把多个线段树合并成一个。 显然完全二叉线段树(也就是普通线段树)是无法更高效的合并的,只能把所有节点加起来建个新树。但是在动态开点线段树中,有时候一个树只有几条链,这时候我们就是可以使用线段树合 阅读全文
posted @ 2024-03-30 10:14 Fire_Raku 阅读(3) 评论(0) 推荐(0) 编辑
摘要: P8162 [JOI 2022 Final] 让我们赢得选举 upd 2024.11.14 贪心+dp 看完题目,觉得挺难。随着时间推移,协作者们可能在不同位置,怎么考虑? 如果考虑协作者们一起做事,会不会最优呢?事实证明是会的。所以同一时刻有且只有一个州在演讲。这就简化了思考量。 现在怎么考虑演讲 阅读全文
posted @ 2024-03-29 13:00 Fire_Raku 阅读(24) 评论(0) 推荐(0) 编辑
摘要: CF786B Legacy 线段树优化建边。 首先 \(O(n^2)\) 建边会 \(MLE\),于是考虑优化。对于区间建边,我们可以用线段树优化建边。本质是用线段树上延迟标记的性质,可以先把边建在更大的节点上。 具体的,考虑维护两棵线段树,第一颗父亲向儿子连 \(0\) 边,表示大区间到小区间无代 阅读全文
posted @ 2024-03-27 22:01 Fire_Raku 阅读(17) 评论(0) 推荐(0) 编辑
摘要: P9130 [USACO23FEB] Hungry Cow P 动态开点线段树+线段树二分 考虑线段树。 首先区间范围是 \([1,10^{14}]\),而需要的点只有 \(n\log n\) 个,所以需要用到动态开点线段树。 考虑合并,需要维护每个区间留下的稻草 \(left\) 和还没填的空的数 阅读全文
posted @ 2024-03-27 21:00 Fire_Raku 阅读(37) 评论(0) 推荐(0) 编辑
摘要: P5324 [BJOI2019] 删数 转化条件+线段树 由于值域不大,并且删数操作跟序列顺序无关,只和每个数的出现次数有关,考虑在值域上分析删数操作。发现对于每一个值 \(i\) 可以抽象为覆盖了 \([i-buc_{i}+1,i]\) 的区间。要使数列删空,就要让 \([1,n]\) 被填满。这 阅读全文
posted @ 2024-03-24 20:37 Fire_Raku 阅读(17) 评论(0) 推荐(0) 编辑
摘要: CF1420D Rescue Nibel! 首先要发现一个性质:如果一些线段有交集,那么交集一定是条线段,并且一定有其中一条线段的左端点是交集的左端点。 所以方案可以转化为求其中一条线段的左端点是交集的左端点的方案数。 这启发我们枚举每个点作为交集的左端点,计算至少有一条线段的左端点是这个点的方案数 阅读全文
posted @ 2024-03-24 11:13 Fire_Raku 阅读(6) 评论(0) 推荐(0) 编辑
摘要: CF1861C Queries for the Array 不太一样的写法,感觉比较容易理解一点。码量也比较短。 首先我们要发现:一个序列如果目前是升序的,那么它不管删多少个数(中间不再加数),最终还是升序的;如果目前不是升序,那么不管加多少个数,最终也不是升序。 这启发我们用两个数组 \(up_i 阅读全文
posted @ 2024-03-24 11:08 Fire_Raku 阅读(12) 评论(0) 推荐(0) 编辑
摘要: P9755 [CSP-S 2023] 种树 首先,容易看出单调性,可以对最少天数二分。转为判定性问题后,我们思考如何判定。对于每棵树,都可以从刚种下长到最后一天。我们由此可以写出 \(calc(i,l,r)\) 表示第 \(i\) 棵树从第 \(l\) 天长到第 \(r\) 天的高度。 \(calc 阅读全文
posted @ 2024-03-24 10:59 Fire_Raku 阅读(265) 评论(0) 推荐(1) 编辑
摘要: P9837 汪了个汪 人类智慧题,虽然看懂了,但还是想不出来。 考虑正解。\(n\) 个不同的数的无序二元组有 \(\dfrac{n(n-1)}{2}\) 个,而在棋盘上出现的无序二元组也有 \(\dfrac{n(n-1)}{2}\) 个,这说明我们必须不重不漏的把所有无序二元组都放进棋盘。 对于构 阅读全文
posted @ 2024-03-24 10:58 Fire_Raku 阅读(8) 评论(0) 推荐(0) 编辑