PKUWC2025游记

· · 生活·游记

Day 1

没带笔,没办法用草稿纸。

开 T1,先胡乱猜了个奇偶性都不对的结论 \dfrac{(a+b)(b+1)}{2},然后发现过了 a=2 的点,想了一下当 a > b + 1 的时候可以两两分组测,答案是 b+1

然后开始想 a=3,考虑了分成两组单独两两测的策略,过了前 30 分。发现改一改分成 a-1 份就是正解。写了一下,在 14:00 过了。

看了一下 T2,发现只会 n^2\log n,具体倍增维护一下祖先然后加到 set 里面就行了,结果冲过了 10^4,可能是数据没卡满。

睡觉 3h。100+24+0=124

Day 2

又忘带笔了。

开 T1,很快发现可以通过 10 次询问解出五个点间两两的距离,那么就得到了一个 5n+\operatorname{eps} 的做法,因为边角要多几次询问,过不了 6 \times 10^4。还因为 n=4 的 corner case 调了好久。生气,喝掉了免费给的 6 瓶水,上了 8 次厕所,这下真是 wc 了。

然后看到 T2 的 c=1 是容易的,打了 T2 和 T3 的暴力。

尝试去想 T1 但无果,最后罚坐到结束。56+11+6=73

赛后出来发现如果只关心一些点到一个点的距离,可以用更少的询问做到。这个好像是正解。

D2T1 正解?

因为 \binom{5}{2} = \binom{5}{3} = 10,因此可以通过 10 次询问解出五个点间两两的距离。

求直径可以用 grader.cpp 里面的做法,需要 2 次询问每个点到点 w 距离的 \max

对于每次查询,先解出 5 个点两两的距离 a_1,a_2,a_3,a_4,w。考虑询问 (w,x,a_1),(w,y,a_1),(w,x,y),就可以通过 3 次询问得到 \operatorname{dis}(w,x),\operatorname{dis}(w,y)

因为 \operatorname{dis}(w,a_{1 \sim 4}) 已经询问过了,那么共需要 3n+\operatorname{eps} 次询问 1。注意要特判 n \le 4