省流
心不在焉没有状态,\(4t\) 混出 \(1930\) 就下班。
10.29
内含剧透,请vp后再来。
不是题解!!!!!!!
赛前
晚上蚊子很多,没怎么睡觉,处在一种困与不困的叠加态,但总之状态不好。
赛时
A 题要求把一个给定的数 \(n\) 分成不减小的三份,然后把第一份作为答案,第三份作为新的 \(n\)。如果 \(n \leq 2\) 则结束。我一开始想着直接平分就行了,然后挂掉,重新思考一下。想到平分的话最后是趋近 \(\frac{1}{3}\),而如果分成 \(1\),\(1\),\(n-2\) 则趋近 \(\frac{1}{2}\),按照这样的写法就通过了。
B 题容易发现的模拟,不细说。
C 题是给了 \(n\) 个数,可以擦除其中的 \(k\) 个数,或者把其中一些数拆成不递减的三份,并删掉中间那一份。问经过这些操作后最大的 gcd 是多少。先考虑不限次数的第二种操作,发现一种简单的想法是把 \(n\) 可以平分成三份为 gcd,但这样是不行的,因为如果不能平分的话第三个将不得不增大为我们不希望看到的数,所以只能构成 \(\lfloor{\frac{a_i}{4}}\rfloor\) 的任何数。当然他的 gcd 也可以是直接自己的因数。于是用差分数组求出每个 gcd 可以满足的个数,如果小于等于 \(k\) 就可以作为答案。
D 题有一个隐藏的排列,其中每次询问可以对除了最后一个的某个数询问一个值 \(x\),评测机会返回 \(x\) 与你选择的数的按位与是否为 \(0\)。要求在 \(2 \times n\) 次询问内求出最后一个数。想到相比返回 \(1\) 返回 \(0\) 更有用,因为可以确定某个数的那一块都是 \(0\),进而想到可以通过 \(0\) 的数量是否缺少一个判断剩下的那个数这些位是否全 \(0\),这样每次就都可以折半。不过很难实现。后来想到并不用一块一块求,只需要每一位都判断要求的数是 \(0\) 还是 \(1\) 每次就也都是折半的。
赛后
没什么事了,因为状态很烂没看后面的题目。
2025年10月29日