2026.09 挣扎记录
没写的日子要么是忘了,要么是摆了,要么是在打多校。
2026.09.02
arc228b:为啥这个题只有 *1200 啊。考虑刻画找爸爸的条件,发现一个点 \(p_i\) 的爸爸只会是 [j,i) 内的 p,其中 j 是第一个 \(p_j>p_i\) 的点,这是一个区间。由于 c^2 的增量是不减的(凸性),所以直接贪心选区间内代价增加量最小的点即可。复杂度 nlog n。
arc226b:我做得很唐。考虑二分后 check。一个 O(nm) 的方法是从大到小尽量放,注意到你可以把剩余体积相同的合成成一个,就可以把 n 优化了。
arc210b:大大方方猜结论。猜测这个操作最后保留的就是 a,b 一起排序后的前/后 n/2 个之和,发现确实如此。用 multiset/线段树 什么的维护一下即可。
2026.09.03
CF2233D:一个写起来比较简单的做法。记 \(c=\sum_{i=1}^{n-1}[a_i\neq a_{i+1}]\),则 yes 当且仅当 c+1 为颜色数,注意到 c 的值很好维护。对每种颜色求出所有极长连续段,如果有 >3 段则显然无解,否则交换点一定在端点附近,暴力枚举即可。复杂度 nlog n,瓶颈在 map/离散化。
CF2230E:题目是简单的,问题在于怎么做最方便。一个较简单的方法是我们先宣称答案是 p+c 的最小值,然后钦定 p/c 的贡献是 0/tp+d/tc+d,然后拼出来总的最小值,这个维护前后缀最小值即可。
arc208c:感觉很智慧。发现这个和 nim 很像,发现结束情况是每个位的 1 都只在一个数中出现过,大胆猜测结论是 xor 和等于 or 和就输。
arc158c:我做复杂了。枚举第 k 位,枚举 \(a_i\),再枚举 \(a_j\) 在第 k 位的值,注意到只需要讨论一下是否进位即可,复杂度 \(O(n\log^2 V\log n)\)。居然能过。正解是 \(f(a_i+a_j)=f(a_i)+f(a_j)-9\times g(a_i,a_j)\),其中 g 表示两数之和的进位次数。注意到这个就是 \(a_i+a_j\ge 10^t\) 的 t 的个数,就做完了。
2026.09.04
arc182c:我是区。令当前乘积 \(X=\prod p_i^{c_i}\),一个数 \(Y=\prod p_i^{d_i}\),则答案就从 \(\prod (1+c_i)\) 变为 \(\prod (1+c_i+d_i)\)。注意到 p 的个数 k 真的非常少,少到 2^k 也是很小的数,所以把上面的式子拆开变成 \(\sum_S(\prod_{i\in S}(1+c_i))(\prod_{i\notin S} d_i)\),于是可以矩阵乘法。注意到长度是 \(\le n\),所以再加一个位置存答案即可。复杂度 \(O((2^6)^3\log n)\)。
arc215c:我唐完了,但还好是最终做出来了。注意到这个可以转化为对于 a/b/c,如果 \(a_i\ge a_j\) 则连边 \(i\to j\),最后看 i 能到的点是否够 n 个即可。注意到这个可以前缀建图优化,于是做完了。复杂度 nlog n,瓶颈在排序。
2026.09.05
P10785:颤颤巍巍见自己,读错题做半天。发现这个东西等价于对于 \(i\in [1,m]\),记 Sa(i) 表示 \(\{x|\exists y\in[1,3],a_{x,y}=i\}\),则合法当且仅当 Sa(i)=Sb(i)。发现固定 l 时合法的 r 存在最大值,于是这个题可以和 hash 乱搞一下,复杂度 O(n+q)。
arc222e:太魔怔了,但我还是区。首先特判 X=0,然后答案显然有 \(f(X)=\frac{1}{2}\sum_{i\oplus j=X}\min(c_i,c_j)\),考虑这坨东西怎么求。看到 \(i\oplus j=X\) 你很想 FWT,但是这个 min 不会处理。但是你发现 \(\sum c_i=n\) 不大,所以你会想一些和 c 的值相关的做法,于是你思考类似根号分治的东西。
具体地说,以 B 为界限将 c 划分为大小两类,答案的贡献有大大/大小/小小三种。大大可以暴力,复杂度 \(O((\frac{n}{B})^2)\)。小大/小小可以枚举 min 的值然后 fwt,复杂度 \(O(Bm2^m)\),取 B=11 左右平衡后可以通过。
天哪,有一个更加魔怔的做法。先 c 从大到小排序,然后高低位分治:

这也太魔怔了。
2026.09.06
打网络赛,三个人一起当区。
2026.09.07
arc229b:床上玩手机时大胆猜测答案为 \(\max_i (a_i-2a_{i+1})\)。
2026.09.11
CF2258E:虽然最后还是做出来了,但我还是好区啊。注意到答案一定是 \(p^k\) 的形式,且一个区间 a[l,r] 的答案为 \(p_k\) 当且仅当对于任意 \(q^t<p^k\) 都有存在 i 满足 \(q^t|a_i\),于是找出是 \(p^k\) 的倍数的位置,只需要看相邻两个点构成的区间能不能符合要求即可。复杂度 \(O(n\log^2 n)\)。

浙公网安备 33010602011771号