随笔分类 -  数据结构

摘要:Max Mex 和线段树维护直径集合一样的 trick。 思路 如果一条路径 \(a\) 包含 \([l,r]\) 权值中的所有点,另一条路径 \(b\) 包含和 \([x,y]\) 权值中的所有点构成的。 那么对于一条路径包含 \([l,r]\cup [x,y]\) 权值中的点,其端点一定在 \( 阅读全文
posted @ 2024-10-30 22:56 彬彬冰激凌 阅读(28) 评论(0) 推荐(2)
摘要:TAMAYA 挺有意思的维护题。 题面 n个小夫坐成一排,每个小夫有一个真实值vi。小夫们有m场聚会,第i次聚会会在编号为 [li, ri] 的小夫中举办。 聚会之后,这些小夫的真实值会变为他们之中的真实值的最大值。将会发生q次事件,有两类事件。 第一类事件,第x个小夫的真实值变成了y。 第二类事件 阅读全文
posted @ 2024-10-16 21:10 彬彬冰激凌 阅读(37) 评论(0) 推荐(1)
摘要:P5524 Ynoi2012 NOIP2015 充满了希望 数组开大见祖宗。 思路 利用“插入-标记-回收”这套处理函数复合的算法。 不难发现只有询问才会产生贡献,而询问的值来自于距离它最近的且能覆盖这个询问的点的覆盖操作。 可以每个询问操作保存一个 \(pre\) 指向能给这个查询位置赋值的最近的 阅读全文
posted @ 2024-08-15 15:09 彬彬冰激凌 阅读(21) 评论(0) 推荐(0)
摘要:P4688 Ynoi2016 掉进兔子洞 经典莫队加 bitset。 思路 不难发现最终答案就是: \[(r_1-l_1+1)+(r_2-l_2+1)+(r_3-l_3+1)-3\times size \]其中 \(size\) 表示 3 个区间内出现了多少个公共元素。 看到这么多区间,不妨有把区间 阅读全文
posted @ 2024-07-07 21:31 彬彬冰激凌 阅读(15) 评论(0) 推荐(0)
摘要:CF207C3 Game with Two Trees 妙到家的树上字符串问题。 约定 树 \(1\):\(t_1\)。 树 \(2\):\(t_2\)。 \(S_{1/2}(i,l)\) 为树 \(1/2\) 上节点 \(i\) 沿父亲走经过 \(l\)​ 条边所构成的字符串。 \(E_{1/2} 阅读全文
posted @ 2024-05-11 16:25 彬彬冰激凌 阅读(19) 评论(0) 推荐(0)
摘要:P3920 WC2014 紫荆花之恋P3920 WC2014 紫荆花之恋 毒瘤题目,动态点分树。 前置科技点 替罪羊树 高速平衡树(除去 fhq_treap 和 splay 之外的所有平衡树) 约定 \(dis(u,v)\) 为原树上 \(u,v\) 两点间的距离 \(siz\) 为子树大小 思路 维护一棵可以动态插入节点的点分树,有 阅读全文
posted @ 2024-04-27 21:51 彬彬冰激凌 阅读(18) 评论(0) 推荐(0)
摘要:P5311 Ynoi2011 成都七中 点分树好题,太妙了。 思路 看到树和连通块,考虑点分树。 但是从这里发现原树和点分树的联系实在太小,貌似不可做。 可以发现对于一个询问,一个点如果和 \(x\) 在一个连通块内,那么这个点到 \(x\) 的最大最小节点编号肯定都在 \([l,r]\) 这个范围 阅读全文
posted @ 2024-04-13 16:31 彬彬冰激凌 阅读(24) 评论(0) 推荐(1)
摘要:二维树状数组 模板 单点修改,子矩阵查询 暴力的把一维拓展到二维,直接然后按照一维的方法搞就OK,参考代码: void insert(int x,int y,int z) { for(int i=x;i<=n;i+=lowbit(i)) for(int j=y;j<=m;j+=lowbit(j)) 阅读全文
posted @ 2024-03-12 22:19 彬彬冰激凌 阅读(29) 评论(0) 推荐(0)
摘要:P4119 Ynoi2018 未来日记 lxl 出的题好 duliu 啊。 感谢来自 fr200110217102 的博客 题解 P4119 【Ynoi2018未来日记】。 下标分块+值域分块+并查集 其实一开始的方向应该是尝试线段树或者其它的动态维护的算法,直到时间复杂度和空间复杂度对不上,你才会 阅读全文
posted @ 2024-02-24 11:08 彬彬冰激凌 阅读(31) 评论(0) 推荐(0)
摘要:线段树合并 线段树合并可以使很多跑不过的暴力,特别是树上暴力的时间复杂度正确,与树分治的区别在于,线段树合并必须依次处理节点,但优势在于,保持了树的形态。 算法思路 引入 CF600E Lomsat gelral 使用一个数组记录该子树内的颜色出现次数。 每次每个节点暴力将儿子的信息合并到自己的数组 阅读全文
posted @ 2024-01-24 22:32 彬彬冰激凌 阅读(61) 评论(0) 推荐(0)
摘要:P7563 JOISC 2021 Day4 最悪の記者 4 (Worst Reporter 4) 线段树合并好题,通过线段树合并特别的方式优化了树形 dp。 思路 根据图中的不等关系连边建图,不难发现最后的图将会是基环树森林和普通的树的森林,我们先考虑对于一棵树要怎么办。 将 \(h_i\) 离散化 阅读全文
posted @ 2024-01-24 21:41 彬彬冰激凌 阅读(44) 评论(0) 推荐(0)
摘要:2023NOIP A层联测32 T4 红楼 ~ Eastern Dream 根号分治加分块。 Ps:分块后面真的用的多。 思路 考虑根号分治,将 \(x\) 分为 \(x \leq \sqrt n\) 的情况和 \(x>\sqrt n\) 的情况。 \(x \leq \sqrt n\) 由于这一部分 阅读全文
posted @ 2023-11-16 16:27 彬彬冰激凌 阅读(35) 评论(0) 推荐(0)
摘要:2023NOIP A层联测28 T4 小猫吃火龙果 分块题,跟赛时的一个倍增部分分做法很像。 思路 如果没有动态操作,可以设 \(dp[i][T][k]\) 为:在 \(i\) 时为 \(T(T\in{\{A,B,C}\})\),算上 \(i\) 向前 \(2^k\) 步得到的字符。 转移: \[d 阅读全文
posted @ 2023-11-10 21:50 彬彬冰激凌 阅读(35) 评论(0) 推荐(0)
摘要:2023NOIP A层联测26 T3 tour 有意思的树上主席树。 思路 首先考虑一个点 \(p\) 能计入答案的情况,就是 \(dis(x,p)-a_p \ge a_p\)。 我们把 \(x \to y\) 的路径拆成 \(x \to lca,lca \to y\) 两条。 记录一个点 \(x\ 阅读全文
posted @ 2023-11-09 09:29 彬彬冰激凌 阅读(32) 评论(0) 推荐(0)
摘要:2023NOIP A层联测20 点餐 题目很好,可惜考试没想到。 思路 可以按照 \(b\) 从小到大排序,固定选择个数 \(k\),枚举选择的盘子 \(x\) 的 \(b\) 最大,最优解肯定是贪心的在前 \(x-1\) 个盘子里选择 \(k-1\) 个最小的,使用权值主席树可以在 \(O(\lo 阅读全文
posted @ 2023-10-30 22:49 彬彬冰激凌 阅读(31) 评论(0) 推荐(0)
摘要:NOIP2023模拟2联测23 T2 害怕 好像写了一种出题人意料之外的算法。 思路 在生成树上加入白边,白边和若干条蓝色边形成环,环上的蓝色边必须要分配比该白色边更小的边权(最小生成树)。 给每一条边一个分配优先级,优先级的数越小,优先级越高,分配的边权越小。 一开始所有边的优先级的数都等于自己本 阅读全文
posted @ 2023-10-25 22:30 彬彬冰激凌 阅读(55) 评论(0) 推荐(0)