04 2021 档案
摘要:II.II.CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths 名字真长 假如它没有”在每个子树中最长“的限制,我们倒真可以点分治,然后就是水题了;但是它要求在每个子树中最长,怎么办呢? 直接上dsu on tree就行
阅读全文
摘要:II.I.CF600E Lomsat gelral dot 的流程如下: 遍历轻儿子,更新轻儿子子树内答案。在更新完后,删除轻儿子子树内影响(即清空数组)。 遍历重儿子,更新重儿子子树内答案,但不删除。 将自身影响及轻儿子影响加入。 更新自身答案。 本题就照着这么做就行了。跑得还是比暴力线段树合并要
阅读全文
摘要:I.V.UOJ#284. 快乐游戏鸡 我们来思考一下你游戏的过程:每次找到一个最浅的 \(w_i\) 大于当前死亡次数的位置 \(i\),走到那儿;不断这样,直到下面两件事中有一件先发生: 你当前的死亡次数允许你一路走到终点。 你的死亡次数已经不小于 \(w_i\),需要寻找新的 \(i\)。 然后
阅读全文
摘要:I.IV.[WC2010]重建计划 咋感觉这篇博客里的题全可以用一些奇奇怪怪的方法水过去啊喂 首先,淀粉质+单调队列按秩合并的算法就不说了,有兴趣的可以参见本人的题解,如果能够证明或证伪该做法那更好。 现在考虑长链剖分的做法。 首先,其明显是0/1分数规划的场景,直接套上二分转判定性问题。 之后,我
阅读全文
摘要:I.III.CF1009F Dominant Indices 大约一年前,我曾用线段树合并硬刚过了这题,现在是正解。 可以设 \(f_{i,j}\) 表示 \(i\) 子树中深度为 \(j\) 的点的数量。于是直接长剖优化即可。时间复杂度 \(O(n)\)。 虽然因为我极其垃圾的实现导致还没有线段树
阅读全文
摘要:I.II.[POI2014]HOT-Hotels 加强版 易于发现,三点间两两距离相等,当且仅当两个LCA较深的点到它们的LCA距离相等,且第三个点到该LCA的距离与前两个点相同。 于是我们设 \(f_{x,i}\) 表示 \(x\) 子树中有多少对点,它们到LCA距离相同,且上述距离比该LCA到
阅读全文
摘要:I.I.【模板】树上 k 级祖先 当询问某个点 \(x\) 的 \(k\) 级祖先时,我们考虑找到其的 \(\text{highbit}(k)\) 级祖先 \(y\)(显然这个可以通过 \(O(n\log n)\) 预处理树上倍增得到)。之后,找到 \(y\) 所在长链的链顶。我们在链顶处预处理出其
阅读全文
摘要:VI.[AGC038E] Gachapon 因为模型同III.重返现世长得很像,所以我们也来考虑minmax容斥。 首先,我们仍然翻出式子 \(\max(\mathbb S)=\sum\limits_{\mathbb{T\subseteq S}}(-1)^{|\mathbb T|+1}\min(\m
阅读全文
摘要:V.[51Nod1355]斐波那契的最小公倍数 引理1. 设 \(f_i\) 表示斐波那契数列中第 \(i\) 项,则 \(\gcd(f_i,f_j)=f_{\gcd(i,j)}\)。 一种证明方法是打表 另一种证明方法是,首先有 \(f_{i+j}=f_{i−1}f_j+f_if_{j+1}\)(
阅读全文
摘要:IV.UOJ#422. 【集训队作业2018】小Z的礼物 考虑直接上minmax容斥。然后,考虑DP求出对于所有的 \(\Big(|\mathbb T|,\min(\mathbb T)\Big)\) 二元组,满足其的 \(\mathbb T\) 个数。又因为 \(n\) 很小,我们尝试轮廓线DP。故
阅读全文
摘要:III.重返现世 考虑扩展minmax定理: \(\text{Kthmax}(\mathbb S)=\sum\limits_{\mathbb{T\subseteq S}}(-1)^{|\mathbb T|-K}\dbinom{|\mathbb T|-1}{K-1}\min(\mathbb T)\)
阅读全文
摘要:II.[PKUWC2018]随机游走 无脑上minmax容斥。问题转换为求从起点 \(S\) 出发,到达集合 \(\mathbb S\) 中某一点的期望时间。 因为有环,考虑直接爆上高斯消元,时间复杂度 \(O(n^32^n)\)。 看上去不太能过?但是这份代码卡常卡得比较优美,加上又没有出菊花图卡
阅读全文
摘要:I.[HAOI2015]按位或 在本题中,\(\min\mathbb S\) 表示 \(\mathbb S\) 中第一个被取到的位置被取到的时间,\(\max\mathbb S\) 表示最后一个被取到的位置被取到的时间。则我们要求的就是 \(\text E(\max\mathbb S)\)。 现在,
阅读全文
摘要:这里是minmax容斥学习笔记。 minmax容斥是一种神奇的可以在一个集合的 \(\min\) 和 \(\max\) 间架起桥梁的工具。它的公式如下: \(\max(\mathbb S)=\sum\limits_{\mathbb{T\subseteq S}}(-1)^{|\mathbb T|+1}
阅读全文
摘要:XI.[NOI2020] 超现实树 Observation 1.答案为 No 当且仅当有至少一棵深度为无限的树无法被生成。 这是显然的。 Observation 2.答案为 No 当且仅当存在至少一棵深度为 \(lim=\max\limits_{i=1}^m\operatorname{dep} T_
阅读全文
摘要:X.[NOI2017] 游戏 因为并没有专门开2SAT笔记,所以就放这了 好久没用2SAT了,都忘光了…… 首先,我们可以 \(2^d\) 枚举所有 x 型赛道是当 a 型用还是当 b 型用,因为 a 型允许你选 B 和 C,而 b 型又允许你选 A,这样就涵盖了全部情形。 这样之后,我们便考虑建立
阅读全文
摘要:IX.[CSACADEMY]Card Groups \(40\) 的数据范围让人不能不往Meet in Middle的方向去想。 于是我们枚举前一半卡的取值,压进 map 里,然后枚举后一半卡的取值,在 map 中找到与它能配上的前一半取值,更新答案即可。 时间复杂度 \(O(20^2\times2
阅读全文
摘要:VIII.[ARC072E] Alice in linear land 首先,一个trivial的想法是记 \(f_i\) 表示第 \(i\) 步前离终点的距离,于是 \(f_i=\min\Big(f_{j-1},|f_{j-1}-d_i|\Big)\)。 然后,我们设 \(f_i'\) 表示在修改
阅读全文
摘要:VII.[GYM102798F]Skeleton Dynamization 神题。 首先,我们考虑若我们确定有一条边 \((u,v)\),是连接层 \(i\) 和层 \(i+1\) 上对应点的边,有无办法建出整个分层图出来? 答案是有的。首先,我们先跑两遍bfs求出所有点到 \(u\) 和 \(v\
阅读全文
摘要:VI.[GYM102900H]Rice Arrangement 首先,考虑最终匹配上的人-饭对中,有两对是 \((a_{i1},b_{j1})\),\((a_{i2},b_{j2})\)(此处的 \(a,b\) 都是原本圆桌上坐标)。假如它们呈包含关系,则我们一定可以交换两碗饭使得它们变成相交关系,
阅读全文
摘要:V.CF632F Magic Matrix 暴 力 出 奇 迹 其限制可以被转化为,对于位置 \((i,j)\),对其第 \(i\) 行和第 \(j\) 列的向量怼一块求个 \(\max\) 后,所有位置的值都不小于 \((i,j)\) 的值。 于是我们将所有元素按照从大到小排序,并按照上述次序依次
阅读全文
摘要:IV.CF1458D Flip and Reverse 神仙题。 首先,很容易想到我们另开一个数组,在0的位置记作$-1$,在1的位置记作$+1$,然后作一遍前缀和。这样,若两个位置前缀和相等,则显然它们间的子串是01数量相等的。 然后,对于这种01数列上套前缀和的,一个显然的想法是将其画成折线图的
阅读全文
摘要:III.JOIOI 王国 (Kingdom of JOIOI) 考虑矩阵中的全局最大值和最小值。明显,如果有比最劣解更好的解法,则它们一定不会被分到同一组内。 于是,此最大值一定是某一个省的最大值,而此最小值一定是另一个省的最小值。 故我们考虑二分极差的最大值。则我们现在对于每个位置,它要么只能被分
阅读全文
摘要:II.[APIO2013]道路费用 这个$k$,明显就很可以$2^k$枚举掉有哪些边出现在MST上。但是,如何设置权值使得要求出现的边全数出现呢? 我们考虑裸的Kruskal算法。首先,先用冰茶姬将要求出现的边加入生成树(明显此时如果已经出现了环,则此边集本身即不合法,可以直接跳过该边集),然后将原
阅读全文
摘要:I.CF1423N BubbleSquare Tokens 神仙构造题。 首先,我们令所有点初始都没有放币,所有边上都放了一个币。则此时每个点的权值即为它的度数。 然后,我们考虑从小到大计算每个点的权值。对于每个点$i$,我们枚举它所有相邻且编号比它小的点,假如该点上没有币,就把币从连接两点的边上移
阅读全文
摘要:本文绝大部分内容来自《混凝土数学》 在被多项式爆踩的时候,我偶然发现了《混凝土数学》这本书,然后兴冲冲入手,一看啥都不会,于是就只能在这里带着推推柿子,尝试理解理解,也方便以后复习。 (本文略过了大部分对OI无用的芝士,可以放心食用) (顺带一提这略掉的东西可能还有点多) 现在开始! I.下降幂与上
阅读全文
摘要:V.[USACO17DEC]Push a Box P 思想很简单,发现任意推动箱子的时刻牛总在箱子旁,而这总共是 \(4nm\) 种状态,可以建图储存,然后在上面搜索,搜出所有从起始状态可以到达的状态即可。我们需要连的边只有牛推了一格箱子的边(这个非常简单)以及牛不推箱子,从箱子的一方走到另一方的边
阅读全文
摘要:IV.[GYM102900K]Traveling Merchant 首先,观察到路径一定是一个 \(\rho\) 形的东西,其中在 \(\rho\) 的交点之前,一直都是黑白点交替,到了交点处是两个同色点。 于是我们就只保留异色边建一张图,则问题就转变为给你多对同色点,询问有无从 \(1\) 经过其
阅读全文
摘要:III.[SDOI2018]战略游戏 这题我居然能1A,神奇,神奇 本题是老缝合怪了,强行把一个圆方树板子跟一个虚树板子缝到了一起。不会虚树的可以参见笔者的虚树学习笔记。 具体来说,首先我们先建出圆方树出来;然后,再在圆方树上针对给定的点集跑出虚树出来;然后,对圆方树上的圆点数量做一个树上前缀和(本
阅读全文
摘要:II.[APIO2018] Duathlon 铁人两项 我们考虑对于这样一个三元组$\left<s,c,f\right>$,假如我们固定了$s$和$f$,$c$有多少种可能的取值呢? 显然,$c$的取值等于$s\rightarrow f$的简单路径的并集的大小减$2$,因为$s$和$f$不能作为$c
阅读全文
摘要:I.CF487E Tourists 用这题作圆方树的入门题还是很合适的。 首先,先建出圆方树出来。我们可以给方点赋一个权值,即为它连着的所有圆点的权值的$\min$。然后只需要在圆方树上查询路径$\min$即可。使用树剖即可。 但这个做法会被叉掉:当原图是一张菊花图时,花心的圆点将会连向$n-1$个
阅读全文
摘要:VII.[HNOI/AHOI2018]毒瘤 题如其名 先说一下我的思路:跑出任一生成树,关于非树边的点集建虚树,然后在虚树上跑状压DP。非树边最多有 \(11\) 条,则非树边点集最大是 \(22\),则虚树大小最大 \(43\),因此状压DP复杂度是 \(43\times2^{43}\),显然不可
阅读全文
摘要:VI.LOJ#3077. 「2019 集训队互测 Day 4」绝目编诗 神题。 乍一看好像和虚树半毛钱关系都没有呀?没关系,过亿会就有了。 我们不妨先从暴力开始想起。 暴力怎么写?暴力怎么写?加边加边加边,搜就完事了。 没错,这里的暴力就是爆搜——搜出所有环来,然后判断是否有两个环长度相等即可。 但
阅读全文
摘要:V.CF639F Bear and Chemistry 大毒瘤题一道。 先边双缩点缩成森林,再对每组询问建出虚树,再连上边跑Tarjan求边双即可。 是不是很simple?但是相信我,码起来会让你发疯的 代码: #include<bits/stdc++.h> using namespace std;
阅读全文
摘要:IV.[HNOI2014]世界树 人傻常数大没错了,$n\log n$还会TLE 首先当然是建出虚树来。 然后,对于虚树中每个节点(不管是否是实点),我们可以DP出管辖它的那个节点,设为$f_x$。这个可以通过二次扫描与换根法在$O(k)$的时间内通过两次dfs求出,假如你使用ST表求LCA的话。这
阅读全文
摘要:III.[HEOI2014]大工程 仍然建出虚树。 我们考虑设$sz_x$表示$x$子树中实点(即原本点集中的点)的数量,再设$f_x$表示$x$到$x$子树中某个实点的最长路径,$g_x$则表示最短路径。 我们先考虑求$\min$和$\max$的部分。 对于一个实点,它初始值$f_x=g_x=0$
阅读全文
摘要:II.[SDOI2011]消耗战 老套路,我们建出虚树。 这题虚树中的边是带边权的,边权为原树中两点路径中权值的$\min$。这个权值的$\min$可以通过倍增求出。 在建出虚树后,我们就可以考虑DP了。设当前点为$x$,$f_x$为$x$同$x$子树中所有“资源丰富”节点切断的最小代价。 如果$x
阅读全文
摘要:I.CF613D Kingdom and its Cities 建虚树时有几个事是一定不能忘的: 记得将节点按照dfs序排序; 记得将根节点加入虚树; 该清空的一定都得清空。 这题我们就可以使用虚树解决。 首先,我们建出虚树,并给所有节点一个$sz$,其中只有点集中的节点的$sz$是$1$(因为虚树
阅读全文
摘要:虚树,是一种针对树上点集的强力运算。它可以在$O(k\log k)$(其中$k$是点集大小)的时间内,建出一棵包含点集中所有节点,以及其中某些点的lca的树出来。这棵树就被称作虚树。之后就可以在虚树上进行操作了,例如树形DP等。 建出虚树的操作主要是这样的: 我们维护一个栈,从栈顶到栈底构成原树上一
阅读全文
摘要:如果有线性代数基础的话会更易理解。推荐配合本人的线性代数学习笔记食用。 线性基是针对某个序列生成的一个集合,它具有以下两条性质: 线性基中任意选择一些数的异或值所构成的集合,等于原序列中任意选择一些数的异或值所构成的集合。 线性基是满足上述条件的最小集合。 有了上面这两条性质,我们便可以得出如下几条
阅读全文
摘要:线性代数是个有趣的东西。 过于基础的定义(例如矩阵运算等)不会提及。 I.基于行变换的线性代数 I.I.高斯消元、行变换与线性方程组 高斯消元是一切线代科技的基础。 高斯消元,是指通过以下三种变换: 倍加变换,即将一行的一定倍数加到另一行上 对换变换,即交换两行 倍乘变化,即将某一行中所有数同乘以某
阅读全文
摘要:这里是网络流难题集合。 VI.[NOI2009]植物大战僵尸 一眼看出拓扑排序。因为对于每个点$i$,只有所有保护着$i$和在$i$右边的植物全挂掉之后,植物$i$才能够被攻击。这样只要建出图来,在上面拓扑排序,对每个排序到的点统计权值和即可。 代码: #include<bits/stdc++.h>
阅读全文
摘要:这里是中等难度的网络流题集合。 IV.最长不下降子序列问题 本题介绍一种与符合一定长度限制的路径数量等相关的建模方式:分层建模。 看题目。第一问暴力dp就可以。二、三两问需要建图。 设最长不下降子序列的长度为$s$,原数组为$num$。 则: 1.因为每个点只能在一条路径中,我们将它拆成两个点$in
阅读全文
摘要:因为写过的网络流博客太多,一天发不完,所以就把简单题合在一起发。 O.约定 \(S\):源点 \(\mathbb{S}\):源点集合(在网络流跑完后与$S$连通的点集) \(T\):汇点 \(\mathbb{T}\):源点集合(在网络流跑完后与$T$连通的点集) \((p,q)\):一条从$p$到$
阅读全文
摘要:XXV.孤岛营救问题 这道题这么网络流还真没有思路,一看标签里面根本没有网络流QaQ……然后爆搜就可以,把当前有没有拿到每个钥匙的状态状压到爆搜中。然后就A了QaQ…… 网络流24题里为什么要出两道根本不是网络流的题啊QaQ 代码: #include<stdio.h> #include<algori
阅读全文
摘要:VII.软件补丁问题 这题一眼看到那恶心的限制觉得是状压,一看那$n=20$的范围更觉得是状压,想了网络流$3 min$没想出来,看了标签发现里面居然只有状压一个QaQ!!! 因此便用Dijkstra维护状压进行转移就水过去了QaQ。 鬼知道为什么一道状压会出现在网络流24题里面啊QaQ! 代码:
阅读全文
摘要:VII.exBSGS(扩展大步小步算法) 同理,exBSGS适用于 \(a^x\equiv b\pmod p\) 的情形。只不过,这里不再要求 \(a\perp p\)(这里 \(\perp\) 符号表示互质)。 若 \(\gcd(a,p)\neq1\),则记其为 \(d_1\),显然 \(a\)
阅读全文
摘要:VI.BSGS(大步小步算法) 欢迎来到 北上广深 拔山盖世 比赛搞事 不算个事 算法学习现场。 BSGS,全名 Baby Step Giant Step 算法,是用于求解 \(a^x\equiv b\pmod p\),其中 \(\gcd(a,p)=0\) 的算法。 我们记 \(K=\sqrt{p}
阅读全文
摘要:V.阶与原根 实际上这部分内容在OI中应用很少,但它是一些重要思想以及算法的基础。 阶是在互质数 \((a,m)\) 间的定义:满足 \(a^n\equiv1\pmod m\) 的最小 \(n\) 被称作 \(a\) 模 \(m\) 的阶,记作 \(\delta_m(a)\)。 明显,在 \(a,m
阅读全文
摘要:IV.exLucas(扩展卢卡斯定理) 虽然是这个名字,但是它跟常规卢卡斯没有半毛钱关系 exLucas也是用来计算 \(\dbinom nm\bmod p\) 的。不同于普通Lucas,这里的 \(p\) 可以不为质数。 对于不为质数的模数,一个常规的想法是对其分解质因数,然后考虑其对于每个质数的
阅读全文
摘要:III.Lucas(卢卡斯定理) Lucas定理: \(\boxed{\dbinom nm\equiv\dbinom{n\bmod p}{m\bmod p}\times\dbinom{n/p}{m/p}\pmod p}\) 该式子仅适用于 \(p\) 为质数的情形。 证明: 首先,对于 \(i\in
阅读全文
摘要:II.exCRT(扩展中国剩余定理) 上文我们说到,CRT仅适用于 \(m\) 两两互质的情形。那如果不保证这一限制,明显原方程是仍然有解的,如何求解呢? 在上文的最后,我们成功将三个式的方程消到了两个,在这里能否继续? 我们考虑这个式子: \(x=a+\alpha A=b+\beta B\) 其等
阅读全文
摘要:I.CRT(中国剩余定理) 中国剩余定理: 已知方程 \(\begin{cases}x\equiv a_1\pmod{m_1}\\\vdots\\x\equiv a_n\pmod{m_n}\end{cases}\) 则我们设$M=\prod\limits_nm_i,M_i=\dfrac,b_i=(M
阅读全文
摘要:V.III.[CTSC2018]混合果汁 二话不说先套个整体二分。 但是这题整体二分与先前两道题有所区别——前面两道题,当二分到区间 \([l,r]\) 时,只需管 \([l,r]\) 中的元素就行了,对于 \(mid\) 不合法的询问直接减去这一段的询问的结果就行了; 但是,本题就不一样了:随着美
阅读全文
摘要:V.II.[国家集训]矩阵乘法 整体二分,然后套上二维BIT统计就行了。 需要注意的是整体二分时,要注意哪里是“编号”,哪里不是!(放在代码中就是哪里的东西外面要套上一层 p[]) 时间复杂度 \(O(m\log m\log^2n)\)。 代码: #include<bits/stdc++.h> us
阅读全文
摘要:V.I.[POI2011]MET-Meteors 套上整体二分,然后用BIT统计区间里每个国家收到多少陨石就行了。 听说有人还有用线段树上二分之类奇怪的东西,但是真的没有必要。 时间复杂度 \(O(n\log^2n)\)。 代码: #include<bits/stdc++.h> using name
阅读全文
摘要:IV.VI.寻找宝藏 又是四维偏序板子。只不过是打一遍再熟悉一下代码罢了。 代码: #include<bits/stdc++.h> using namespace std; const int mod=998244353; int n,m; typedef long long ll; struct
阅读全文
摘要:IV.V.[DBOI2019]德丽莎世界第一可爱 事四维偏序模板 二维偏序我们用BIT,三维偏序我们用CDQ套BIT,四维偏序,可以CDQ套树套树CDQ套BIT。 什么意思? 我们排序排掉第一维。 然后,在第二维上CDQ:当我们要计算 \([l,mid]\) 对 \([mid+1,r]\) 的贡献时
阅读全文
摘要:IV.IV.[Ynoi2016] 镜中的昆虫 没错,这里就是CDQ分治 \(O(n)\) 的优势所在了——本题似乎卡掉了空间复杂度为 \(O(n\log^2n)\) 的树套树。 但这不妨碍我继续说:树套树yyds 首先,这里有一个结论:长度为 \(n\) 的序列,修改 \(m\) 次,\(las\)
阅读全文
摘要:IV.III.[国家集训队]数颜色 / 维护队列 虽然这里这题的写法是CDQ但是我还是要大声喊出:树套树yyds! 首先,众所周知地,我们可以对于每个位置记录其颜色上一次出现的地方,记作 \(las_i\),则我们需要知道的就是 \([l,r]\) 中 \(las_i<l\) 的总数。 众所周知地,
阅读全文
摘要:IV.II.[HNOI2010]城市建设 实际上这题不算狭义上的CDQ分治(先计算左边,再计算左边对右边的贡献,最后计算右边),更像是线段树分治的变种,但是既然大家都认为这就是CDQ那就算是罢…… 考虑分治计算。当我们考虑一个区间 \([l,r]\) 时,我们会将所有边分为两类:区间 \([l,r]
阅读全文
摘要:IV.I.[SDOI2011]拦截导弹 我当初为什么要用CDQ分治而不是树套树开这题…… 明显三维偏序。然后一个点的可能性就是前缀路径数乘以后缀路径数除以总路径数。 CDQ分治有一大坨的细节需要处理! 代码: #include<bits/stdc++.h> using namespace std;
阅读全文
摘要:III.IV.[HDU3842][WF2011]Machine Works 我们设 \(f_i\) 表示第 \(i\) 台机器被购买时,所剩最多钱数。则 \(f_i=\max\limits_{d_j<d_i}\Big\{f_j+(d_i-d_j-1)g_j+r_j-p_i\Big\}\) 其可被拆作
阅读全文
摘要:III.III.CF932F Escape Through Leaf 明显DP式很容易写出;然后观察发现其就是子树中一堆函数 \(y=kx+b\) 中对于某个 \(x\) 的 \(y\) 的最小值,于是线段树合并李超树就OK了。 需要注意的是,李超树因为每个节点都存了一条直线(相当于标记永久化),因
阅读全文
摘要:III.II.[SDOI2016]游戏 明显,一条从 \(x\) 到 \(y\) 的路径可以被拆作两条从LCA下来的路径,并且路径上每个点被写上的数是关于其深度的一次函数。 于是就树剖套李超树就行了。 但是有个问题,李超树不是只支持单点询问吗,怎么这里又支持区间了呢? 我们发现,对于一条线段,其与我
阅读全文
摘要:III.李超线段树 李超线段树是一种可以维护动态凸包的线段树。更准确地说,其可以支持的常规操作有两种: 在平面直角坐标系中插入一条线段。 询问在坐标系中的一个点 \((x,+\infty)\) 向下看,能看到的点的坐标。换句话说,是一条自无穷高处引下的垂线与所有线段的交点中最高的那个点。 其具体实现
阅读全文
摘要:II.I.CF1290E Cartesian Tree 并非一道很板的题,但是是可以被想出的。 考虑把笛卡尔树求出其中序遍历,则每个节点的子树是上面一段区间 \([l_i,r_i]\)。 考虑往中序遍历序列中某个位置 \(p\) 之后插入一个数 \(k\)。显然,依照定义,这个数必定大于原序列中所有
阅读全文
摘要:II.吉司机线段树 吉司机线段树是一类支持区间所有数对某个数取 \(\min\),以及所有其它线段树操作的线段树。 我们以区间取 \(\min\)、区间求和为例。 其具体实现是,在线段树的每个节点上存储区间最大值、区间次大值、区间最大值出现次数、区间和。显然,所有东西都可以简单维护。 然后,考虑区间
阅读全文
摘要:I.V.[FJOI2018]领导集团问题 这题的难点主要是在状态的设计上。 首先,一个naive的想法是设 \(f_i\) 表示节点 \(i\) 子树中,强制节点 \(i\) 选择的最优答案,然后使用线段树合并转移。 但是这样在合并不同子树时会出大问题。于是我们不得不更换状态。 于是我们设 \(f_
阅读全文
摘要:I.IV.[NOI2020]命运 半年前水了份 \(n^2\) 暴力,没想到过了出题人用脚造的数据。这里是正解。 考虑DP。因为若两条路径呈包含关系,则更长的那条显然没用,于是设 \(f_{i,j}\) 表示所有下端在 \(i\) 子树内且未被满足的路径中,上端最深的那条的深度。明显,要且仅要满足这
阅读全文
摘要:I.III.[PKUWC2018]Minimax 看错题+理解错题,成功自闭一整晚 首先,一上来我们就能想到,如果用一个数组来表示每个节点所有可能出现的值及其概率,就会比较轻松。而因为树上父节点的数组是由两个子节点的数组合在一起转移而来的,所以考虑用线段树合并来维护该数组。 显然,没有儿子时转移很轻
阅读全文
摘要:I.II.[ZJOI2019]语言 一开始看错题,以为同一种语言会被普及多次,然后就成了神题不会做。一看题解,发现自己看错题了,原来是垃圾题。 一个点所能到达的点,只有与它在同一条路径上出现过的点,换句话说就是经过它全部路径的并。 全部路径的并很好搞,就是全部路径端点建出虚树的大小。虚树大小也很好搞
阅读全文
摘要:I.I.[POI2011]ROT-Tree Rotations 可以发现,你无论如何交换某个节点里的儿子们,该节点子树内每个数的数量都是不变的。 于是我们考虑类CDQ分治的思想——先计算儿子内部最小逆序对数,然后再在父亲处计算两个儿子之间的最小逆序对数。 因为保证叶节点上的东西是排列,所以设左儿子的
阅读全文
摘要:IX.[Ynoi2017] 由乃的玉米田 比VII.小清新人渣的本愿仅仅多了一个除法操作。 常规方法看上去不行,考虑根号分治。对于 \(\geq\sqrt n\) 的询问,直接暴力枚举较小的那个数即可。对于 \(<\sqrt n\) 的询问,考虑 \(O(n)\) 扫一遍回答所有 \(x\) 为某一
阅读全文
摘要:VIII.CF633H Fibonacci-ish II 强烈谴责卡常屑题( 莫队。于是要支持插入数、查询与斐波那契数列的点积和。 离散化后就直接在线段树上处理。于是变成单点插入/删除(这个很 easy)以及后缀斐波那契数列前移/后移。 直接上矩阵维护。但是会TLE(因为常数是 \(2^3\))。预
阅读全文
摘要:VII.小清新人渣的本愿 仍是 bitset 优化莫队。 具体而言,减操作就直接右移/左移 bitset(具体哪个都行,反正是等价的)然后求 and 看看是否非零即可;加操作就同时维护原本的 bitset 和取反后的 bitset,然后就像减操作一样处理即可;乘操作就直接 \(\sqrt n\) 地
阅读全文
摘要:VI.[Ynoi2016] 掉进兔子洞 bitset 优化莫队。 具体而言,我们似乎只需要求出三个区间的 bitset,然后求交即可。 但是问题来了,bitset 似乎只支持不可重集求交呀? 没关系,我们考虑在离散化时,对于一个出现次数为 \(c_x\) 的元素 \(x\),预留它后面的 \(c_x
阅读全文
摘要:V.CF940F Machine Learning 直接在线莫队即可。 需要注意的是,因为本题中 \(\text{mex}\) 大小是不可能超过 \(\sqrt n\) 的,因此不用分块维护值域,直接暴力即可。时间复杂度 \(O(n^{5/3})\)。 代码: #include<bits/stdc+
阅读全文
摘要:IV.CF576C Points on Plane 实际上跟莫队关系不大,但是注意到平面上两点间曼哈顿距离就等价于莫队上从一个状态到另一个状态时左右端点移动次数。于是直接莫队式排序即可。 代码: #include<bits/stdc++.h> using namespace std; const i
阅读全文
摘要:III.[WC2013] 糖果公园 树上莫队。 树上莫队是依照于一种特殊的序列:括号序列而进行的莫队。括号序列,具体而言,是 dfs 树的时候,到一个点就插入序列,离开一个点的时候再插入一次。这样,所有在树上 \(x\sim y\) 路径上出现的点,在括号序列上就是自 \(x\) 第一次出现的位置到
阅读全文
摘要:II.【模板】回滚莫队&不删除莫队 莫,就硬莫。 代码: #include<bits/stdc++.h> using namespace std; const int BBB=450; int n,m,a[200100],mx[200100],mn[200100],ans,res[200100];
阅读全文
摘要:I.[JOISC2014]歴史の研究 解法1.普通莫队 普通莫队要保证复杂度是一个根号,须确保插入/删除一个数均是 \(O(1)\),而询问在 \(O(\sqrt n)\) 以内。 关于本题,最好的分块维护方式,是对一个出现了 \(cnt_x\) 次的元素 \(x\),将 \(1\times x,2
阅读全文
摘要:IV.LOJ#572. 「LibreOJ Round #11」Misaka Network 与求和 首先先考虑莫反推一波式子。 \(\begin{aligned}&\sum\limits_{i=1}^n\sum\limits_{j=1}^nf^k\Big(\gcd(i,j)\Big)\\=&\sum
阅读全文
摘要:III.UOJ#188. 【UR #13】Sanrd 题意:求 \(\sum\limits_{i=l}^rf(i)\),其中 \(f(i)\) 为 \(i\) 的次大质因子。 显然其可以被转为两个前缀和相减的形式。 明显 \(f(i)\) 并非积性函数,所以常规min25筛处理不了。但是我们可以用非
阅读全文
摘要:II.LOJ#6053. 简单的函数 重申一下min25筛应用的条件: 是积性函数。 质数处取值是低阶多项式。 质数次幂处取值可以快速求出。 满足以上三点的任意函数均可以min25筛。 现在看到这题。乍一看 \(p\operatorname{xor}a\) 这种东西看上去一脸非多项式的样子;但是因为
阅读全文
摘要:4.min25筛 听说这玩意能干杜教筛干不了的事? 同杜教筛一样,这也是用来求积性函数前缀和的东西。其复杂度为 \(O(\dfrac{n^{0.75}}{\log n})\),大部分时候要略优于杜教筛。 min25筛作用的积性函数,应保证对于一切质数 \(p\),\(f(p)\) 均是有关 \(p\
阅读全文
摘要:VII.[NOI2016] 循环之美 依据小学数论知识,我们要求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^m[\gcd(i,j)=1][\gcd(j,k)=1]\) 因为后面的 \(k\) 是个常数,所以我们就想把它搞出来。 \(\begin{aligned}&
阅读全文
摘要:VI.LJJ爱数数 题目给出要求这样的东西 \(\dfrac{1}{a}+\dfrac{1}{b}=\dfrac{1}{c}\) 开始胡搞 \(\begin{aligned}\dfrac{1}{a}+\dfrac{1}{b}&=\dfrac{1}{c}\\\dfrac{a+b}{ab}&=\dfra
阅读全文
摘要:V.Product 要求这个东西: \(\prod\limits_{i=1}^n\prod\limits_{j=1}^n\dfrac{\operatorname{lcm}(i,j)}{\gcd(i,j)}\) 开始推式子。 \(\begin{aligned}\\&\prod_{i=1}^n\prod
阅读全文
摘要:IV.Lcm 既然上一道题中的DZY都能自定义函数,那我们为什么不能呢? 定义$f(x)$为$x$中是否含有平方项。没有则为$1$,有则为$0$。显然,它是积性函数。而我们要求的,就是 \(\sum_{i=1}^n\sum_{j=1}^m\dfrac{ij}{\gcd(i,j)}f(\gcd(i,j
阅读全文
摘要:III.DZY Loves Math 题意:求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^mf(\gcd(i,j))\),其中$f(x)$表示$x$的所有质因数中次数最高的一个的次数。 近乎套路的一堆操作后,我们得到了 \(\sum\limits_{i=1}^{\
阅读全文
摘要:II.[CQOI2015]选数 我们要求这个东西: \(\sum\limits_{a_1=L}^R\sum\limits_{a_2=L}^R\dots\sum\limits_{a_n=L}^R[\gcd\limits_{i=1}^n(a_i)=k]\) 老套路,除一下,得到 \(\sum\limit
阅读全文
摘要:I.简单的数学题 在做这题之前,我们先来见一位老朋友: \(\sum\limits_{i=1}^n\sum\limits_{j=1}^n\gcd(i,j)\) 我们在1.v.[NOI2010]能量采集中就已经接触到了这道题。当时我们运用了$\sum\limits_{d|n}\mu(d)=[n=1]\
阅读全文
摘要:3.杜教筛 之前在做莫反的题时,有很多题都需要用到杜教筛,因而我非常不爽。因此便来研究杜教筛了。 杜教筛可以干什么? 在非线性时间内(准确说,\(O(n^{\frac{2}{3}})\))求出某些积性函数的前缀和。例如,\(\sum_{i=1}^n\mu(i)\)。 怎么办呢? 假设我们要求$S(n
阅读全文
摘要:2.狄利克雷卷积与数论函数 在1.v.[NOI2010]能量采集中,我们第一次认识到了狄利克雷卷积这个概念。下面我们将介绍它的更多性质。 我们之前得到了如下性质: \(\boxed{h(n)=(f*g)(n)\Leftrightarrow h(n)=\sum_{d|T}f(d)*g(\dfrac{T
阅读全文
摘要:ix.[51Nod1222]最小公倍数计数 求 \(\sum\limits_{i}\sum\limits_{j}\Big[\operatorname{lcm}(i,j)\in[a,b]\Big]\)。 考虑差分,问题转换为 \(\sum\limits_{i}\sum\limits_{j}\Big[\
阅读全文
摘要:viii.[SDOI2017]数字表格 题意:求出 \(\prod\limits_{i=1}^n\prod\limits_{j=1}^mf_{\gcd(i,j)}\),其中$f$是斐波那契数列。 就算是积,我们也一样能反演,只是反演到了指数头上。 \(\begin{aligned}\prod_{i=
阅读全文
摘要:vii.[SDOI2014]数表 仍然是线性筛筛各种东西。我们引出一个东西$\sigma(x)=\sum\limits_{d|n}d$,也就是$x$的约数和。这个东西明显是积性函数。设$x=\prod\limits_n(P_i)\(,则\)\sigma(x)=\prod\limits_n(\sum\
阅读全文
摘要:vi.于神之怒加强版 在这之前,我们引出一个数论函数$idk(x)=xk$。这个函数就是整数域上的$k$次函数。很明显,它是积性函数,准确地说,是完全积性函数。 它的两个特例,一是$k=1$,就是我们之前提到的$id$函数。二是$k=0$,即$id0$函数。因为$\forall x\in\mathb
阅读全文
摘要:v.[NOI2010]能量采集 真正自己做出来的第一道莫反题祭~~~~ 题意: 求$\sum_^n\sum_^m(2\gcd(i,j)-1)$。 开始推式子: \(\begin{aligned}\sum_{i=1}^n\sum_{j=1}^m(2\gcd(i,j)-1) & =2\sum_{i=1}
阅读全文
摘要:iv.[SDOI2015]约数个数和 完蛋了,我们前几题里面都有$\gcd(\dots)$,但是这道题没有,怎么办呢? 引理: \(\boxed{d(ij)=\sum\limits_{x|i}\sum\limits_{y|j}[\gcd(x,y)==1]}\) 换句话说,两个数$(i,j)$积的因数
阅读全文
摘要:iii.[HAOI2011]Problem b 第一道自己做出来的莫比乌斯反演题祭~~~ 实际上就是对上一道题套上一个类似于二维前缀和的东西。 把上一道题的东西的答案设为$calc(a,b,d)$, 则依据容斥原理,本题答案即为$calc(b,d,k)-calc(a-1,d,k)-calc(b,c-
阅读全文
摘要:ii.[POI2007]ZAP-Queries 如果前一道题没有听懂的话,是我的锅。毕竟这道题应该放在第一道题,上一道题明显是这道题的升级版。 首先,观察一下题目,发现这道题让我们求的就是上一道题中的$f(d)$。 我们再来推一下$f(d)$: 设$f(x)\(为\)\gcd(i,j)=x$的个数,
阅读全文
摘要:I.YY的GCD 这就是莫比乌斯反演?咋长得不像呢? 我们看一下式子: \(ans=\sum\limits_{i=1}^n\sum\limits_{j=1}^m[\gcd(i,j)\ is\ prime]\)。其中方括号相当于强制把方括号内的东西转成$bool$形。 完蛋了,这个里面看不到任何函数,
阅读全文
摘要:1.莫比乌斯函数与莫比乌斯反演 O.约定 \(\color{white}\colorbox{red}{本blog中所有的分数,无论有无下取整符号,均默认下取整。}\) 主要是因为我太懒了,下取整符号的$\LaTeX$表达式太长了 I.作用 设有一函数$g(n)=\sum\limits_{d|n}f(
阅读全文
摘要:XXX.[HDU3151]Cave Crisis 一眼看上去跟XII.[ABC181F]Silver Woods完全一致,因此考虑一样的思路。 于是我们现在问题变为求出两个多边形间的距离。 首先先考虑如何判断它们是否有交。有交只有一种可能,就是边有交。于是我们枚举两个多边形所有的边,然后判断它们是否
阅读全文
摘要:XXIX.CF1195F Geometers Anonymous Club 闵可夫斯基和是关于两个凸包的运算,其几何意义是所有来自两个凸包内部的向量之和所构成的集合。 可以被证明的是,两个凸包的闵可夫斯基和,可以通过对两个凸包上的边按照极角大小排序后依次首尾相接得到。 回到本题。依照我们上述理论,我
阅读全文
摘要:XXVIII.[TopCoder12693]EnclosingTriangle 经典套路是固定一个点,求出所有合法的剩余两个点。 为了方便,我们将环状的图形拆开,拆成 \(4n\) 个点。然后,我们枚举一个点 \(i\) 明显发现,剩下两个点必定位于 \(i\) 两侧的一端区间内,不妨设一半是 \(
阅读全文
摘要:XXVII.CF611G New Year and Cake 做题时居然忘记了叉积满足分配律/jk 我们先将图形翻转成为逆时针排布。 首先,我们发现,若总图形的面积是 \(area\),切完后,较小一半的面积是 \(nowarea\),则贡献是 \(area-2nowarea\)。 我们记点 \(p
阅读全文
摘要:XXVI.[SHOI2012]信用卡凸包 一种异端想法是因为只需保证两位精度所以直接在每个半圆上取 \(100\) 个点代表该半圆,没有试过,但说不定也能过…… 书归正传。 我们考虑画出最终所得到的图形,发现其就是一堆小扇形,再加上中间的“裁去边角后的信用卡”的部分。大眼观察可得那堆小扇形拼一起就得
阅读全文
摘要:XXV.CF598F Cut Length 题解
阅读全文
摘要:XXIV.「SWTR-04」Taking a Walk 题解
阅读全文
摘要:XXII.[USACO10OPEN]Triangle Counting G 题解
阅读全文
摘要:XXI.最小圆覆盖 随机增量法。 引理1.对于任意一组点集$\mathbb$和某点$P$,则$P$要么在$\mathbb\(的外接圆内,要么在\){\mathbb\cup P}$的外接圆上。 于是我们可以设计出如下的解法: 我们枚举一个$1\sim n$的变量i,并判断当前点是否在当前外接圆内。如果
阅读全文
摘要:XX.[COCI2009-2010#6] XOR 题解
阅读全文
摘要:XIX.[POI2007]OSI-Axes of Symmetry 题解
阅读全文
摘要:XVIII.[POI2010]OWC-Sheep 题解
阅读全文
摘要:XVII.[HNOI2012]射箭 强烈谴责本道卡精度屑题。 首先,乍一看,二次函数$ax^2+b$在$x=x_0$处的值要在$[y_0,y_1]$之内?带进去不就是一个关于$a,b$的半平面交吗? 然后再一看,要找到半平面交非空的最大位置, 难不成要用动态凸包? 后来想想动态凸包什么的完全没有必要
阅读全文
摘要:XVI.[JOISC2014]二人の星座 这题乍一看,和之前X.[POI2008]TRO-Triangles好像思想差不多;但是实际操作一番并进行了很多失败的尝试后,发现并不能简单应用。 后来知道了一种判两个(三点不共线的)三角形相离的做法:它们一定存在且只存在两条相同的外割线。(一个三角形的外割线
阅读全文
摘要:XV.CF1045E Ancient civilizations 神题。 我们先考虑如果凸包上只有三个点时的情形。 假如该三个点是同色的,我们考虑能否在该三角形内部找到一个异色点。假如能找到,我们便可以将这个大三角形拆分成三个小三角形,每个小三角形以该异色节点和凸包上两个点为顶点,这就使得小三角形的
阅读全文
摘要:XIV.CF70D Professor's task 没错,我们提到之前的Andrew算法的目的,就是为了运用在这题上——动态凸包。 明显这题不能用Graham,因为我们并不能找到一个固定的、一直在凸包上的点。 我们使用两个std::set来分别维护上下凸壳,当插入一个节点时,就向前向后不断删节点即
阅读全文
摘要:XIII.[USACO5.1]圈奶牛Fencing the Cows /【模板】二维凸包 相信大家都知道Graham算法(gift wrapping)。但是这个算法不好推广。这里使用便于推广的Andrew算法。 具体而言,本算法将所有点按照$x$为第一关键字,$y$为第二关键字排序,然后从前往后扫一
阅读全文
摘要:XII.[ABC181F]Silver Woods 一种很蠢的思路是把平面三角剖分然后建图,然后二分,但这很明显是个很蠢的主意 我们考虑反向思考——对于所有的有序点集$p_1,\dots,p_k$,球的直径一定$\leq\min\Big{dis(y=100,p_1),dis(p_1,p_2),\do
阅读全文
摘要:X.[POI2008]TRO-Triangles 本题介绍两种做法。 一种是我自己的做法: 考虑某$\triangle ABC$,\(2S_{\triangle ABC}=\Big|\vec{AB}\times\vec{AC}\Big|=\Big|(\vec{B}-\vec{A})\times(\v
阅读全文
摘要:IX.[ZJOI2008]瞭望塔 ZJOI2008咋总喜欢考这种计算几何的题啊…… 同我们的IV.监视摄像机[CTSC1998]一样,本题相当于求多边形的核,可以使用半平面交。但因为和VI.[HNOI2008]水平可见直线一样,所有半平面都是向上的,故直接求凸包即可。 发现求完凸包后,答案的横坐标一
阅读全文
摘要:VII.[BalticOI 2005] Polygon 题解
阅读全文
摘要:VI.[HNOI2008]水平可见直线 一开始以为这是半平面交模板;后来一想,直接求出凸包来就行了。 我们仍然将所有直线按照斜率从小到大排序。不过这时,我们只需要使用单调栈维护即可。 具体而言,设栈顶次位、首位直线分别为$y=k_1x+b_1,y=k_2x+b_2$ 则其交点位于 \(\Bigg(\
阅读全文
摘要:V.[NOI2004]降雨量 本题思路就和I.[HNOI2012]三角形覆盖问题差不多了。 首先,我们特判掉有长度为$W$的伞的情况——此时答案即为$0$。 否则,对于每一时刻,我们计算出下面三种情况中,最先来到的一个: 有一把伞撞到了边缘 有两把伞,它们的某两个边缘相遇了(不管是哪两个边缘) 时刻
阅读全文
摘要:IV.[CTSC1998]监视摄像机 这题就是半平面交模板。因为能看到一条边某侧的所有位置的一个点必定处于此边所在直线的内侧,故直接求半平面交即可。 另外,这题#5的第39个测试点似乎出了问题,得特判掉。 代码: #include<bits/stdc++.h> using namespace std
阅读全文
摘要:III.[CQOI2006]凸多边形 /【模板】半平面交 半平面交开始~~ 这里介绍一种做法:随机增量法,其可以在$O(n\log n)$的时间内完成半平面交的求解。 首先,我们可以用一个向量来表示直线;之所以使用向量来表示,是因为我们将强制该向量的左方表示半平面。 接着,我们考虑将所有直线按照向量
阅读全文
摘要:II.CF995C Leaving the Bar 两个$106$的向量求和/差,是无法做到结果必在$106$以内的;但是,如果是三个,就可以做到了。 考虑两个向量。则只有它们的夹角在$[\dfrac{2\pi}{3},\dfrac{4\pi}{3}]$之间时,可以做到。当有三个向量时,则至少存在一
阅读全文
摘要:I.[HNOI2012]三角形覆盖问题 扫描线问题是计算几何里面的一大重点……吗? 不管怎么说,这道题的确要使用扫描线解决。 具体来说,因为$n$只有$10000$,考虑使用$O(n^2)$的做法并加以剪枝。 我们首先将所有三角形按照顶点的$x$坐标递增顺序。接着,考虑用扫描线维护每一时刻与扫描线相
阅读全文
摘要:XLVII.CF1500E Subset Trick 考虑对于每个集合大小 \(i\),找到所有大小为 \(i\) 的集合中元素和最小的一个 \(l_i\) 与最大的一个 \(r_i\)。则,所有 \(x\in[l_i,r_i)\) 均不合法。 于是我们就要求 \(\Big|\bigcup\limi
阅读全文
摘要:XLVI.CF1408G Clusterization Counting 很明显,将边按照权值从小到大排序后,依次用冰茶姬合并,如果任意时刻出现了团,则这个团显然是唯一合法的可能。人脑思考可得这个团之间的关系肯定是个划分树关系(即一个大团裂成许多小团的树形关系),因此总合法团数是 \(O(n)\)
阅读全文
摘要:XLV.[HNOI2009] 梦幻布丁 线段树合并是非常显然的,但是这里我们偏不用。这里我们使用的是启发式合并——虽然这仍然非常显然。 可以使用链表做到 \(O(n\log n)\) 但是我太懒了因此直接暴力用 set 做了,是 \(O(n\log^2n)\) 的不过一样也能过。 附:set 直接
阅读全文
摘要:XLIV.CF607D Power Tree 考虑计算 \(x\) 子树中某个节点 \(y\) 对于 \(f(x)\) 的贡献,发现是 \(w_y\times\prod\limits_{z\in\text{path}(y,x)}deg_z\),其中 \(deg_z\) 是 \(z\) 节点的儿子数。
阅读全文
摘要:XLIII.URAL1097. Square Country 2 考虑二分,二分后转成判定性问题,然后用扫描线+线段树处理即可。时间复杂度 \(O(n\log^2n)\)。 代码: #include<bits/stdc++.h> using namespace std; int n,m,q; str
阅读全文
摘要:XLII.[NOI2019] 弹跳 一眼看上去,单点向矩阵连边、最短路,这不是数据结构优化建图是什么? 想了想二维线段树优化建图,发现可以。 于是就写了,内层线段树写的还是可以压缩空间的线段树合并。 然后MLE了。 \(88\) 分代码: #include<bits/stdc++.h> using
阅读全文
摘要:XLI.[NOI2017] 蚯蚓排队 算算数据范围,可以哈希,只需要将所有长度在 \(50\) 以内的串扔进哈希表,然后询问时找到对应的串的出现次数即可。 这里的哈希表必须用双哈希,其中第一维开在数组范围内,然后第二维作为链表挂在后面,因此范围可以无限大。不过因为要在 int 内处理,因此我两个模数
阅读全文
摘要:XL.[NOI2017] 整数 首先可以想到一种用线段树维护每一位的方法:一个数 \(a\times2^b\) 拆成 \(\log a\) 个位置上 \(+1\),执行单点 \(+1\) 的时候如果出现进位就找到右方第一个非 \(1\) 的位置,然后单点加,区间赋 \(0\);执行减法的时候,就是找
阅读全文
摘要:XXXIX.[NOI2017] 蔬菜 第一眼这个奇奇怪怪的限制,想到网络流。 为了处理这个“每天坏 \(c_i\)”个的限制,我想到的方法是,第一天的 \(c_i\) 个仅能在第一天销售,就只往代表第一天的点连边;第二天的 \(c_i\) 个可以在第一天和第二天销售,故往代表第一天和第二天的点连边;
阅读全文
摘要:XXXVIII.[NOI2016] 网格 首先,答案一定 \(\leq2\),因为四个角的跳蚤被围住只需要两个蛐蛐,而如果蛐蛐占住了一个角又会产生新的角。 \(-1\) 的情形比较容易,要么空隙少于 \(2\) 个,要么仅剩的两个空隙在一起。两种情况下 \(n\times m\) 都与 \(c\)
阅读全文
摘要:XXXVII.[十二省联考2019]春节十二响 考虑一个simple的情形:假如一个点有两条链作为儿子,应该怎么样才好? 明显,同一条链上的点不能在一起,于是链上的一个点只能与另一条链上的点匹配。明显匹配应该从大往小配(两个大的配了,这样最终便少了一个较大的)。于是我们用两个堆记录两条链,每次匹配堆
阅读全文
摘要:XXXVI.[十二省联考2019]异或粽子 好像对可持久化结构有了新的认识( 首先,我们考虑,区间异或和,可以直接被转换为前缀异或和的异或和,即 \(s_r\operatorname{xor}s_{l-1}\)。于是我们考虑对于每个 \(s_r\) 找到与其异或起来最大的 \(s_{l-1}\)。
阅读全文
摘要:XXXV.CF36E Two Paths 为什么这题会被归到数据结构博客里呢?因为我的代码使用了大剂量的 STL。 我吹爆 list 有没有!再也不手写链表了(并不),但是在欧拉路问题上真的贼好用! 首先,覆盖所有边恰一次,妥妥的欧拉路模型。 然后就先考虑如何判无解了。怎样无解呢? 有少于 \(2\
阅读全文
摘要:XXXIV.[九省联考2018]IIIDX 首先,一个非常naive的想法是,建出通关的树出来,然后dfs它,在访问到一个节点时,将现有最小的值赋给它,然后从大到小遍历每个子节点。 这个算法会被 \(d\) 相同的情形叉掉,因为它可以构造出这样一组数据:若某个节点的子树为 \(1\),且它的兄长(指
阅读全文
摘要:XXXIII.[APIO2019]路灯 实际上本来是在刷CDQ分治的题来着的,但是CDQ分治是众所周知地抽象,所以在碰到三维数点问题时,除非卡空间,否则一律请选择树套树…… 我们可以用 set 来维护连通性。显然,若 \([l,r]\) 这一段的路灯全亮,则所有 \(a,b\in[l,r+1]\)
阅读全文
摘要:XXXII.CF1491H Yuezheng Ling and Dynamic Tree 首先,相信大家都做过[HNOI2010]弹飞绵羊这道经典原题,而这题显然是那题的增强版。 众所周知,该原题有两种常见解法:LCT或分块。凭直觉发现LCT不可能处理这种区间修改问题,于是我们考虑分块。 分块的话,
阅读全文
摘要:XXXI.CF626G Raffles 首先,我们列出“往一个奖池内多投一张彩票”,在奖项为 \(c\)、初始有 \(a\) 张、当前已经又投了 \(r\) 张时的额外收益: \(c\times\Big(\dfrac{r+1}{a+r+1}-\dfrac{r}{a+r}\Big)\) 稍微化简一下就
阅读全文
摘要:XXX.CF505E Mr. Kitayuta vs. Bamboos “最大值最小”,条件反射套个二分上去。 于是现在问题转变成判定型问题。 正着搞不好处理 \(\max(h_i-p,0)\) 这种套了 \(\max\) 的限制,干脆正难则反,考虑倒着处理。 于是问题转变为 第 \(i\) 天开头
阅读全文
摘要:XXIX.CF576E Painting Edges 首先,这个trick很常见,应该默认就能想到线段树分治的做法。但是,同样可以实现该trick的LCT维护关于删除时间的最大生成树的做法,因为我们并不知道删除时间是什么,所以不太好写(但是是能写的)。故我们只考虑线段树分治做法。 线段树分治,只需要
阅读全文
摘要:XXVIII.[UOJ#576][ULR#1]服务器调度 非常可怕的大数据结构题,原版代码整整码了9K,就算稍微合并合并也剩下7K…… 首先,我们考虑对每种颜色,建出一棵虚树。考虑求出虚树的一条直径。则有个结论是原树上到任意一点最远的点肯定是此直径的端点之一。 例如,我们考虑下方的这棵树: O /
阅读全文
摘要:XXVII.CF573E Bear and Bowling 考虑暴力的DP。设 \(f_{i,j}\) 表示前 \(i\) 个元素中选择长度为 \(j\) 的子序列所能得到的最大收益。 考虑由 \(f_i\) 转移到 \(f_{i+1}\)。明显,一共有两种转移方式:\(f_{i,j}\righta
阅读全文
摘要:XXVI.CF1458C Latin Square 实际上此题使用的数据结构不很高级,甚至可以说很不高级——因为全程只用了数组。但是本题的思想绝对是非常高级的。 我们考虑上数据结构维护该操作。上下左右移动显然是没问题的;但是行中列中轮换应该咋办呢? 我们先考虑如果只有行上轮换应该怎么办。这玩意没什么
阅读全文
摘要:XXV.CF702F T-Shirts 一句没有输出的调试语句忘删了,然后浪费了半小时debug\kk…… 首先观察到我们可以将所有物品按照quality为第一关键字递减排序,然后再关于price为第二关键字排序,这样所有人购买的东西就都必定是按照其一个子序列的顺序购买的。 于是把询问离线下来,然后
阅读全文
摘要:XXIV.[Code+#1]Yazid 的新生舞会 关于众数,我们通常是对于每个数求出它作为众数的区间数。 考虑某个数 \(x\)。我们可以发现,如果令 \(a_i=x\) 的所有位置有 \(b_i=1\),其余位置有 \(b_i=-1\),则如果某个区间 \([l,r]\) 关于 \(b\) 的区
阅读全文
摘要:XXIII.[JOI 2020 Final] 火事 题解
阅读全文
摘要:XXII.CF477E Dreamoon and Notepad 题解
阅读全文
摘要:XXI.[APIO2015]八邻旁之桥 首先先忽略所有在同侧的人,考虑异侧的人。 则明显,如果我们只在$p$位置修一座桥,则一个从某侧的$x$到另一侧的$y$的人,其一共要走的距离就是 \(|p-x|+|p-y|\) (忽略了桥长,因为桥长可以被统一计算) 于是我们发现,此时$x$和$y$是独立的。
阅读全文
摘要:XX.[APIO2018] New Home 新家 题解
阅读全文
摘要:XIX.「JOI 2013 Final」バブルソート 冒泡排序 首先,有一个常识性结论,就是冒泡排序的次数等于逆序对数。所以本题等价于交换两个数使得减少的逆序对数最多。 于是我们翻出VIII.CF785E Anton and Permutation中给出的结论——当$i<j$且$a_i>a_j$时,
阅读全文
摘要:XVIII.CF679E Bear and Bad Powers of 42 一个显然的想法是,观察到可能的值域(\(10^{14}\))内不会有很多(准确地说,一共$11$个)$42$的整数次幂。于是我们考虑每次暴力修改,则每个数最多被处理$11$次,复杂度显然是可以承受的。 于是我们现在问题就转
阅读全文
摘要:XVII.CF1413F Roads and Ramen 首先,注意到本题等价于求路径上所有边权的异或和为$0$的路径长度的最大值。 然后,我们要猜/证明出一个结论,即任意一条极长合法路径,其必有一个端点是直径端点。 证明: 我们设有一条直径$(S,T)$。我们再设$col_i$表示从$i$节点到根
阅读全文
摘要:XVI.CF360B Levko and Array 明显可以二分答案为$x$。二分之后,我们考虑DP验证。 我们设$f_i$表示$a_i$强制保留时,最多可以保留多少个数。则我们显然有转移方程 \(\Large f_i=\max\limits_{j\in[1,i),|a_i-a_j|\leq(i-
阅读全文
摘要:XV.CF319E Ping-Pong 好题。 首先,离线下来离散化显然是不用说的。 然后观察这里“可以移动”的定义,发现明显可以类比图论中的连边。发现边只有有向边(两区间包含)和无向边(两区间相交)两种,又因为我们只管连通性,所以无向边可以直接使用并查集维护。而包含关系又具有可传递性,故我们最终会
阅读全文
摘要:XIV.SP1557 GSS2 - Can you answer these queries II 我认为这是GSS题目中难度最大的一道,不接受反驳。 这题中出现多次的只给算一次,应该咋办呢? 我们回忆起这种情况的经典老题:[SDOI2009]HH的项链。正解是将询问离线后按照右端点递增排序,然后出
阅读全文
摘要:XIII.CF226E Noble Knight's Path 这题分为在线和离线两种做法然而我只会在线 在线的思路很简单,即先树剖,然后建出主席树。主席树一维维护的是时间,每一棵主席树内部维护的是树剖剖出来的结果。 然后对于每一次询问: 首先先从两边跳链,找到LCA,并找出两点路径间没有被“亵渎”
阅读全文
摘要:XII.初级版:[NOI2003]文本编辑器;进阶版:[AHOI2006]文本编辑器 两道题操作基本一致,唯一的区别就是进阶版多了一个翻转操作,因此干脆合在一起讲。 可以使用splay或fhq treap通过。个人认为fhq treap更加直观。 光标的位置,我们用一个值$tar$表示。 Move/
阅读全文
摘要:XI.CF85D Sum of Medians 这题做法有无数种,其中最暴力的一种就是用vector爆算用$5$棵fhq treap直接处理。比线段树要好想的多。 代码: #include<bits/stdc++.h> using namespace std; typedef long long l
阅读全文
摘要:X.CF650D Zip-line 我们考虑在修改一个位置后,新的LIS可能有哪些。 就是原序列中的LIS。 设原序列LIS长度为$len$。 此时有两种可能: A.被修改的位置在LIS中不是不可替代的(换句话说,有至少一条LIS不经过此位置)。此时,长度就是$len$。 B.被修改的位置在LIS中
阅读全文
摘要:IX.[TJOI2017]不勤劳的图书管理员 我要举报……出题人语文明显不太好…… 首先,这题就是上一题的带权版。 然后,这题带了权后和上一题就不太一样了。 当你交换位置$x,y$的书后,(默认$x<y$) 位置在$x$前或在$y$后的书不受影响; 位置在$x,y$之间,且$val_z\in(val
阅读全文
摘要:VIII.CF785E Anton and Permutation 我们看一下交换以后,哪些逆序对会受到影响。 设交换了位置$(x,y)$,它们原本的值是$val_x,val_y$。不妨设$x<y$。 对于一个位置$i<x$,$x,y$在交换后仍然都排在它后面,不受影响; 对于一个位置$i>y$,$
阅读全文
摘要:VII.[ZJOI2013]K大数查询 这题常卡的我快哭了QaQ 首先,我们仍然考虑树套树。 下标树套权值树(即我们前几题的一贯做法) 我们发现,要在区间树上打上区间添加数的tag,并且用tag树的并集进行二分。 因此最终的结果就是,大区间被分割成$\log n$个小区间,但是每个小区间的$\log
阅读全文
摘要:VI.[CQOI2011]动态逆序对 这题需要支持查询前缀大于某个值的数量、后缀小于某个值的数量以及在某个地方插入值。 换句话说,我们要支持在以下标为$x$轴,权值为$y$轴的二维平面上动态删点以及询问矩形和。 如果我们把删点的时间看做$z$轴的话,那就是典型的三维偏序。 直接树套树完成。 代码(常
阅读全文
摘要:V.【模板】三维偏序(陌上花开) 树套树比CDQ分治可爱一万倍!!!数据结构什么的最可爱了!!! 那么树套树如何进行三维偏序呢? 首先,第一维直接排序掉。 第二位用树状数组处理。 第三维套上权值线段树。 具体地说,因为我们要支持任何地方的单点修改以及前缀查询,就不得不套上树状数组。 这样,树套树便能
阅读全文
摘要:IV.【模板】二逼平衡树(树套树) 树状数组套权值线段树最好了……$n\log2n$的复杂度可比$n\log3n$的什么线段树套平衡树要强一百万倍!其实是我不会写 分析一下操作: 二分出来最大的$<k$的数后直接权值线段树上查询前缀和。 就是II.Dynamic Rankings。 直接修改。 权值
阅读全文
摘要:III.CF1093E Intersection of Permutations 首先,我们如果令$c[i]$表示$b[i]$在数组$a$中出现的位置, 那么对于一次询问,答案就是$c$中下标在$[l_2,r_2]\(间的数字中,值位于\)[l_1,r_1]$间的数量。 思路1.树状数组套权值线段树
阅读全文
摘要:II.Dynamic Rankings 树状数组套权值线段树。 正经不带修的方法就是主席树(即一堆权值线段树并一起)。现在带修了,那就把这些主席树拆开,拆成$n$棵权值线段树,然后用树状数组进行单点修改以及前缀求和,复杂度$O(n\log^2n)$。 代码: #include<bits/stdc++
阅读全文
摘要:I.CF19D Points 树套树第一题。 思路1.线段树套线段树 因为内外的操作类似,很容易就能想到使用线段树套线段树,然后在线段树上二分来找到答案。 复杂度是$O(n\log^2 n)$,常数极大,因此被卡了。 代码: #include<bits/stdc++.h> using namespa
阅读全文
摘要:XVIII.[AGC049A]Erasing Vertices 非常原教旨的概率题。假如想到这个point就应该非常easy罢。 我们考虑删掉一个节点的概率。则答案即为所有节点的概率之和。 对于某个节点来说,删去任何不能到达它的节点,对它都没有任何影响;而任意时刻,假如它未被删去,则所有能到达它的节
阅读全文
摘要:XVII.[SDOI2017]龙与地下城 本题在模意义下和实数意义下,小范围和大范围下各有几种做法。 我们此处定义有$n$个骰子,每个骰子有$m$面。 小数据范围 明显发现它就是$f(x)=\frac{\sum\limits_xi}$的$n$次方。 于是直接倍增计算快速幂即可。时间复杂度$O(nm\
阅读全文
摘要:XVI.[BJOI2018]治疗之雨 一眼能看出这是道高斯消元题。 我们设$f_i$表示当前英雄血量为$i$时期望多少次死掉。 则我们有 \(f_i=\dfrac{1}{m+1}\times\Big(\sum\limits_{j=0}^iq_jf_{i+1-j}\Big)+\dfrac{m}{m+1
阅读全文
摘要:XIV.[JXOI2018]排序问题 本题好像又不算期望罢…… 根据一些简单的推理,我们发现最终答案就是 \(\dfrac{(n+m)!}{\prod\limits_{i}cnt_i!}\) 其中$cnt_i$表示有多少个数是$i$。(这很简单,因为只有每个位置一一对应才能排序成功;但是值相同的数之
阅读全文
摘要:XIII.[JXOI2018]游戏 这题好像根本不算概率期望罢…… 我们考虑$[l,r]$中,如果删去了区间中所有不是区间中其他任何数的倍数的数,则整个区间内所有的数都会被删去;反之,假如剩下了某些不是区间中其他任何数的倍数的数,则此区间一定不会被全部删完。 于是我们考虑求出区间中上述数的个数。考虑
阅读全文
摘要:XII.[NOI2005]聪聪与可可 这题一个naive的思路是设$p_{i,j}$表示$i$时刻老鼠在位置$j$的概率,然后求出$f_i$表示猫$i$时刻前抓到老鼠的概率(因为如果$i$时刻猫可以抓到老鼠,则$i+1$时刻猫一定仍可以抓到老鼠;而$i$时刻猫能抓到老鼠的位置只有可能距猫的起点$\l
阅读全文
摘要:XI.[HNOI2011]XOR和路径 同上题一样,本题采用倒序DP的方式。 我们考虑按位处理。设当前处理到第$p$位,再设$f_i$表示从位置$i$出发,到达终点时的期望结果。 则对于一条边$(x,y,z)$,如果$z$在第$p$位上是$1$,则有$f_x\leftarrow 1-f_y$;否则,
阅读全文
摘要:X.[SDOI2012]走迷宫 这题本来是一个SCC+高斯消元的模板题来着的……但关键是DP状态的设计。 首先先判一下无解。显然,如果从起点出发能够走到一个走不到终点的点,则为无解。这很好想——只要答案有为无穷大的可能,无论概率多小,最终答案都会为无穷大。 然后就是DP设计了。我们无论设什么从起点出
阅读全文
摘要:IX.[TJOI2015]概率论 O E I S 大 法 好 我们设$f(x)$表示$x$个节点的二叉树的叶子节点个数之和,$g(x)$表示$x$个节点的二叉树总数。则答案就是$\dfrac{f(n)}{g(n)}$。 显然$g$就是卡特兰数;$f$通过$O(n^4)$暴力DP可以打出表来,发现是
阅读全文
摘要:VIII.随机数生成器 这题能自己做出来(虽然想了整整3天),我已经满足了。 我们设$p(x)$表示最大值刚好为$x$的概率。则答案为$\sum\limits_^mp(i)i$。 有了上一题的经验,我们很容易想到刚好为$x$的概率不好求,必须做一个前缀和/后缀和才好求。那么到底是用前缀和还是后缀和呢
阅读全文
摘要:VII.[ZJOI2015]地震后的幻想乡 本题有两种思路。 一种思路是从暴力入手并优化状态。 我们考虑边的一组排列${p_1,\dots,p_m}$。它是将边按照边权从小到大排列的结果。则我们在这组排列上跑Kruskal,设在加入排名为$i$的边时跑出了一棵生成树,则这组排列的答案就是排名为$i$
阅读全文
摘要:VII.[NOI2012]迷失游乐园 题解戳这儿
阅读全文
摘要:VI.[LnOI2019]加特林轮盘赌 我们考虑设$f[i][j]$表示$i$个人中,第$j$个人最终存活的概率。 我们先考虑$j>1$的情况。此时,有$p$的概率排在首位的人挂掉,局面变为$f[i-1][j-1]$;反之,有$1-p$的概率首位存活,这就相当于所有人向前进一格,局面变为$f[i][
阅读全文
摘要:V.[SHOI2014]概率充电器 这题实际上很简单,但是我却想歪了…… 我们我们可以设$f_i$表示$i$节点熄灭的概率。之所以不设为亮起的概率,是因为熄灭当且仅当周边节点没有一个连得到它,但是亮起却是周边至少有一个能连到它——用脚趾头想都知道哪个容易求。 设$p_i$表示$i$节点本身通电的概率
阅读全文
摘要:V.[六省联考2017]分手是祝愿 首先,本题的基础是想到一种求解的方式: 当前第$n$盏灯只能被第$n$个开关控制,故我们只能操纵第$n$个开关将其搞灭。当其熄灭后,又相当于进入了$n-1$的游戏—— 因此,我们可以发现(或者瞎猜出来),任意局面都有唯一的最优方法,它操作在一组特定位置上。假如一次
阅读全文
摘要:III.[HNOI2015]亚瑟王 观察题目,我们会发现两个性质: 一张卡片最多只能在一轮游戏中被成功使用。 一轮游戏最多只能成功使用一张卡片。 这样,我们纵向考虑每一张卡片,判断它在某局游戏中被成功使用的概率。 设我们当前有$t$轮游戏,且该卡片成功概率是$p$。则我们有$(1-p)^t$的概率在
阅读全文
摘要:II.[HAOI2012]高速公路 本题已经在我的任务列表里挂了1年多了 我们将这里的“期望”转成“\(\dfrac{\text{区间中任意两点间距离之和}}{\text{区间中选取两点的方案数}}\)。然后,我们考虑使用线段树维护区间中任意两点间距离之和。 在每个节点上,我们维护如下东西: \(s
阅读全文

浙公网安备 33010602011771号