- 博客(169)
- 收藏
- 关注

原创 OI 中一些可能有用的小 Trick 与注意点
持续更新,但是更新周期会比较长。图论:杂项:树上边权转点权转移到儿子节点,但是特别注意多余信息处理(尤其是树剖的时候)比如树剖结束的时候处理最后一条重链,最顶端节点的答案不能处理进去(因为会有多余信息 (topx,fatopx)(top_x,fa_{top_x})(topx,fatopx))还有一些计数题比如说统计路径上有多少个不同颜色的,注意一下根节点的多余数据处理(因为根节点是没有颜色的)。看到图论题先想一下这几个问题:图是否连通?有向图还是无向图?是否带权?有没有重边与自环?遇
2021-03-11 15:06:43
470
原创 图论专题-学习笔记:虚树
图论专题-学习笔记:虚树1. 前言2. 详解2.1 虚树定义2.2 虚树构造2.3 例题3. 总结4. 参考资料1. 前言虚树,主要是用于一类树上问题,这类问题通常是需要取一些关键点,然后要在这些关键点和其 LCA 上做一些奇怪的玩意。关键前置知识:LCA。2. 详解2.1 虚树定义首先我们需要知道虚树是什么:现在给出一棵 nnn 个点的树,从中选取出 kkk 个关键点,这些关键点以及其两两的 LCA 构成了对于这些关键点而言的虚树,特别注意如果取出来的树不连通的话我们还需要一个根节点来连通。
2021-12-01 21:16:51
311
原创 P5309 [Ynoi2011] 初始化 题解
看到 Ynoi 题,就要想到根号算法 + 卡常。这什么毒瘤卡常题()显然对序列分块,这样可以维护查询,但是怎么修改呢?考虑到修改操作的步长为 xxx,那么设一个阈值 ppp,对于 x≥px \geq px≥p 暴力跳暴力修改,对于 x<px < px<p 另外想办法,实际上就是一个根号分治思想。发现题目保证 y≤xy \leq xy≤x,于是我们可以假想以 xxx 为周期进行序列分块,然后发现我们只需要维护这个块的第一个块的信息,就可以推知整个序列的信息,因为这玩意有周期性。然后对
2021-11-24 16:45:47
113
原创 P2331 [SCOI2005]最大子矩阵 题解
DP 题,好像有点恶心,主要是因为能不能选空矩阵的问题。有些数据好像是可以选空矩阵的有些又不能选,就很离谱,但是根据原数据来看空矩阵应该是不能选的,我也不知道具体情况()注意到 m=1m=1m=1 的情况是经典问题,因此直接跳 m=2m=2m=2。设 fi,j,kf_{i,j,k}fi,j,k 表示第一列做到前 iii 个,第二列做到前 jjj 个,总共选了 kkk 个子矩阵的结果。那么考虑对于每一列枚举一个 ppp 表示将 [p,i]/[p,j][p,i]/[p,j][p,i]/[p,j] 作为
2021-11-23 16:07:55
388
原创 NOIP 2021 游记——或许是终章?
这次的题目还是可以的,个人感觉比 CSP 要难一点(也可能是我的问题?),没有什么奇怪的题目(除了个 T4 暴力码量很大)。8:20 ZJ 杭师大考点已经可以开始看题了,然后看了一眼这啥呀?数学专场?开始看 T1,一开始不到 5 分钟打了个表发现大小为 15MB,然后又想了想发现我 nt 了,于是写了个筛法跑过了。这里值得一提的是我那台机子跑的很慢,数据拉满跑了 5s 左右,然后我对着 T1 调了 30min,没调出来弃了。结果赛后一发交到洛谷上过了()然后是 T2,没看出来部分分可以背包,然后打了
2021-11-21 16:43:42
303
原创 CF476D Dreamoon and Sets 题解
一道思维题,但是可以手玩。首先发现一个规律,那就是在我们输出的所有四元组 (ai,bi,ci,di)(a_i,b_i,c_i,d_i)(ai,bi,ci,di) 中,对所有数除以 kkk 之后得到的四元组 (aik,bik,cik,dik)(\dfrac{a_i}{k}, \dfrac{b_i}{k}, \dfrac{c_i}{k}, \dfrac{d_i}{k})(kai,kbi,kci,kdi) 中的数两两互质。这个的大致证明就是假设有两个数 aik,bik\dfrac{a_
2021-11-18 20:26:40
83
原创 P6275 [USACO20OPEN]Sprinklers 2: Return of the Alfalfa P 题解
一道很妙的 DP 题,一眼过去感觉这好像是个轮廓线 DP,然后这道题确实是轮廓线 DP 但不是 2n2^n2n 那种的。本篇题解参照了其他题解的思路 (我从来没写过这种套路的题),在此表示感谢。直接进入正解。首先规定一下本文中的 (i,j)(i,j)(i,j) 不是指第 iii 行第 jjj 列,而是指网格线的第 iii 行第 jjj 列这个点,如下图所示:红色点就是 (4,5)(4,5)(4,5)。这道题的轮廓线就是从 (0,0)(0,0)(0,0) 到 (n,n)(n,n)(n,n) 的一条
2021-11-16 16:55:55
219
原创 P2473 [SCOI2008] 奖励关 题解
首先看这个范围又看到这种题目,就知道是状压 DP 跑不了了。一个直接的思路是设 fi,sf_{i,s}fi,s 表示当前到第 iii 轮,宝物拿取状态为 sss 时的得分,但是我们发现这玩意直接推的话会出现一些奇奇怪怪的状态,主要是这个系统有时扔出来的宝物不能让你到达 sss 或者是你推着推着 sss 里面 1 的个数就大于 iii 了。所以我们需要换个方法,采用逆推的思路。逆推的话状态需要改一下:fi,sf_{i,s}fi,s 表示 1 到 i−1i - 1i−1 轮宝物拿取状态为 sss,第
2021-11-15 14:29:53
211
原创 CF710E Generate a String 题解
一道比较不错的 DP。设 fif_ifi 表示当前字符串长为 iii 时的最小代价,发现这道题麻烦的地方在于 fif_ifi 可以从 fi+1f_{i+1}fi+1 的地方转移过来。分类讨论一下:iii 为偶数:iii 为偶数时 fif_ifi 能从 fi−1,fi2,fi+1f_{i-1},f_{\frac{i}{2}},f_{i+1}fi−1,f2i,fi+1 三个点转移过来,但是 fi+1f_{i+1}fi+1 的转移路程是 ?→fi+22→fi+2→fi+1→fi? \t
2021-11-14 16:11:09
226
原创 CSP-S 2021 游记
哦首先感谢一下这场比赛的出题人,我们获得了极其友好的比赛体验人在 ZJ,做傻掉了,你看这个 Plozia 怎么这么菜啊。开场看题,首先看完题之后发现貌似没有大分类讨论题,好耶,然后开始愉快的写 T1。本来看到 T1 我以为答案有单峰性然后准备三分的,后来发现不对劲貌似并不是单峰,而是答案都聚集在中间就是类似于一堆山峰这种,然后又想了想,发现这玩意好像直接贪心就能过了。我那台电脑只有搜狗输入法,结果还换不成默认的英语输入法,这个 shift + 空格是真的烦,结果 45min 才搞掉 T1。然后 T
2021-10-24 00:15:28
268
原创 CF1516D Cut 题解
一道套路题,做过同类型的题目应该能够直接看出做法。这道题首先询问方式很像 DS 题的询问方式,但是实际上你会发现这道题做法是不能纯 DS 的,或者说这道题根本就不需要 DS。发现如果乘积和 LCM 要相同的话需要满足这个区间内没有任意两个数最大公约数大于 1,而最大公约数可以归约到质因数上。所以首先对每个数做一个质因数分解,然后考虑预处理出 rir_iri 表示第 iii 个位置不断往右边扩展,能够扩展到的最右边的位置是什么,满足 [i,ri][i,r_i][i,ri] 合法,且 [i,ri+1]
2021-09-09 19:44:26
150
原创 P3959 [NOIP2017 提高组] 宝藏 题解
一道状压 DP 题。发现这道题 n≤12n \leq 12n≤12 其实特别小,因此可以考虑状压,而且可以直接邻接矩阵存图。首先我们发现这道题打通的路径构成的图一定是棵树,而根节点就是起点,因此我们需要知道每一个点距离根节点的距离,也就是深度 depdepdep,根节点深度为 0。设 fi,j,df_{i,j,d}fi,j,d 表示当前被挖到的最新的点是 iii,已经连通的点的点集为 jjj(状压为 212−12^{12}-1212−1),目前已经挖了 ddd 个点的最小花费。于是我们有以下转移方
2021-09-09 19:33:07
164
原创 图论专题-学习笔记:树上差分
图论专题-学习笔记:树上差分1. 前言2. 详解2.1 点上差分2.2 边上差分2.3 例题3. 总结1. 前言树上差分,是一种难度不高,思维量也不大的算法,应用范围比较窄但是快。前置知识:差分,树上最近公共祖先(LCA)。2. 详解2.1 点上差分先来看这么一个例题:给出一棵 nnn 个点的树,每个点点权初始为 0,现在有 mmm 次修改,每次修改给出 x,yx,yx,y,将 x,yx,yx,y 简单路径上的所有点点权 +d+d+d,问修改完之后每个点的点权。1≤x,y≤n≤106,m≤1
2021-09-07 21:13:23
391
原创 CF1343E Weights Distributing 题解
一道思维题。首先我们可以发现实际上我们如果能够在 a→b→ca \to b \to ca→b→c 上的路径上将总和排的尽量小那么一定是最优的。于是我们可以考虑求出 a→ba \to ba→b 的最短路以及 b→cb \to cb→c 的最短路然后其和的结果就是总的最短路,将小的丢到这些路径上面就好了……吗?实际上还没有,因为上述做法并没有考虑到 a→ba \to ba→b 和 b→cb \to cb→c 两条路径重合的情况,如图:此时你会发现实际上 b→tb \to tb→t 这条路径会被统计两
2021-08-31 21:12:18
66
原创 CF134C Swaps 题解
一道思维题。看题,发现输出 Yes 或者 No,就知道要判无解,因此首先来讨论无解的情况:如果当前总牌数 sss 为奇数,无解。这是因为交换时有两张卡牌发生了变动,为偶数,且每张牌只能交换一次,因此如果总牌数是奇数无论如何都会有一张无法交换。交换的任意时刻,自己牌数最大者大于当前可以交换的人的人数,无解。因为即使你与这些人全部交换,仍然有牌在你手上。判完无解看方案。这题其实方案是比较简单的,将每个人的信息组成 {ai,i}\{a_i,i\}{ai,i} 之后用结构体/pair放到堆里面,
2021-08-15 18:46:16
84
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人