摘要: XLV.[HNOI2009] 梦幻布丁 线段树合并是非常显然的,但是这里我们偏不用。这里我们使用的是启发式合并——虽然这仍然非常显然。 可以使用链表做到 \(O(n\log n)\) 但是我太懒了因此直接暴力用 set 做了,是 \(O(n\log^2n)\) 的不过一样也能过。 附:set 直接 阅读全文
posted @ 2021-04-02 23:17 Troverld 阅读(49) 评论(0) 推荐(0) 编辑
摘要: XLIV.CF607D Power Tree 考虑计算 \(x\) 子树中某个节点 \(y\) 对于 \(f(x)\) 的贡献,发现是 \(w_y\times\prod\limits_{z\in\text{path}(y,x)}deg_z\),其中 \(deg_z\) 是 \(z\) 节点的儿子数。 阅读全文
posted @ 2021-04-02 23:15 Troverld 阅读(58) 评论(0) 推荐(0) 编辑
摘要: XLIII.URAL1097. Square Country 2 考虑二分,二分后转成判定性问题,然后用扫描线+线段树处理即可。时间复杂度 \(O(n\log^2n)\)。 代码: #include<bits/stdc++.h> using namespace std; int n,m,q; str 阅读全文
posted @ 2021-04-02 23:13 Troverld 阅读(31) 评论(0) 推荐(0) 编辑
摘要: XLII.[NOI2019] 弹跳 一眼看上去,单点向矩阵连边、最短路,这不是数据结构优化建图是什么? 想了想二维线段树优化建图,发现可以。 于是就写了,内层线段树写的还是可以压缩空间的线段树合并。 然后MLE了。 \(88\) 分代码: #include<bits/stdc++.h> using 阅读全文
posted @ 2021-04-02 23:11 Troverld 阅读(55) 评论(0) 推荐(0) 编辑
摘要: XLI.[NOI2017] 蚯蚓排队 算算数据范围,可以哈希,只需要将所有长度在 \(50\) 以内的串扔进哈希表,然后询问时找到对应的串的出现次数即可。 这里的哈希表必须用双哈希,其中第一维开在数组范围内,然后第二维作为链表挂在后面,因此范围可以无限大。不过因为要在 int 内处理,因此我两个模数 阅读全文
posted @ 2021-04-02 23:09 Troverld 阅读(90) 评论(0) 推荐(0) 编辑
摘要: XL.[NOI2017] 整数 首先可以想到一种用线段树维护每一位的方法:一个数 \(a\times2^b\) 拆成 \(\log a\) 个位置上 \(+1\),执行单点 \(+1\) 的时候如果出现进位就找到右方第一个非 \(1\) 的位置,然后单点加,区间赋 \(0\);执行减法的时候,就是找 阅读全文
posted @ 2021-04-02 23:07 Troverld 阅读(91) 评论(0) 推荐(0) 编辑
摘要: XXXIX.[NOI2017] 蔬菜 第一眼这个奇奇怪怪的限制,想到网络流。 为了处理这个“每天坏 \(c_i\)”个的限制,我想到的方法是,第一天的 \(c_i\) 个仅能在第一天销售,就只往代表第一天的点连边;第二天的 \(c_i\) 个可以在第一天和第二天销售,故往代表第一天和第二天的点连边; 阅读全文
posted @ 2021-04-02 23:03 Troverld 阅读(38) 评论(0) 推荐(0) 编辑
摘要: XXXVIII.[NOI2016] 网格 首先,答案一定 \(\leq2\),因为四个角的跳蚤被围住只需要两个蛐蛐,而如果蛐蛐占住了一个角又会产生新的角。 \(-1\) 的情形比较容易,要么空隙少于 \(2\) 个,要么仅剩的两个空隙在一起。两种情况下 \(n\times m\) 都与 \(c\) 阅读全文
posted @ 2021-04-02 23:02 Troverld 阅读(204) 评论(0) 推荐(0) 编辑
摘要: XXXVII.[十二省联考2019]春节十二响 考虑一个simple的情形:假如一个点有两条链作为儿子,应该怎么样才好? 明显,同一条链上的点不能在一起,于是链上的一个点只能与另一条链上的点匹配。明显匹配应该从大往小配(两个大的配了,这样最终便少了一个较大的)。于是我们用两个堆记录两条链,每次匹配堆 阅读全文
posted @ 2021-04-02 23:00 Troverld 阅读(62) 评论(0) 推荐(0) 编辑
摘要: XXXVI.[十二省联考2019]异或粽子 好像对可持久化结构有了新的认识( 首先,我们考虑,区间异或和,可以直接被转换为前缀异或和的异或和,即 \(s_r\operatorname{xor}s_{l-1}\)。于是我们考虑对于每个 \(s_r\) 找到与其异或起来最大的 \(s_{l-1}\)。 阅读全文
posted @ 2021-04-02 22:58 Troverld 阅读(51) 评论(0) 推荐(0) 编辑
摘要: XXXV.CF36E Two Paths 为什么这题会被归到数据结构博客里呢?因为我的代码使用了大剂量的 STL。 我吹爆 list 有没有!再也不手写链表了(并不),但是在欧拉路问题上真的贼好用! 首先,覆盖所有边恰一次,妥妥的欧拉路模型。 然后就先考虑如何判无解了。怎样无解呢? 有少于 \(2\ 阅读全文
posted @ 2021-04-02 22:57 Troverld 阅读(49) 评论(0) 推荐(0) 编辑
摘要: XXXIV.[九省联考2018]IIIDX 首先,一个非常naive的想法是,建出通关的树出来,然后dfs它,在访问到一个节点时,将现有最小的值赋给它,然后从大到小遍历每个子节点。 这个算法会被 \(d\) 相同的情形叉掉,因为它可以构造出这样一组数据:若某个节点的子树为 \(1\),且它的兄长(指 阅读全文
posted @ 2021-04-02 17:11 Troverld 阅读(159) 评论(0) 推荐(0) 编辑
摘要: XXXIII.[APIO2019]路灯 实际上本来是在刷CDQ分治的题来着的,但是CDQ分治是众所周知地抽象,所以在碰到三维数点问题时,除非卡空间,否则一律请选择树套树…… 我们可以用 set 来维护连通性。显然,若 \([l,r]\) 这一段的路灯全亮,则所有 \(a,b\in[l,r+1]\) 阅读全文
posted @ 2021-04-02 17:09 Troverld 阅读(92) 评论(0) 推荐(0) 编辑
摘要: XXXII.CF1491H Yuezheng Ling and Dynamic Tree 首先,相信大家都做过[HNOI2010]弹飞绵羊这道经典原题,而这题显然是那题的增强版。 众所周知,该原题有两种常见解法:LCT或分块。凭直觉发现LCT不可能处理这种区间修改问题,于是我们考虑分块。 分块的话, 阅读全文
posted @ 2021-04-02 17:08 Troverld 阅读(78) 评论(0) 推荐(0) 编辑
摘要: XXXI.CF626G Raffles 首先,我们列出“往一个奖池内多投一张彩票”,在奖项为 \(c\)、初始有 \(a\) 张、当前已经又投了 \(r\) 张时的额外收益: \(c\times\Big(\dfrac{r+1}{a+r+1}-\dfrac{r}{a+r}\Big)\) 稍微化简一下就 阅读全文
posted @ 2021-04-02 17:06 Troverld 阅读(56) 评论(0) 推荐(0) 编辑
摘要: XXX.CF505E Mr. Kitayuta vs. Bamboos “最大值最小”,条件反射套个二分上去。 于是现在问题转变成判定型问题。 正着搞不好处理 \(\max(h_i-p,0)\) 这种套了 \(\max\) 的限制,干脆正难则反,考虑倒着处理。 于是问题转变为 第 \(i\) 天开头 阅读全文
posted @ 2021-04-02 17:03 Troverld 阅读(49) 评论(0) 推荐(0) 编辑
摘要: XXIX.CF576E Painting Edges 首先,这个trick很常见,应该默认就能想到线段树分治的做法。但是,同样可以实现该trick的LCT维护关于删除时间的最大生成树的做法,因为我们并不知道删除时间是什么,所以不太好写(但是是能写的)。故我们只考虑线段树分治做法。 线段树分治,只需要 阅读全文
posted @ 2021-04-02 17:01 Troverld 阅读(72) 评论(0) 推荐(0) 编辑
摘要: XXVIII.[UOJ#576][ULR#1]服务器调度 非常可怕的大数据结构题,原版代码整整码了9K,就算稍微合并合并也剩下7K…… 首先,我们考虑对每种颜色,建出一棵虚树。考虑求出虚树的一条直径。则有个结论是原树上到任意一点最远的点肯定是此直径的端点之一。 例如,我们考虑下方的这棵树: O / 阅读全文
posted @ 2021-04-02 16:59 Troverld 阅读(117) 评论(0) 推荐(0) 编辑
摘要: XXVII.CF573E Bear and Bowling 考虑暴力的DP。设 \(f_{i,j}\) 表示前 \(i\) 个元素中选择长度为 \(j\) 的子序列所能得到的最大收益。 考虑由 \(f_i\) 转移到 \(f_{i+1}\)。明显,一共有两种转移方式:\(f_{i,j}\righta 阅读全文
posted @ 2021-04-02 16:57 Troverld 阅读(73) 评论(0) 推荐(0) 编辑
摘要: XXVI.CF1458C Latin Square 实际上此题使用的数据结构不很高级,甚至可以说很不高级——因为全程只用了数组。但是本题的思想绝对是非常高级的。 我们考虑上数据结构维护该操作。上下左右移动显然是没问题的;但是行中列中轮换应该咋办呢? 我们先考虑如果只有行上轮换应该怎么办。这玩意没什么 阅读全文
posted @ 2021-04-02 16:54 Troverld 阅读(51) 评论(0) 推荐(0) 编辑