AGC026E Synchronized Subsequence 首先分析性质 我们将配对的 i,ji,ji,j 当成区间 [i,j][i,j][i,j],容易发现区间一定没有包含,因为如果存在 i≤x≤y≤ji \le x \le y \le ji≤x≤y≤j, i,ji,ji,j 配对,x,yx,yx,y 配对是不合法的,应该为 i,yi,yi,y 配对, x,jx,jx,j 配对。 我们还可以发现对于每个连通块(这里联通块的定义为如果区间有交则连边后的连通 2023-10-09 题解 #性质
线头 dp 感觉挺神奇的。 不知道该写什么,不如直接看题。 loj #2687. 「BalticOI 2013」Vim 首先可以发现删掉在位置 iii 的 e 有且仅有一种方式,就是走到 i+1i+1i+1 并花费 111 的代价走到 iii,再花费 111 的代价把 e 删掉,最后光标再次回到原来的 i+1i+1i+1。 所以我们可以直接把题意转化成: 给定一个字符串和一个集合,你可以在上面移动(移动规则 2023-09-14 学习笔记 #dp
CF1608F MEX counting 题目链接 感觉是真的 👍。 首先肯定是个计数。 简单的转化一下题目中给的条件,将 aia_iai 转化成前 iii 个数的 MEXMEXMEX 在 [max(0,ai−k),min(n,ai+k)][\max(0,a_i-k),\min(n,a_i+k)][max(0,ai−k),min(n,ai+k)] 内,不难发现这个跟原题是等价的。 发现这个 MEXMEX 2023-09-13 题解 #计数 #dp
贪心 根本不会贪心 🤡,比赛里根本做不出来。🤡👈🤣 洛谷 P4105 [HEOI2014] 南园满地堆轻絮 以后见到这种排序类的题一定要往逆序对方向想。 结论:答案为 ⌈Δ2⌉\lceil \frac{\Delta}{2}\rceil⌈2Δ⌉,其中 Δ\DeltaΔ 为值相差最大的逆序对。 考虑这个玩意为什么对,首先设 midmidmid 为 ⌊ai+aj2⌋\lflo 2023-08-30 做题记录 #贪心
假期做的串串 这个假期好像还是做了点能写出来的题的。 代码合集 洛谷 P3546 [POI2012] PRE-Prefixuffix CF1654F Minimal String Xoration CF356E Xenia and String Problem 洛谷 P7361 「JZOI-1」拜神 SPOJ 687 REPEATS - Repeats 洛谷 P5115 Check,Check,Check o 2023-08-29 做题记录 #字符串
zzq 题目选做 真 成 🤡 了 ! 洛谷 P3672 小清新签到题 拿到这个题后发现只能想到计数来构造,好像没有其他方法喵~。😿 考虑设一个最暴力的 dpdpdp,设 fi,jf_{i,j}fi,j 表示考虑一个长度为 iii 的排列,有 jjj 个逆序对的方案数,因为我们填排列是从前往后填数,所以 dpdpdp 应该从后往前转移,这样在我考虑第 iii 位时我能快速知道第 iii 位填 xxx ,后面随便 2023-08-29 杂题 #杂题
空间 O(n) 的神奇线段树合并 这玩意是真👍,我只能拜谢 gk4000plus! 直接说怎么做吧,不然不会引入了🤡👈🤣 做法:在有垃圾回收的基础上,每个点合并时,先将重儿子合并上来,然后再将轻儿子合并上来,最后将这个点上面的操作加进来。(这里的 size 是按操作数计算的) 证明:皎月半洒花:“信息竞赛懂得都懂。” 下面以单点修改距离,区间修改是本质相同的 因为重儿子的值会直接被父亲的值继承上去,所以其实是只有链顶才会临 2023-08-27 优化 #线段树合并 #树剖
骨牌相关 🥰🥰🥰 今天做了两道骨牌题,感觉有点强,所以来摆了。😼😼😼 首先,骨牌是什么? 我也不知道 在题目里面好像就是一个大小为 1×21\times21×2 的棋子( 有什么性质? 好像涉及骨牌的题还不少,比如说统计棋盘内放 xxx 个骨牌的方案数,因为是 1×21\times 21×2 的,所以直接状压有哪些位置突出来了就好了,当然也可以轮廓线( 以上均为口胡,不保证正确性😅😅😅 但 2023-08-26 知识总结 #骨牌
Boruvka 相关 Boruvka 确实有用喵~ 😎😎😎 UOJ#661. 【IOI2021】keys 首先对于每个点可以 O(m) bfsO(m)\ bfsO(m) bfs 出点 SSS 能到达多少点,但是我连这个都没想出来 🤡👈🤣 具体而言就是开一个 pointipoint_ipointi 数组表示如果我有了类型 iii 的钥匙我能立刻到达哪里,对于每一个取出队头的点,假设他的钥匙为 x 2023-08-18 #Boruvka
Boruvka 求最小生成树 这玩意好像还是有点用的,主要是思想可以学习一下,而且好像有的题也只能用它。 原理: 一开始将每个点都看成一个集合,每次遍历找到每个集合和其他集合连边的边的最小值,然后枚举这些边,若左右端点不在同一个集合中,将这两个集合合并,重复操作至不能操作,最后就能求出最小生成树。 正确性: 应该是和 kruskal 一样的。 复杂度证明: 因为一条边只有两个端点,所以一条边最多属于两个集合,所以设有 xx 2023-08-18 #Boruvka