摘要:
题目传送门 解题思路:倍增+树剖+树状数组 对于每次询问,我们可以看成是两个点都不断往上跳(如果一个点是另一个点的祖先则是只有一个跳),有一个很明显的贪心策略:每次都跳到能跳到的深度最小的点。然而一次一次往上跳可能被极端数据卡掉,所以要用倍增维护跳 \(2^i\) 次能跳到哪里。 然而两个点都跳到他 阅读全文
posted @ 2023-12-23 21:56
yinhee
阅读(24)
评论(0)
推荐(0)
摘要:
dp+根号分治,配得上省选题的难度。 一眼 dp,虽然暴力肯定过不了,但是把朴素转移先列出来绝对没坏处。 \[dp_i=\min\limits_{1\leq j<i}(dp_j+\min\limits_{j\leq k\leq i}a_k\times v) \]这个东西很难用 DS 维护,有 \(\ 阅读全文
posted @ 2023-12-23 21:49
yinhee
阅读(17)
评论(0)
推荐(0)
摘要:
学习 SG 基础题。 首先发现每个质数之间是独立的,于是分成了若干个子游戏。 考虑如何计算每个子游戏的 SG 值。一开始没搞懂为什么可以状压,看了大佬代码才明白:对于一个质数 \(p\),\(p^k\) 对答案是否有影响,只和这个 \(k\) 是否出现有关。所以将 \(k\) 的出现状态情况成二进制 阅读全文
posted @ 2023-12-23 21:49
yinhee
阅读(32)
评论(0)
推荐(0)
摘要:
很强的题。 结论:每个非 \(0\) 点的值一定是它到最近的 \(0\) 的距离。 证明:记该点值为 \(x\),上文距离为 \(d\)。考虑反证。 若 \(x>d\)。 考虑该点到 \(0\) 的最短路。记路径上的点到该点的距离为 \(d'\),值为 \(x'\)。则 \(x'\) 最小能取到 \ 阅读全文
posted @ 2023-12-23 21:46
yinhee
阅读(8)
评论(0)
推荐(0)
摘要:
居然差一点场切了。 首先可以将两棵树上对应的点看作一个点的两个不同状态考虑一个类似最短路的东西:设 \(dis_{i,j,0/1,0/1}\) 为树上 \(0/1\) 状态的 \(i\) 点到 \(0/1\) 状态的最短路。考虑怎样维护这个值。 由于是树上路径问题,容易发现设 \(k\) 为树上 \ 阅读全文
posted @ 2023-12-23 21:45
yinhee
阅读(20)
评论(0)
推荐(0)
摘要:
其实赛时可能可以做出来的,只是打了前 6 道想下班了,有点小小遗憾。 首先问题看起来很唬人,考虑转换一下。考虑已经固定 \(m\) 条边,对于一个集合 \(S\),什么时候会不与其他点有边。容易发现,此时需要满足 \(\sum[R_i\in S]=\sum [B_j\in S]\)。记这个数为 \( 阅读全文
posted @ 2023-12-23 21:44
yinhee
阅读(34)
评论(0)
推荐(0)
摘要:
四维偏序板子题怎么只有一篇 cdq 题解呢/yiw 首先简单介绍一下 cdq 套 cdq 的思路。我们知道 cdq 的递归树可以理解成一棵线段树。cdq 的过程就是递归到叶子,再回溯回来。而 cdq 套 cdq 的过程则可以如此理解: 在第一层递归中到达点 \(x\)。 从 \(x\) 进入第二层递 阅读全文
posted @ 2023-12-23 21:42
yinhee
阅读(19)
评论(0)
推荐(0)
摘要:
提供一个本质相同,但是不需要会向量也能做,而且很好想的方法。 首先发现凸包点少,也就意味着边少,考虑从边的方向寻找突破口。 考虑一个凸包的本质:若干个直线划分出若干个半平面,它们的交即为这个凸包。如果一个点对于每一条直线,都在于凸包的同侧,那么这个点就在这个凸包内。 这样直接暴力做仍然是 \(O(n 阅读全文
posted @ 2023-12-23 21:41
yinhee
阅读(14)
评论(0)
推荐(0)
摘要:
先将暴力转移方程列出来:设 \(dp_{i,j,k,l}\) 表示当前 A 牌堆最上面三张分别是第 \(i,j,k\) 张牌,B 牌堆最上面是第 \(l\) 张的最大价值。则有: \[dp_{i,j,k,l}\to dp_{j,k,k+1,i}(c_i=c_l\lor a_i=a_l) \]\[dp 阅读全文
posted @ 2023-12-23 21:41
yinhee
阅读(12)
评论(0)
推荐(0)
摘要:
先 orz oyds。但是为什么没有 oyds 的简单预处理做法啊。 区间 dp。\(dp_{i,j}\) 表示凑出区间 \([i,j]\) 的最小代价。考虑枚举当前区间 \([i,j]\) 与 \(k\),表示 \([i,j]\) 在区间 \([p,j]\) 中出现了 \(k\) 次,且 \(p\ 阅读全文
posted @ 2023-12-23 21:39
yinhee
阅读(21)
评论(0)
推荐(0)
摘要:
感觉是那种,看到题就能猜到大概思路的题。 首先给题目条件增加限制:考虑 \(x_i\leq 7\) 的时候怎么做。这启示我们思考一个和值域相关的做法。 很容易想到一个树形 dp:设 \(dp_{u,i}\) 为在以 \(i\) 为根的子树中,\(u\) 所在连通块异或和为 \(i\) 时方案数与其他 阅读全文
posted @ 2023-12-23 21:38
yinhee
阅读(19)
评论(0)
推荐(0)
摘要:
感觉完全没有 *2700? 看到题,猜测 \(\max dis\) 不会很大,于是按照路径种类分类讨论一下路径 \((i,j)\)。下设 \(f_i\) 为最小质因数,并且更下面的情况不包括上面的情况。 \(\gcd(i,j)>1\) 这种显然 \(dis=1\),数量则为 \(\sum\limit 阅读全文
posted @ 2023-12-23 21:36
yinhee
阅读(10)
评论(0)
推荐(0)
摘要:
可撤销并查集好题。 首先考虑如果已经确定选哪两组,该怎么判断。发现是一个二分图判定的问题,拓展域并查集即可。 那如果要求出所有可能的两组的答案怎么办。首先,如果两组中至少有一组,在只加入组内边时就已经不可能是二分图了,这种情况就显然是不行的。 否则,可以考虑预先加入所有组内的连边,枚举每一种出现过的 阅读全文
posted @ 2023-12-23 21:35
yinhee
阅读(21)
评论(0)
推荐(0)
摘要:
李超线段树二次离线。 容易发现,将和某个点 \(x\) 相邻的边权翻若干倍后,直径所在位置有两种可能:经过或不经过该点。不经过可以跑一次直接求,否则还要分类讨论一下。 \(\operatorname{deg}_x=1\) 那么它会作为直径的一个端点。 否则 直径会从一条边进,另一条边出。 前者是简单 阅读全文
posted @ 2023-12-23 20:55
yinhee
阅读(20)
评论(0)
推荐(0)
摘要:
强制在线是诈骗,还是很有意思的。 首先,如果没有强制在线就是一个 SGT 分治板子。强制在线看起来做不了,但是发现 \(lastans=0/1\)。这启示我们不同的加边可能性不会太多。考虑先记录两种加边可能。 容易发现,如果当前时刻 \(j\) 可能操作 \((u,v)\),上一次可能的时刻是 \( 阅读全文
posted @ 2023-12-23 20:44
yinhee
阅读(12)
评论(0)
推荐(0)
摘要:
还是一道很综合的 string 练手题。 先来分析一下,将 \(B\) 按照答案分成三段,三段与 \(A\) 都有什么关系。 第一段:\(A\) 的一个子串。 第二段:\(A\) 的一段后缀翻转。 第三段:\(A\) 的一段前缀翻转。 我们大概率是要枚举其中一个的,其中第三段都能用 \(A,B\) 阅读全文
posted @ 2023-12-23 20:43
yinhee
阅读(16)
评论(0)
推荐(0)
摘要:
cdqz 两道题都很有意思啊!顺便是第一篇 *3500 题解。 先考虑第一问。 显然有单调性,所以可以二分。cdqz 这是二分专题吗 Lemma 1:所有操作都在 \(0\) 和 \(t\) 时刻进行。 Proof:这是若干个一次函数,最大或最小值都会在端点处取得。所以是显然的。 接下来你就要使你在 阅读全文
posted @ 2023-12-23 20:41
yinhee
阅读(9)
评论(0)
推荐(0)
摘要:
偶然找到的线性基好题。 考虑 \(s=\bigoplus x_i\),则此时 \(b=s\oplus a\),问题变为 \(\max(a+(s\oplus a))\)。 然后观察 \(s\),有一个很典的想法是,\(s\) 为 \(0\) 的位上,\(a\) 如果是 \(0\) 则会产生 \(0\) 阅读全文
posted @ 2023-12-23 20:00
yinhee
阅读(29)
评论(0)
推荐(0)
摘要:
挺高妙的题,思维套结论。 题意:给定 \(n\) 个数,求在其中选三个不交的子集,使得其异或和相等的方案数。 三个不交的集合异或和相等 \(\Leftrightarrow\) 两两异或和为 \(0\)。 观察两个异或和为 \(0\) 的集合 \(S,T(\not=\varnothing)\) 和答案 阅读全文
posted @ 2023-12-23 18:42
yinhee
阅读(48)
评论(0)
推荐(0)