也不愿在拥抱过浓墨重彩的热烈后 被迫离开
待更新。
CF 835 E | 2-
如果直接二分位置,是不可以的,因为可能紧挨在一起。
两个不同的下标,二进制位一定有不同。所以可以二进制分组询问,一定有一组,使得该组内 \(y\) 的数量是奇数。同时可以求出两个位置的 \(\oplus\)。
那么求出这一组就好办了,直接二分位置即可。
可能的提示?\(19\) 次询问,可以是 \(2\log_2 n\) 这种复杂度。那么只有二进制,二分之类的了。
CF 1205 C | 1+
很容易发现太长的没有用。那么询问距离是 \(2\) 的,容易得出“相等关系”。因为左上角右下角有了,所以可以得出“黑色格子”是啥,“白色格子”有两种填法。
假设是一种填法,看看矛不矛盾。现在只剩下了 \(2\) 个询问,所以不能乱问。
考虑 \(n=3\) 的情况。这个时候左上、右下都知道是啥了。按照题目中绿色箭头的想法,选择长度为 \(4\) 的路径。这么时候,因为有一端是白色格子,如果返回 \(1\) 就确定了。否则有两种情况:中间不行、两边不行。由于左上右下不等,所以两个对角线的白色格子如果相等,那么一定是中间出了问题,容易求出。否则就似乎两边出了问题,也容易求出。
推广一下,发现一定有 \(a_{i,i}=0,a_{i+2,i+2}=1\),所以做完了。
以小见大的方法。
当然也可以不用分类讨论。直接暴力找出能区分的也是可以的。
CF 1934 D2 | 0+
感觉这个可以手动模拟几次就出来了,而且归类更应该是博弈论。
发现 \(n=1\) 后手,\(n=2\) 先手,\(n=3\) 后手。直接猜想和奇偶有关,归纳一下就可以了。
trivial 的想法是拆成 lowbit,但是可以被卡成 \(\mathcal{O}(n)\),不好。所以用 highbit 就可以了,保证每一次 highbit 减一。
CF 1934 D2 | 0
这个比较简单。一个基础的想法是先找到两个点,拓展到叶子,这个是简单的。但是你选择的两个点不一定过根。
判定好判定,可以 \(n\) 次操作知道距离,而要求 \(2maxdep-1\)。所以可以随机化,每一次随机两个点,不合法只有大概 \(\frac{1}{2}\) 的概率,所以可以通过。
CF 1973 D | 1
显然 \(\max\mid m\)。那么求出 \(\max\),确定倍数就好了。
第一步,可以直接枚举 \(\max\) 是啥,因为 \(f(1,n)=\max\times n\)。
第二步,乍一看不能暴力,但是仔细算一下,发现 \(m\) 最大只能是 \(\max\) 的 \(\frac{n}{k}\) 倍(鸽巢原理),而每一次模拟可以直接拓展 \(k\) 次。
所以就是 \(n+\frac{n}{k}\times k=2n\)。
CF 1406 E | 1+
比较套路。
发现 \(10^5\) 以内的质数没有到 \(10000\),所以一定是确定质数是啥。
显然难点是找到存在哪些质数,因为找到了以后暴力求出指数是 \(\log\) 级别的。
一个数只能有一个 \(\ge \sqrt{n}\) 的质数,小一点的直接暴力。大的考虑优化。朴素的方法是 B 一次 A 一次,这个要两倍,不可取。那么就经典的分块,大小 \(100\) 左右,那么就是 \(2\times 100\) 的了。可以通过。
这题的难点是发现判断存在性,可以分块加快速度。两个鹰蛋也是这样子的。
CF 1267 I | 1++
第一个条件很好满足,重点是第二个条件。
一种想法是,留下最大的两个数不比较。一种做法就是,每一次取出 \(4\) 个数,比较它们的大小,然后最小的数直接问完所有问题,再把大的放回去,这样子就能保证。
CF 1354 G | 0
如果知道了第一个是重的,那么直接倍增两次就可以知道第一个轻的。
第一个直接随机化即可。
CF 798 D | 2
明显要一个排序。然后呢?
很重要的一点:从大到小 \(135\) 一定大于 \(246\)。
所以,即使选择 \(1,3,5\),\(a\) 也能满足标准。在 \(2,3\) 中选择 \(b\) 更大的。
这个分组很巧妙。
CF 1599 A | 2
通常这种构造是没有无解的。
很重要的一点是,从特殊情况看起。如果是 LRLRLR,那么按照上一题排序以后 \(135,246\) 即可,一定是加入的那一边重。
很显然倒过来。发现逆过程是:如果去掉最大的,改变状态;取掉最小的,不改变。
CF 2049 E | 1
确定 \(k\) 的范围很重要,也要确定 \(1\) 的位置。考虑到如果询问两个区间都是 \(1\),\(k\) 就会更小;否则无法判断左右。那么考虑划分成 \(3\) 个区间:如果前两个相同,一定在后面,否则在前面。
分类讨论的过程中发现区间长度 \(1:1:2\) 最好。就这样子即可。
问题的“复杂化”后可能更简单。
CF 2109 C3 | 1-
\(4\) 步很简单,digit,\(\times 9\),digit,add \(n-9\)。
发挥人类智慧,多一些 \(9\) 会更好。进一步发现 \(\times 999999999\) 可以 digit 等于 \(81\)。就做完了。
\(9\) 的性质。
CF 1979 E | 0
经典的转成切比雪夫距离。然后就是发现两个点要么在同一行要么在同一列,高度还固定,随便维护即可。
CF 1374 F | 2+
限制是假的。考虑到前 \(n-2\) 个很好排序,问题在后面两个。
考虑 \(acb\) 显然不行,简化一下 \(aba\) 很好做,然后发现 \(aacb\) 也是好做的。那么可以在有连续相同的时候把后两个换过去,再换回来。
怎么想到的呢?枚举检验 \(acb\) 前面加 \(a,b,c\)。
CF 1761 E | 2-
特殊情况到一般情况。
如果有一个连通块不是完全图,可以直接操作一次,就好了,当且仅当不是割点。
否则的话全部都是团。那么如果有大于两个,可以操作两次不同的,否则只能是两个。这个时候只能把小的一个一个加入大的。
CF 1028 E | 1++
简化条件改成 minus,那么构造 \(a_i=\sum_{j=i}^n b_j\),但是这个样子可能多减。那么就把最大的放在最后,并且不能 \(n-1,n\) 相同即可。还是有问题,可能 \(1\sim n-1\) 全部都是 \(0\)。这个时候可以 \(a_i\) 再加上 \(a_n\) 即可。
调整法。
CF 1896 F | 2
我想到了要将 \(1\) 的间隔变成偶数。但是可以加强条件,改成相邻相等。
这个是容易做到的,用 () 和 ((,)) 即可。注意可能外面要套一个 ()。
浙公网安备 33010602011771号