摘要: XI.[NOI2020] 超现实树 Observation 1.答案为 No 当且仅当有至少一棵深度为无限的树无法被生成。 这是显然的。 Observation 2.答案为 No 当且仅当存在至少一棵深度为 \(lim=\max\limits_{i=1}^m\operatorname{dep} T_ 阅读全文
posted @ 2021-04-06 14:53 Troverld 阅读(175) 评论(0) 推荐(1)
摘要: X.[NOI2017] 游戏 因为并没有专门开2SAT笔记,所以就放这了 好久没用2SAT了,都忘光了…… 首先,我们可以 \(2^d\) 枚举所有 x 型赛道是当 a 型用还是当 b 型用,因为 a 型允许你选 B 和 C,而 b 型又允许你选 A,这样就涵盖了全部情形。 这样之后,我们便考虑建立 阅读全文
posted @ 2021-04-06 14:50 Troverld 阅读(71) 评论(0) 推荐(0)
摘要: IX.[CSACADEMY]Card Groups \(40\) 的数据范围让人不能不往Meet in Middle的方向去想。 于是我们枚举前一半卡的取值,压进 map 里,然后枚举后一半卡的取值,在 map 中找到与它能配上的前一半取值,更新答案即可。 时间复杂度 \(O(20^2\times2 阅读全文
posted @ 2021-04-06 14:48 Troverld 阅读(73) 评论(0) 推荐(0)
摘要: 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'\) 表示在修改 阅读全文
posted @ 2021-04-06 14:47 Troverld 阅读(64) 评论(0) 推荐(0)
摘要: VII.[GYM102798F]Skeleton Dynamization 神题。 首先,我们考虑若我们确定有一条边 \((u,v)\),是连接层 \(i\) 和层 \(i+1\) 上对应点的边,有无办法建出整个分层图出来? 答案是有的。首先,我们先跑两遍bfs求出所有点到 \(u\) 和 \(v\ 阅读全文
posted @ 2021-04-06 14:45 Troverld 阅读(108) 评论(0) 推荐(0)
摘要: VI.[GYM102900H]Rice Arrangement 首先,考虑最终匹配上的人-饭对中,有两对是 \((a_{i1},b_{j1})\),\((a_{i2},b_{j2})\)(此处的 \(a,b\) 都是原本圆桌上坐标)。假如它们呈包含关系,则我们一定可以交换两碗饭使得它们变成相交关系, 阅读全文
posted @ 2021-04-06 14:42 Troverld 阅读(92) 评论(0) 推荐(0)
摘要: V.CF632F Magic Matrix 暴 力 出 奇 迹 其限制可以被转化为,对于位置 \((i,j)\),对其第 \(i\) 行和第 \(j\) 列的向量怼一块求个 \(\max\) 后,所有位置的值都不小于 \((i,j)\) 的值。 于是我们将所有元素按照从大到小排序,并按照上述次序依次 阅读全文
posted @ 2021-04-06 14:40 Troverld 阅读(87) 评论(0) 推荐(0)
摘要: IV.CF1458D Flip and Reverse 神仙题。 首先,很容易想到我们另开一个数组,在0的位置记作$-1$,在1的位置记作$+1$,然后作一遍前缀和。这样,若两个位置前缀和相等,则显然它们间的子串是01数量相等的。 然后,对于这种01数列上套前缀和的,一个显然的想法是将其画成折线图的 阅读全文
posted @ 2021-04-06 14:37 Troverld 阅读(84) 评论(0) 推荐(0)
摘要: III.JOIOI 王国 (Kingdom of JOIOI) 考虑矩阵中的全局最大值和最小值。明显,如果有比最劣解更好的解法,则它们一定不会被分到同一组内。 于是,此最大值一定是某一个省的最大值,而此最小值一定是另一个省的最小值。 故我们考虑二分极差的最大值。则我们现在对于每个位置,它要么只能被分 阅读全文
posted @ 2021-04-06 14:36 Troverld 阅读(202) 评论(0) 推荐(0)
摘要: II.[APIO2013]道路费用 这个$k$,明显就很可以$2^k$枚举掉有哪些边出现在MST上。但是,如何设置权值使得要求出现的边全数出现呢? 我们考虑裸的Kruskal算法。首先,先用冰茶姬将要求出现的边加入生成树(明显此时如果已经出现了环,则此边集本身即不合法,可以直接跳过该边集),然后将原 阅读全文
posted @ 2021-04-06 14:32 Troverld 阅读(88) 评论(0) 推荐(0)
摘要: I.CF1423N BubbleSquare Tokens 神仙构造题。 首先,我们令所有点初始都没有放币,所有边上都放了一个币。则此时每个点的权值即为它的度数。 然后,我们考虑从小到大计算每个点的权值。对于每个点$i$,我们枚举它所有相邻且编号比它小的点,假如该点上没有币,就把币从连接两点的边上移 阅读全文
posted @ 2021-04-06 14:30 Troverld 阅读(83) 评论(0) 推荐(0)
摘要: 本文绝大部分内容来自《混凝土数学》 在被多项式爆踩的时候,我偶然发现了《混凝土数学》这本书,然后兴冲冲入手,一看啥都不会,于是就只能在这里带着推推柿子,尝试理解理解,也方便以后复习。 (本文略过了大部分对OI无用的芝士,可以放心食用) (顺带一提这略掉的东西可能还有点多) 现在开始! I.下降幂与上 阅读全文
posted @ 2021-04-06 14:29 Troverld 阅读(632) 评论(1) 推荐(1)
摘要: V.[USACO17DEC]Push a Box P 思想很简单,发现任意推动箱子的时刻牛总在箱子旁,而这总共是 \(4nm\) 种状态,可以建图储存,然后在上面搜索,搜出所有从起始状态可以到达的状态即可。我们需要连的边只有牛推了一格箱子的边(这个非常简单)以及牛不推箱子,从箱子的一方走到另一方的边 阅读全文
posted @ 2021-04-06 13:47 Troverld 阅读(110) 评论(0) 推荐(0)
摘要: IV.[GYM102900K]Traveling Merchant 首先,观察到路径一定是一个 \(\rho\) 形的东西,其中在 \(\rho\) 的交点之前,一直都是黑白点交替,到了交点处是两个同色点。 于是我们就只保留异色边建一张图,则问题就转变为给你多对同色点,询问有无从 \(1\) 经过其 阅读全文
posted @ 2021-04-06 13:45 Troverld 阅读(75) 评论(0) 推荐(0)
摘要: III.[SDOI2018]战略游戏 这题我居然能1A,神奇,神奇 本题是老缝合怪了,强行把一个圆方树板子跟一个虚树板子缝到了一起。不会虚树的可以参见笔者的虚树学习笔记。 具体来说,首先我们先建出圆方树出来;然后,再在圆方树上针对给定的点集跑出虚树出来;然后,对圆方树上的圆点数量做一个树上前缀和(本 阅读全文
posted @ 2021-04-06 13:43 Troverld 阅读(64) 评论(0) 推荐(0)
摘要: II.[APIO2018] Duathlon 铁人两项 我们考虑对于这样一个三元组$\left<s,c,f\right>$,假如我们固定了$s$和$f$,$c$有多少种可能的取值呢? 显然,$c$的取值等于$s\rightarrow f$的简单路径的并集的大小减$2$,因为$s$和$f$不能作为$c 阅读全文
posted @ 2021-04-06 13:41 Troverld 阅读(86) 评论(0) 推荐(0)
摘要: I.CF487E Tourists 用这题作圆方树的入门题还是很合适的。 首先,先建出圆方树出来。我们可以给方点赋一个权值,即为它连着的所有圆点的权值的$\min$。然后只需要在圆方树上查询路径$\min$即可。使用树剖即可。 但这个做法会被叉掉:当原图是一张菊花图时,花心的圆点将会连向$n-1$个 阅读全文
posted @ 2021-04-06 13:39 Troverld 阅读(51) 评论(0) 推荐(0)
摘要: VII.[HNOI/AHOI2018]毒瘤 题如其名 先说一下我的思路:跑出任一生成树,关于非树边的点集建虚树,然后在虚树上跑状压DP。非树边最多有 \(11\) 条,则非树边点集最大是 \(22\),则虚树大小最大 \(43\),因此状压DP复杂度是 \(43\times2^{43}\),显然不可 阅读全文
posted @ 2021-04-06 13:37 Troverld 阅读(113) 评论(0) 推荐(0)
摘要: VI.LOJ#3077. 「2019 集训队互测 Day 4」绝目编诗 神题。 乍一看好像和虚树半毛钱关系都没有呀?没关系,过亿会就有了。 我们不妨先从暴力开始想起。 暴力怎么写?暴力怎么写?加边加边加边,搜就完事了。 没错,这里的暴力就是爆搜——搜出所有环来,然后判断是否有两个环长度相等即可。 但 阅读全文
posted @ 2021-04-06 13:36 Troverld 阅读(761) 评论(0) 推荐(2)
摘要: V.CF639F Bear and Chemistry 大毒瘤题一道。 先边双缩点缩成森林,再对每组询问建出虚树,再连上边跑Tarjan求边双即可。 是不是很simple?但是相信我,码起来会让你发疯的 代码: #include<bits/stdc++.h> using namespace std; 阅读全文
posted @ 2021-04-06 13:32 Troverld 阅读(65) 评论(0) 推荐(0)
摘要: IV.[HNOI2014]世界树 人傻常数大没错了,$n\log n$还会TLE 首先当然是建出虚树来。 然后,对于虚树中每个节点(不管是否是实点),我们可以DP出管辖它的那个节点,设为$f_x$。这个可以通过二次扫描与换根法在$O(k)$的时间内通过两次dfs求出,假如你使用ST表求LCA的话。这 阅读全文
posted @ 2021-04-06 13:30 Troverld 阅读(96) 评论(0) 推荐(0)
摘要: III.[HEOI2014]大工程 仍然建出虚树。 我们考虑设$sz_x$表示$x$子树中实点(即原本点集中的点)的数量,再设$f_x$表示$x$到$x$子树中某个实点的最长路径,$g_x$则表示最短路径。 我们先考虑求$\min$和$\max$的部分。 对于一个实点,它初始值$f_x=g_x=0$ 阅读全文
posted @ 2021-04-06 13:29 Troverld 阅读(59) 评论(0) 推荐(0)
摘要: II.[SDOI2011]消耗战 老套路,我们建出虚树。 这题虚树中的边是带边权的,边权为原树中两点路径中权值的$\min$。这个权值的$\min$可以通过倍增求出。 在建出虚树后,我们就可以考虑DP了。设当前点为$x$,$f_x$为$x$同$x$子树中所有“资源丰富”节点切断的最小代价。 如果$x 阅读全文
posted @ 2021-04-06 13:27 Troverld 阅读(121) 评论(0) 推荐(0)
摘要: I.CF613D Kingdom and its Cities 建虚树时有几个事是一定不能忘的: 记得将节点按照dfs序排序; 记得将根节点加入虚树; 该清空的一定都得清空。 这题我们就可以使用虚树解决。 首先,我们建出虚树,并给所有节点一个$sz$,其中只有点集中的节点的$sz$是$1$(因为虚树 阅读全文
posted @ 2021-04-06 13:25 Troverld 阅读(53) 评论(0) 推荐(0)
摘要: 虚树,是一种针对树上点集的强力运算。它可以在$O(k\log k)$(其中$k$是点集大小)的时间内,建出一棵包含点集中所有节点,以及其中某些点的lca的树出来。这棵树就被称作虚树。之后就可以在虚树上进行操作了,例如树形DP等。 建出虚树的操作主要是这样的: 我们维护一个栈,从栈顶到栈底构成原树上一 阅读全文
posted @ 2021-04-06 13:24 Troverld 阅读(98) 评论(0) 推荐(0)
摘要: 如果有线性代数基础的话会更易理解。推荐配合本人的线性代数学习笔记食用。 线性基是针对某个序列生成的一个集合,它具有以下两条性质: 线性基中任意选择一些数的异或值所构成的集合,等于原序列中任意选择一些数的异或值所构成的集合。 线性基是满足上述条件的最小集合。 有了上面这两条性质,我们便可以得出如下几条 阅读全文
posted @ 2021-04-06 13:22 Troverld 阅读(5320) 评论(5) 推荐(23)
摘要: 线性代数是个有趣的东西。 过于基础的定义(例如矩阵运算等)不会提及。 I.基于行变换的线性代数 I.I.高斯消元、行变换与线性方程组 高斯消元是一切线代科技的基础。 高斯消元,是指通过以下三种变换: 倍加变换,即将一行的一定倍数加到另一行上 对换变换,即交换两行 倍乘变化,即将某一行中所有数同乘以某 阅读全文
posted @ 2021-04-06 13:12 Troverld 阅读(1201) 评论(1) 推荐(0)
摘要: 这里是网络流难题集合。 VI.[NOI2009]植物大战僵尸 一眼看出拓扑排序。因为对于每个点$i$,只有所有保护着$i$和在$i$右边的植物全挂掉之后,植物$i$才能够被攻击。这样只要建出图来,在上面拓扑排序,对每个排序到的点统计权值和即可。 代码: #include<bits/stdc++.h> 阅读全文
posted @ 2021-04-06 13:05 Troverld 阅读(231) 评论(0) 推荐(1)
摘要: 这里是中等难度的网络流题集合。 IV.最长不下降子序列问题 本题介绍一种与符合一定长度限制的路径数量等相关的建模方式:分层建模。 看题目。第一问暴力dp就可以。二、三两问需要建图。 设最长不下降子序列的长度为$s$,原数组为$num$。 则: 1.因为每个点只能在一条路径中,我们将它拆成两个点$in 阅读全文
posted @ 2021-04-06 13:02 Troverld 阅读(193) 评论(0) 推荐(1)
摘要: 因为写过的网络流博客太多,一天发不完,所以就把简单题合在一起发。 O.约定 \(S\):源点 \(\mathbb{S}\):源点集合(在网络流跑完后与$S$连通的点集) \(T\):汇点 \(\mathbb{T}\):源点集合(在网络流跑完后与$T$连通的点集) \((p,q)\):一条从$p$到$ 阅读全文
posted @ 2021-04-06 13:00 Troverld 阅读(129) 评论(0) 推荐(0)
摘要: XXV.孤岛营救问题 这道题这么网络流还真没有思路,一看标签里面根本没有网络流QaQ……然后爆搜就可以,把当前有没有拿到每个钥匙的状态状压到爆搜中。然后就A了QaQ…… 网络流24题里为什么要出两道根本不是网络流的题啊QaQ 代码: #include<stdio.h> #include<algori 阅读全文
posted @ 2021-04-06 11:26 Troverld 阅读(74) 评论(0) 推荐(0)
摘要: VII.软件补丁问题 这题一眼看到那恶心的限制觉得是状压,一看那$n=20$的范围更觉得是状压,想了网络流$3 min$没想出来,看了标签发现里面居然只有状压一个QaQ!!! 因此便用Dijkstra维护状压进行转移就水过去了QaQ。 鬼知道为什么一道状压会出现在网络流24题里面啊QaQ! 代码: 阅读全文
posted @ 2021-04-06 11:20 Troverld 阅读(49) 评论(0) 推荐(0)
摘要: VII.exBSGS(扩展大步小步算法) 同理,exBSGS适用于 \(a^x\equiv b\pmod p\) 的情形。只不过,这里不再要求 \(a\perp p\)(这里 \(\perp\) 符号表示互质)。 若 \(\gcd(a,p)\neq1\),则记其为 \(d_1\),显然 \(a\) 阅读全文
posted @ 2021-04-06 11:10 Troverld 阅读(142) 评论(0) 推荐(0)
摘要: VI.BSGS(大步小步算法) 欢迎来到 北上广深 拔山盖世 比赛搞事 不算个事 算法学习现场。 BSGS,全名 Baby Step Giant Step 算法,是用于求解 \(a^x\equiv b\pmod p\),其中 \(\gcd(a,p)=0\) 的算法。 我们记 \(K=\sqrt{p} 阅读全文
posted @ 2021-04-06 11:08 Troverld 阅读(91) 评论(0) 推荐(0)
摘要: V.阶与原根 实际上这部分内容在OI中应用很少,但它是一些重要思想以及算法的基础。 阶是在互质数 \((a,m)\) 间的定义:满足 \(a^n\equiv1\pmod m\) 的最小 \(n\) 被称作 \(a\) 模 \(m\) 的阶,记作 \(\delta_m(a)\)。 明显,在 \(a,m 阅读全文
posted @ 2021-04-06 11:06 Troverld 阅读(355) 评论(0) 推荐(0)
摘要: IV.exLucas(扩展卢卡斯定理) 虽然是这个名字,但是它跟常规卢卡斯没有半毛钱关系 exLucas也是用来计算 \(\dbinom nm\bmod p\) 的。不同于普通Lucas,这里的 \(p\) 可以不为质数。 对于不为质数的模数,一个常规的想法是对其分解质因数,然后考虑其对于每个质数的 阅读全文
posted @ 2021-04-06 11:04 Troverld 阅读(212) 评论(0) 推荐(0)
摘要: 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 阅读全文
posted @ 2021-04-06 11:02 Troverld 阅读(125) 评论(0) 推荐(0)
摘要: II.exCRT(扩展中国剩余定理) 上文我们说到,CRT仅适用于 \(m\) 两两互质的情形。那如果不保证这一限制,明显原方程是仍然有解的,如何求解呢? 在上文的最后,我们成功将三个式的方程消到了两个,在这里能否继续? 我们考虑这个式子: \(x=a+\alpha A=b+\beta B\) 其等 阅读全文
posted @ 2021-04-06 11:01 Troverld 阅读(83) 评论(0) 推荐(0)
摘要: 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 阅读全文
posted @ 2021-04-06 10:59 Troverld 阅读(82) 评论(0) 推荐(0)
摘要: V.III.[CTSC2018]混合果汁 二话不说先套个整体二分。 但是这题整体二分与先前两道题有所区别——前面两道题,当二分到区间 \([l,r]\) 时,只需管 \([l,r]\) 中的元素就行了,对于 \(mid\) 不合法的询问直接减去这一段的询问的结果就行了; 但是,本题就不一样了:随着美 阅读全文
posted @ 2021-04-06 10:56 Troverld 阅读(102) 评论(0) 推荐(0)
摘要: V.II.[国家集训]矩阵乘法 整体二分,然后套上二维BIT统计就行了。 需要注意的是整体二分时,要注意哪里是“编号”,哪里不是!(放在代码中就是哪里的东西外面要套上一层 p[]) 时间复杂度 \(O(m\log m\log^2n)\)。 代码: #include<bits/stdc++.h> us 阅读全文
posted @ 2021-04-06 10:54 Troverld 阅读(61) 评论(0) 推荐(0)
摘要: V.I.[POI2011]MET-Meteors 套上整体二分,然后用BIT统计区间里每个国家收到多少陨石就行了。 听说有人还有用线段树上二分之类奇怪的东西,但是真的没有必要。 时间复杂度 \(O(n\log^2n)\)。 代码: #include<bits/stdc++.h> using name 阅读全文
posted @ 2021-04-06 10:52 Troverld 阅读(45) 评论(0) 推荐(0)
摘要: IV.VI.寻找宝藏 又是四维偏序板子。只不过是打一遍再熟悉一下代码罢了。 代码: #include<bits/stdc++.h> using namespace std; const int mod=998244353; int n,m; typedef long long ll; struct 阅读全文
posted @ 2021-04-06 10:50 Troverld 阅读(139) 评论(0) 推荐(0)
摘要: IV.V.[DBOI2019]德丽莎世界第一可爱 事四维偏序模板 二维偏序我们用BIT,三维偏序我们用CDQ套BIT,四维偏序,可以CDQ套树套树CDQ套BIT。 什么意思? 我们排序排掉第一维。 然后,在第二维上CDQ:当我们要计算 \([l,mid]\) 对 \([mid+1,r]\) 的贡献时 阅读全文
posted @ 2021-04-06 10:48 Troverld 阅读(99) 评论(0) 推荐(0)
摘要: IV.IV.[Ynoi2016] 镜中的昆虫 没错,这里就是CDQ分治 \(O(n)\) 的优势所在了——本题似乎卡掉了空间复杂度为 \(O(n\log^2n)\) 的树套树。 但这不妨碍我继续说:树套树yyds 首先,这里有一个结论:长度为 \(n\) 的序列,修改 \(m\) 次,\(las\) 阅读全文
posted @ 2021-04-06 10:45 Troverld 阅读(116) 评论(0) 推荐(0)
摘要: IV.III.[国家集训队]数颜色 / 维护队列 虽然这里这题的写法是CDQ但是我还是要大声喊出:树套树yyds! 首先,众所周知地,我们可以对于每个位置记录其颜色上一次出现的地方,记作 \(las_i\),则我们需要知道的就是 \([l,r]\) 中 \(las_i<l\) 的总数。 众所周知地, 阅读全文
posted @ 2021-04-06 10:43 Troverld 阅读(85) 评论(0) 推荐(0)
摘要: IV.II.[HNOI2010]城市建设 实际上这题不算狭义上的CDQ分治(先计算左边,再计算左边对右边的贡献,最后计算右边),更像是线段树分治的变种,但是既然大家都认为这就是CDQ那就算是罢…… 考虑分治计算。当我们考虑一个区间 \([l,r]\) 时,我们会将所有边分为两类:区间 \([l,r] 阅读全文
posted @ 2021-04-06 10:41 Troverld 阅读(224) 评论(1) 推荐(1)
摘要: IV.I.[SDOI2011]拦截导弹 我当初为什么要用CDQ分治而不是树套树开这题…… 明显三维偏序。然后一个点的可能性就是前缀路径数乘以后缀路径数除以总路径数。 CDQ分治有一大坨的细节需要处理! 代码: #include<bits/stdc++.h> using namespace std; 阅读全文
posted @ 2021-04-06 10:39 Troverld 阅读(54) 评论(0) 推荐(0)
摘要: 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\}\) 其可被拆作 阅读全文
posted @ 2021-04-06 10:37 Troverld 阅读(80) 评论(0) 推荐(0)
摘要: III.III.CF932F Escape Through Leaf 明显DP式很容易写出;然后观察发现其就是子树中一堆函数 \(y=kx+b\) 中对于某个 \(x\) 的 \(y\) 的最小值,于是线段树合并李超树就OK了。 需要注意的是,李超树因为每个节点都存了一条直线(相当于标记永久化),因 阅读全文
posted @ 2021-04-06 10:35 Troverld 阅读(102) 评论(0) 推荐(0)
摘要: III.II.[SDOI2016]游戏 明显,一条从 \(x\) 到 \(y\) 的路径可以被拆作两条从LCA下来的路径,并且路径上每个点被写上的数是关于其深度的一次函数。 于是就树剖套李超树就行了。 但是有个问题,李超树不是只支持单点询问吗,怎么这里又支持区间了呢? 我们发现,对于一条线段,其与我 阅读全文
posted @ 2021-04-06 10:33 Troverld 阅读(75) 评论(0) 推荐(0)
摘要: III.李超线段树 李超线段树是一种可以维护动态凸包的线段树。更准确地说,其可以支持的常规操作有两种: 在平面直角坐标系中插入一条线段。 询问在坐标系中的一个点 \((x,+\infty)\) 向下看,能看到的点的坐标。换句话说,是一条自无穷高处引下的垂线与所有线段的交点中最高的那个点。 其具体实现 阅读全文
posted @ 2021-04-06 10:32 Troverld 阅读(149) 评论(0) 推荐(0)
摘要: II.I.CF1290E Cartesian Tree 并非一道很板的题,但是是可以被想出的。 考虑把笛卡尔树求出其中序遍历,则每个节点的子树是上面一段区间 \([l_i,r_i]\)。 考虑往中序遍历序列中某个位置 \(p\) 之后插入一个数 \(k\)。显然,依照定义,这个数必定大于原序列中所有 阅读全文
posted @ 2021-04-06 10:30 Troverld 阅读(92) 评论(0) 推荐(0)
摘要: II.吉司机线段树 吉司机线段树是一类支持区间所有数对某个数取 \(\min\),以及所有其它线段树操作的线段树。 我们以区间取 \(\min\)、区间求和为例。 其具体实现是,在线段树的每个节点上存储区间最大值、区间次大值、区间最大值出现次数、区间和。显然,所有东西都可以简单维护。 然后,考虑区间 阅读全文
posted @ 2021-04-06 10:28 Troverld 阅读(364) 评论(1) 推荐(0)
摘要: I.V.[FJOI2018]领导集团问题 这题的难点主要是在状态的设计上。 首先,一个naive的想法是设 \(f_i\) 表示节点 \(i\) 子树中,强制节点 \(i\) 选择的最优答案,然后使用线段树合并转移。 但是这样在合并不同子树时会出大问题。于是我们不得不更换状态。 于是我们设 \(f_ 阅读全文
posted @ 2021-04-06 10:26 Troverld 阅读(83) 评论(0) 推荐(0)
摘要: I.IV.[NOI2020]命运 半年前水了份 \(n^2\) 暴力,没想到过了出题人用脚造的数据。这里是正解。 考虑DP。因为若两条路径呈包含关系,则更长的那条显然没用,于是设 \(f_{i,j}\) 表示所有下端在 \(i\) 子树内且未被满足的路径中,上端最深的那条的深度。明显,要且仅要满足这 阅读全文
posted @ 2021-04-06 10:24 Troverld 阅读(107) 评论(0) 推荐(0)
摘要: I.III.[PKUWC2018]Minimax 看错题+理解错题,成功自闭一整晚 首先,一上来我们就能想到,如果用一个数组来表示每个节点所有可能出现的值及其概率,就会比较轻松。而因为树上父节点的数组是由两个子节点的数组合在一起转移而来的,所以考虑用线段树合并来维护该数组。 显然,没有儿子时转移很轻 阅读全文
posted @ 2021-04-06 10:22 Troverld 阅读(78) 评论(0) 推荐(0)
摘要: I.II.[ZJOI2019]语言 一开始看错题,以为同一种语言会被普及多次,然后就成了神题不会做。一看题解,发现自己看错题了,原来是垃圾题。 一个点所能到达的点,只有与它在同一条路径上出现过的点,换句话说就是经过它全部路径的并。 全部路径的并很好搞,就是全部路径端点建出虚树的大小。虚树大小也很好搞 阅读全文
posted @ 2021-04-06 10:21 Troverld 阅读(83) 评论(0) 推荐(0)
摘要: I.I.[POI2011]ROT-Tree Rotations 可以发现,你无论如何交换某个节点里的儿子们,该节点子树内每个数的数量都是不变的。 于是我们考虑类CDQ分治的思想——先计算儿子内部最小逆序对数,然后再在父亲处计算两个儿子之间的最小逆序对数。 因为保证叶节点上的东西是排列,所以设左儿子的 阅读全文
posted @ 2021-04-06 10:18 Troverld 阅读(61) 评论(0) 推荐(0)
摘要: IX.[Ynoi2017] 由乃的玉米田 比VII.小清新人渣的本愿仅仅多了一个除法操作。 常规方法看上去不行,考虑根号分治。对于 \(\geq\sqrt n\) 的询问,直接暴力枚举较小的那个数即可。对于 \(<\sqrt n\) 的询问,考虑 \(O(n)\) 扫一遍回答所有 \(x\) 为某一 阅读全文
posted @ 2021-04-06 10:16 Troverld 阅读(67) 评论(0) 推荐(0)
摘要: VIII.CF633H Fibonacci-ish II 强烈谴责卡常屑题( 莫队。于是要支持插入数、查询与斐波那契数列的点积和。 离散化后就直接在线段树上处理。于是变成单点插入/删除(这个很 easy)以及后缀斐波那契数列前移/后移。 直接上矩阵维护。但是会TLE(因为常数是 \(2^3\))。预 阅读全文
posted @ 2021-04-06 10:14 Troverld 阅读(63) 评论(0) 推荐(0)
摘要: VII.小清新人渣的本愿 仍是 bitset 优化莫队。 具体而言,减操作就直接右移/左移 bitset(具体哪个都行,反正是等价的)然后求 and 看看是否非零即可;加操作就同时维护原本的 bitset 和取反后的 bitset,然后就像减操作一样处理即可;乘操作就直接 \(\sqrt n\) 地 阅读全文
posted @ 2021-04-06 10:12 Troverld 阅读(75) 评论(0) 推荐(0)
摘要: VI.[Ynoi2016] 掉进兔子洞 bitset 优化莫队。 具体而言,我们似乎只需要求出三个区间的 bitset,然后求交即可。 但是问题来了,bitset 似乎只支持不可重集求交呀? 没关系,我们考虑在离散化时,对于一个出现次数为 \(c_x\) 的元素 \(x\),预留它后面的 \(c_x 阅读全文
posted @ 2021-04-06 10:10 Troverld 阅读(75) 评论(0) 推荐(0)
摘要: V.CF940F Machine Learning 直接在线莫队即可。 需要注意的是,因为本题中 \(\text{mex}\) 大小是不可能超过 \(\sqrt n\) 的,因此不用分块维护值域,直接暴力即可。时间复杂度 \(O(n^{5/3})\)。 代码: #include<bits/stdc+ 阅读全文
posted @ 2021-04-06 10:07 Troverld 阅读(54) 评论(0) 推荐(0)
摘要: IV.CF576C Points on Plane 实际上跟莫队关系不大,但是注意到平面上两点间曼哈顿距离就等价于莫队上从一个状态到另一个状态时左右端点移动次数。于是直接莫队式排序即可。 代码: #include<bits/stdc++.h> using namespace std; const i 阅读全文
posted @ 2021-04-06 10:05 Troverld 阅读(57) 评论(0) 推荐(0)
摘要: III.[WC2013] 糖果公园 树上莫队。 树上莫队是依照于一种特殊的序列:括号序列而进行的莫队。括号序列,具体而言,是 dfs 树的时候,到一个点就插入序列,离开一个点的时候再插入一次。这样,所有在树上 \(x\sim y\) 路径上出现的点,在括号序列上就是自 \(x\) 第一次出现的位置到 阅读全文
posted @ 2021-04-06 10:03 Troverld 阅读(83) 评论(0) 推荐(0)
摘要: II.【模板】回滚莫队&不删除莫队 莫,就硬莫。 代码: #include<bits/stdc++.h> using namespace std; const int BBB=450; int n,m,a[200100],mx[200100],mn[200100],ans,res[200100]; 阅读全文
posted @ 2021-04-06 10:01 Troverld 阅读(55) 评论(0) 推荐(0)
摘要: I.[JOISC2014]歴史の研究 解法1.普通莫队 普通莫队要保证复杂度是一个根号,须确保插入/删除一个数均是 \(O(1)\),而询问在 \(O(\sqrt n)\) 以内。 关于本题,最好的分块维护方式,是对一个出现了 \(cnt_x\) 次的元素 \(x\),将 \(1\times x,2 阅读全文
posted @ 2021-04-06 10:00 Troverld 阅读(94) 评论(0) 推荐(0)