游记 CCPC2023 深圳站

发布时间 2023-11-13 13:24:21作者: caijianhong

广东实验中学 省实信奥2队

https://vjudge.net/contest/594105

11.11

早上坐车打狼人杀。

下午是开幕式,孙教授的口才真的不错,很好笑。

然后是热身赛。

15:30 热身赛

只有三个题。

看到题目背景和格式还以为是什么省选模拟赛。。。

A

昨晚 pht 讲过这个题,直接不配 .vimrc 在赛前写好代码,但是 0:00:36 没有一血(草)

强化条件为没有奇环,考虑一个分治,左右两边连满二分图,内部的递归下去,分治大概十层左右,同一层用同一种颜色。

更加强大的,__buildin_ctz(u xor v)

B

C 看上去很难,所以我写 B,但是写着写着乱了,直接不会的,本来说秒了的。最后是黄队写的。

不等式左右两边同乘 \(2\times 10^L\) 即可避免浮点运算。因为 \(\sum p_i=1\),特判 \(p=1\) 之后因为 \(K=10^6\) 必定是一个合法答案,所以直接枚举答案。然后有一些上下界,加起来看看 \(K\) 在不在范围内。

C

看了很久,大概是什么前缀最小值右移一位,沈队想暴力数据结构维护,但是他不会。黄队没啥想法,一直假。然后我很慌。我们看到有一队 7 分钟过了 C,想是不是诈骗的。

发现我们很会询问全局:维护所有数字到 priority_queue 中,每次放一个 \(x\) 进去之后,把最小值干掉。更多的操作时,也可以这样操作,或者将所有操作的 \(x\) 全部放进 priority_queue,然后弹出同等数量的最小值,是等价的。因为后面不影响前面,所以可以将询问拆成两个前缀之差,然后离线询问,把询问的 \(x\) 插到数列最前面。

问题变成了查询区间的前 \(k\) 小值之和。任意数据结构即可(如以下标为版本,以值域为线段树信息建立可持久化线段树,查询时二分)。\(O(n\log n)\)

黄队说这个题很妙,确实很厉害!!!

热身赛结束

AK

晚上

吃饭,狼人杀,回酒店,没看无人机表演(看了拍摄图片很厉害,遗憾了),狼人杀,黄队演唱会,睡大觉。

11.12

行李神秘寄存,不能带电子产品和水。

9:00

比赛开始,.vimrc 调试好了,然后三个人随机看题。

我看了一下 I,一开始以为 \(b\) 的值域很小可以直接枚举 \(b\),特判 \(k=2\)(实际上两个都不是),声称要写,然后就在写。写的时候发现越来越假了,发现一个 \((a-b)|n\),需要 Pollard-Rho,我们带了板子,可能会很久。

黄队说他会 A,于是马上把电脑给他写了。

赛后题解:按照值域分治,分治到 \([L,R]\),取 \(mid=(L+R)/2\)。假设现在的 \(a\) 全是 \(L\),将 \(>mid\) 的数字二操作加,然后统一用一操作抬到 \(mid+1\) 上,\([L,mid]\)\([mid+1, R]\) 分治下去。

0:30:06 通过 A

沈队发现榜上过了很多 F,声称是签到题,于是电脑给他写。根本没有看题。

赛后题解:直接分讨一下?

0:47:39 通过 F

我想清楚了 I 题,就是因为 \((a-b)|n\),然后考虑 \(c=a-b\)\((b+c)^k-b^k\),展开之后有一项 \(b^{k-1}\),因为这玩意 \(\leq 10^18\) 所以 \(b\leq \sqrt[k-1]{10^{18}}\)。Pollard-Rho 枚举 \(c\),二分找到 \(b\)

赛后反思:太麻烦了吧。。。