联合省选 2025 游记

Day 0 (2.28)

试机,按照惯例试了一下 \(2000\) 的 ULL Floyd,8s。

Day 1

进场、发密码、看题。

怎么输入里有测试点编号,这么良心?

看完 T1 感觉可能的中位数应该是一段连续区间,这样两个二分就做完了,至于 check,可以 \(O(n)\) 计算最多有多少个 mid,比 mid 小的数和比 mid 大的数的个数差的最小值,简单判一下。

写写写,发现不对劲,这东西可能会把不存在的数算进答案里。

至少 check 的思路没问题,那就直接离散化把值域搞成 \(O(n)\) 个区间,每个数能不能成为中位数只和它所属的区间有关,check 可以用一个扫描线和一堆树状数组做到总共 \(O(n\log n)\)

T2 先写了一个 \(O(nq)\) 暴力。

看一看,发现它时间 6s,空间 2G。算一算,发现 \(10^{10}\) 个 bit 比 2G 小。

那就 bitset 处理能否到达。然后怎么做呢?看一眼部分分,AB 性质可以分块做,赶紧写了,拼上 \(O(nq)\) 20pts,有测试点编号就是好写

T3 根本不会!暴力只会 \(O(Tn!m^2)\),算下来 \(n \le 10\) 卡满都 \(10^{10}\) 了,不太能过。

然后还是写上去了,发现样例跑得飞快,完全不像 \(10^{10}\),不管了。

Day 499122178

出考场,听说 T2 是根号重构,太强啦!但我怎么不会?

Day 2

一看 T1 怎么这么熟悉?ABC 原题?线段树维护 \(pos_i-i\),写几个线段树上二分和区间推平秒了。

第二个样例怎么错得离谱?哦原来还可以往前推的啊。往线段树里加了个区间最小值之后标记下传又错得离谱了,调了不知道多久后过样例了。

完全不拍!相信大样例!开 T2!

性质 A 纯暴力,先写了个 \(O(4^m)\) 枚举边的存活状态,然后爆改 prim 再乘个 \(O(n^2)\),一看怎么样例二第一组数据没过?\(1280\rightarrow 1256\),重写了两遍还是不对,合理怀疑 prim 没正确性,直接枚举外向生成树的 \(n-1\) 条边过了。

性质 B 生成树唯一,容斥枚举哪些点能够到达其他所有点,样例能过。

试图将性质 A 与性质 B 进行对拍,发现每棵树拍出来的答案都一样,猜测树的形态没有影响,不过容斥都写完了。

开 T3,暴搜启动!

Day 3

还原了一下自己的 D1T1 和 D2T1,过洛谷民间数据了。

Day 6

\(100+24+8+100+24+8=264\)。感觉还行。

D1T2 \(O(nq)\) 有 88pts?