目录
【省流版】
I 题是正解却被卡常的,H 是比赛结束后 2s 以后过的……
上机情况如图
【Zlw】上来先开始看 E,看到平方差想到化成 ( a + b ) ( a − b ) (a+b)(a-b) (a+b)(a−b) ,但是一开始以为是质数不合法。不过后面细想一下发现分奇偶考虑, ( a + b ) , ( a − b ) (a+b),(a-b) (a+b),(a−b) 奇偶性要相同,然后就能得到答案了。
【Scy】G 题题意有点迷惑,看了一遍仍然没懂,于是让 zlw 先开始敲题,趁着他卡住了一下的间隙签到完毕。
【*】前两题在 16/18 min 的时候通过。
【Zlw】接着开了 L。发现满足条件的 a i a_i ai 大致是小于中位数。稍微细想可以发现是严格小于 a 中位 + 1 a_{中位+1} a中位+1 。于是套点数据结构就可以单 log \log log 了,不过一开始没想离散树状数组被孙✌怒骂一通,后面想想虽然离散化麻烦总归没有平衡树麻烦。还好写了离散化,据说平衡树被卡常了。
【*】但是 L 爆 int
没有发现浪费了一点时间,1h 多一点
−
1
-1
−1 通过 L,之后 zlw 和 sky 看了 K 题,scy 开始 D。D 题应该是想到第一步大与根号的质数幂次为
1
1
1,但是发现不太会高级筛法,加上看榜提交数量过百但无人通过,于是放弃了这题。大概空机了 15 min,sky 说大致会 K,于是开始写。
【Sky】题目大意就是有一个节点数为 n n n 的无向图,但每个点的度数最大为 3 3 3,而且给定了遍历图时的走法,可以理解为固定路线。要求从节点 i i i 出发能走到的最多边数。
一开始我理解为线路可能是链加环的形式,想了半天怎么做这个记忆化搜索,但经过讨论后发现任何一个线路都一定是环,因为题目给了“所有走廊都是双向的,因此如果从房间 u u u 到房间 u u u 有一扇门,那么从房间 v v v 到房间 u u u 也有一扇门”,然后就好做很多了,只需要遍历这个固定路线,发现环之后把环上的所有点的这个路线状态都更新答案为环的边的数量即可,然后记忆化,总复杂度 O ( n ) O(n) O(n)。
这个路线状态可以理解为,点 u u u 向它的某个节点的边,因为同一个点可能在不同的线路环里,但是一个边一定只被一个环包含。
【*】这道题似乎走弯路走的挺久,写了将近两小时,还 TLE 了一发。Sky 在写这题的时候 Scy 和 Zlw 讨论了一下 H,然后 Scy 独自开了 I 并认为得到了正解,并和 zlw 进行了两次确认。Sky 在写了 1.5 h 的时候遇到问题才进一步和我们讨论,再发现特殊性质以后 20 min 不到通过了这题。感觉这题耗时过久的原因出在前期考虑不充足,然后遇到问题没有即时的讨论。不过好在仍然有多线作战。
【Scy】过了 3 h 的时候开始写 I,差不多 40 min 写完,一个 O ( n 3 log n ) O(n^3 \log n) O(n3logn) 的区间 dp 加上二分优化。但是提交在 4s 时限的情况下依旧超时,意识到被卡常后和队友交流尝试多次修改,但是无果,折腾了快一个小时仍然没有通过。
【*】 I 这个卡常实在是有点无语(一方面可能牛客的评测机确实有点慢了,第一发提交测了好几分钟才返回 TLE,估计也是靠后的几个点)。赛后随便乱改,删掉了一个 O ( n ) O(n) O(n) 的循环反而过了( n = 420 n = 420 n=420)。
【Zlw】H 是很快就有人通过的题,但是据说首发是暴力干过去的。
第一眼看没读懂题,孙✌中译中了一下仍然不是很懂,最终花费大量时间看完题目。然后孙✌提出了可以按照连续相等的段,然后计算 ∑ ( ∣ s ∣ 2 ) \sum \binom{|s|}{2} ∑(2∣s∣) 的方式得到结果。结合奇特的时间复杂度要求想到了 bitset,但是发现要手写,没写过,遂抄板子。
还得把 unsigned long long
分成
4
4
4 段处理,看着很复杂,遂没敢写。队友写题的时候想了一下,发现
1
1
1 操作可以将差分操作延迟处理,然后处理
[
0
,
65535
]
[0,65535]
[0,65535] 每个数做前缀和之后的结果,以及前后缀
0
0
0 个数、中间的对答案的贡献,然后根据上述说的每个 ull
拆成
4
4
4 份合并。最后 1h 开写,挂了一点点,查出错再交,又删了一会调试,赛后 2s 过题QAQ。
【*】说实在 I 的卡常确实有点红温了,还时不时地抢了 Zlw 的机位,导致他最后几分钟才开始提交,然后发现错误的时候是 59 分,删完注释提交发现已经 too late 了。
【Scy】看题解的时候才发现 B 是和 H,I 一个难度的,是构造题,我可能会更擅长这一类题目,可以由于赛时通过人数不多,并未发现这道题目。
【省流版】孙老板在第一次赛后复盘时有言:对你们来说目前合适的 timeline 是: 1h \texttt{1h} 1h 3 3 3 题, 3h \texttt{3h} 3h 5 5 5 题, 5h \texttt{5h} 5h 保 6 6 6 冲 7 7 7。 于是乎:
在
4
:
52
4:52
4:52 时通过
7
7
7 题并下班,与预言完美的契合起来!(所以说孙老板说我们能 AK,是不是就能 AK 呢)
上机情况如图
【Zlw & Sky & Scy】Zlw 一开始在看 A,Scy 和 Sky 在讨论 I,但是 Zlw 没怎么读懂 A 题,于是加入了 I 的讨论。I 确实是签到,但(由于 Scy 还在煮水饺吃)稍稍想歪了一点,想要开始大力分类讨论。Sky 一开始考虑变形
(
x
−
y
)
m
o
d
k
=
(
k
m
o
d
y
)
−
(
k
m
o
d
x
)
(x-y) \bmod k = (k \bmod y) - (k \bmod x)
(x−y)modk=(kmody)−(kmodx),发现
k
=
x
−
y
k=x-y
k=x−y 貌似有什么性质。但做了一会之后,Scy 发现直接
k
=
1
k=1
k=1 就可以了,快速写,打了个表验证之后就交上去 AC 了。
【Zlw】然后回去看 A,跟 Sky 确认了题意,发现只需要统计 1 1 1 的连续段数,被奇特的样例解释卡住了。然后发现是个典型 dp,很快写完。
【Scy & Sky】Zlw 在写 A 的时候 Scy 去看了 B。吸取了上一次的教训,等 Zlw 开始上机的时候拉来 Sky 确认了做法。如果能找到
a
i
>
a
i
⊕
a
j
a_i > a_i \oplus a_j
ai>ai⊕aj
或者是
a
j
>
a
i
⊕
a
j
a_j > a_i \oplus a_j
aj>ai⊕aj ,就能满足这个不等式。然后 Sky 发现一种很简单的例子就是
a
i
a_i
ai 和
a
j
a_j
aj 有着相同的最高位的时候,也就是
2
k
≤
a
i
,
a
j
<
2
k
+
1
2^k \leq a_i, a_j < 2^{k+1}
2k≤ai,aj<2k+1 一定是能满足这个不等式的。Scy 进一步发现这道题非常诈骗,根据鹊巢原理
n
>
64
n > 64
n>64 的时候都是 No
,其余暴力。写完直接交了,结果 WA。。Zlw 在切了 A 之后来看这道题,怒喷 Scy 这个 fw,
a
i
≤
1
0
18
a_i \le 10^{18}
ai≤1018 还在用位运算模拟(坏了被
a
i
a_i
ai 的二进制和
2
a
i
2^{a_i}
2ai 搞晕了)。于是 Zlw 提出了不等式
2
x
≤
2
x
+
2
y
≤
2
x
+
1
(
x
≥
y
)
2^x \leq 2^x+2^y \leq 2^{x+1}\ (x\geq y)
2x≤2x+2y≤2x+1 (x≥y) 又因为
x
⊕
y
x \oplus y
x⊕y 一定是整数,即要么小于等于
x
x
x,要么大于等于
x
+
1
x+1
x+1,我们可以这样子把底数
2
2
2 直接消掉,进而比较
x
x
x 和
x
⊕
y
x \oplus y
x⊕y 即可便在
00
:
57
00:57
00:57 的时候通过了这题。
【Zlw】然后去看 F。但是看错题了,没看到“只能操作一次”,Scy 读完题发现只能操作一次,然后一起讨论发现直接贪心选择最大的 0 0 0 连续段即可。剩下的也可以只用一个 f f f(连续段长度)去表示,不用写特别多的模拟,浪费了很多时间在读题上。
【*】F 写完以后 WA 了一发,原因是 vector 为空的时候没有做保护措施,仍然会有取里面元素的情况。Zlw 写完以后 Scy 大致测了几个额外的样例,但是没有太注意到这种 corner case。
【*】Zlw 写 F 的时候,Scy 去看了计算几何 G,Sky 看了图论 L。
【Zlw & Sky】这道题题意比较复杂,但其实就是一个简单的计数问题。一开始没注意到全是环,中间出现了反复横跳的确认。再细读了题目的 Input 保证如果 i ≠ j i \neq j i=j,则 a i ≠ a j a_i \neq a_j ai=aj,然后题目又说了每个人一定爱着一个人,不管是自己还是别人 之后,终于确定了这个关系一定是由几个分开的环组成的(包括自环)。
确定之后就是简单的分环的节点数量的奇偶性讨论就好了,实际上只有两种大情况:
-
有两个奇数大小的环,那么被禁止结婚的人一定在这两个奇数环里面,这两个对方案数的贡献就是两个环大小直接相乘。
-
全是偶数大小的环,那么两个被禁止结婚的人一定在同一个环里,分环节点的奇偶位置稍微讨论一下就好了。
对于普通的偶数环, ∣ V ∣ = 2 \lvert V \rvert = 2 ∣V∣=2 的时候贡献为 1 1 1, ∣ V ∣ ≥ 4 \lvert V \rvert \geq 4 ∣V∣≥4 的时候做的贡献为 2 2 2。最后把这几个贡献乘起来就好了。如果出现了不是上面两种情况的,直接输出 0 0 0。跟 Zlw 确认了一下之后,Zlw 就直接写了,很快A C。
【Scy】
01
:
50
01:50
01:50 他俩写完 L,我赶紧找来 Sky 讲了一遍我的做法。分类讨论点在多边形内还是外。在外面答案恒为
2
π
2\pi
2π,在内部答案为距离最远点之间的最大角度。Sky 验证了我的做法,于是开写。很快写完后提交,WA。Sky 给我提供了几个 hack 数据,发现写挂了点的地方,改完以后仍然 WA。于是开始红温,后来想到可能是精度的问题,从 acos()
搭配叉乘算角度改为直接用 atan2()
,但是又由于忘记变换了参考系,一共 WA 了
5
5
5 发,于
03
:
47
03:47
03:47 时候通过。
【Sky】Zlw 在写 L 的时候,Scy 找我来做这道计算几何,我当时就有种不好的预感,但这道题确实是下一道该做的了,也没办法。这题的正解实际上就想了不到十分钟,但是因为它是计算几何,加上 1 0 9 10^9 109 的数据范围,不出意外,被卡精度了。被卡了一个多小时,中间还一度怀疑做法是不是有问题,最后在这个做法上优化了一下精度问题,终于 AC 了。
【*】Scy 在静态调试的时候,Zlw 又和 Sky 讨论出了 H。但是写完提交了几次都是 WA,也在红温的边缘(尤其是 Sky,连续看了两坨)。G 计算几何的通过算是稳定了队内的情绪。
【Zlw】Scy 写 G 的时候我和 Sky 讨论了一下,发现枚举边作为路径上最大的 w w w,然后问题就转换为若干个一次函数在某个位置的最优解。但是这里想的双指针做法假了,一直到最后 40min 才发现。然后 Scy 调出了 G,来一起想,因为没人会改李超树的模板,提出是否可以维护一个上凸包。观察规律尝试了一个形似单调栈的东西维护上凸包过了。
【Sky】在红温 G 的时候,我也来帮 Zlw 想了下 H,他说了下他的做法,但我当时其实只听懂了前半段,后半段有点迷糊没有听懂,就认为 Zlw 这个做法没有任何问题,在思考 G 错在哪的同时,Zlw 上机直接敲了 H。
但问题刚好就出在这个后半段,在处理 t j − w j × k i t_j - w_j \times k_i tj−wj×ki 这个式子的时候,Zlw 的双指针神秘做法其实是有问题的,最后快半个小时的时候突然发现。然后想着这里好像有点像李超线段树,但这道题的通过人数应该用不到这么复杂的数据结构,三个人就同时开始想怎么去解决这个问题。最后两个队友想到了单调栈维护下凸包,Zlw 在高压之下光速写完并一发过,激动人心啊,激动人心。
【*】H 的做法假了一小部分,说明验证正确性这一部分仍然需要改进。好在大家不断地相互鼓励下,提出了凸包的优化,在并不是那么熟悉的情况下在 04 : 53 04:53 04:53 极限通过了 H(也算是上一次赛后两秒过题的补偿了吧)!