Day 0

准备工作

环境懒得测了,听别的队说是C++14还是C++17的什么特性用不了?反正我们都是C语言码风,不怎么在乎。
队友FEZ嫌桌面不好看,换了个阳间的电脑桌面
打印机坏了,热身赛结束后又整了半天

热身赛

A

初始有 1 ∼ n 1\sim n 1n n n n个数,每次随机选取两个数删除,若它们互质则获得1分,求得分期望。

第一眼:这就不是 [ n 2 ] [\frac{n}{2}] [2n]吗?后来发现是题面第2段断句断错了。不然题目也太水了吧
要判断两个元素是否互质,它们是完全随机选取的,那不就是算数学期望嘛?直接 O ( n 2 ) O(n^2) O(n2)做,最后用gcd约分就行了。
打了一发,样例过了,交上去RE了。原来还要特判 n = 1 n=1 n=1的情况。
改了一下,WA了。发现没注意到答案会爆int。
改long long之后,又WA了。才发现之前自己代码里 n = 1 n=1 n=1的情况输出了"0/0"。
改成"0/1"之后终于过了。(罚时已经炸了)

C

圆周上有 n n n个点,让它们均匀排列,要使得移动距离之和最小。

首先相对位置不能变,所以不妨先把所有点的方位角sort一遍,然后将第 i i i个点的角度减去 2 π i n 2\pi \frac{i}{n} 2πni的偏移量。就可以得到一种合法移动方案。而最优方案,其实就可以把上述方案的每个值同时加上一个定值得到。所以貌似直接找中位数作为该定值,然后计算一下就行了。
总感觉圆和直线还是有点区别,可能有些细节没有考虑到。不过好像也没找到啥反例,也来不及多想了。直接上去打了一下,居然就过了。

B

给定一个 n × m n\times m n×m的矩形草地和一个指定的出发点,每秒所有格子长1个单位的草,并且你可以向上下左右4个方向中任意方向走1格(或不动),并收割所在格子的所有草。问k秒内你最多能收多少草。

最后我们3个人搞了1小时没调出来……,大概思路:
可以考虑倒着走,这样走重复的路不会被覆盖。
问题的关键是要找到一条Hamilton通路,然后让指定的出发点尽可能位于该通路靠后的站点。

1 × n 1\times n 1×n的需要特判,我们猜想其余情况一定可以位于最后两站:
1、有一条边为偶数,那一定有一条Hamilton回路。
2、如果不是 1 × n 1\times n 1×n的草地,且两条边都是奇数,那么要看那个点的坐标。我们猜想奇坐标(横纵坐标和是奇数)都可以位于倒数第2站,偶坐标都可以位于最后一站。
感觉好像没啥问题?
(2021年补充:横纵坐标和为偶数时,可以按风车的形状将图分成4个矩形,从而构造出1条Hamilton回路。然后在风车中心出切断即可)

Day 1

准备工作

打印机还是不太好使,从9:00一直搞到了正式比赛前5分钟,和另外一个队换了一下,结果他们队能用,我们电脑接他们打印机也能用。。就听玄学的。
9:00多核验身份,没啥事干,看旁边队两个电脑联机直播下围棋。。
10:30点的KFC到了,在比赛前把吃了(两个队友从9:00-16:00啥都没吃,真的猛)
用来打印题面的打印机频繁卡纸,我们在开场后1个多小时才拿到基本完整的3份题面。

正式赛

开场没有拿到纸质题面,我们先盯着电脑看了A和M。M题发现是树形结构,感觉比较可做,但应该不是最签到的那题。A题TXY看了上去打,5分钟后发现题意读错了,后来又读了好几遍还没读懂题意。
后来看了一眼榜,发现G是签到。FEZ秒推了一个式子,上去给过了。
然后TXY写M,同时我发现D题可以分3种情况讨论一下就行。上去写了一下,然而代码写错了两处,挺隐蔽的(而且跑样例没问题)。WA了两发才过(浪费了30min,还多了70min的罚时)
后来TXY过了M。
我发现I题数据挺小,可以直接 O ( n 2 m ) O(n^2m) O(n2m)暴力。后来WA了一发,发现是没考虑 m = 1 m=1 m=1的情况(后来发现旁边两队也是这个原因都WA了一发)
之前FEZ就发现B题过得挺多的,但一直没想到思路,这时想到了,然后来了一发segmentation fault。
我看了H,发现和昨天C题挺像的,所以很快想到了做法,上去过了。
接着FEZ把B调过了。
这时还剩2h多,但手头没有啥可做的题了。
后来TXY觉得L题可以猜测最多只有1个拐点,且一定在直线下方不超过1格处(其实可以证明,但没有想到),TLE了好几发,最后重构一下过了。
后来我才理解C的数位DP。极限rush,最后发现还要考虑X,Y=0的情况。最终在还剩3min时压线通过了。
最终8题rk29,拿到了人生第一场Au。

部分题解

C

数位dp
可以依次枚举 i + j i+j i+j的最高位。在最高位固定时,从高位往低位考虑。
d p [ p ] [ 0 / 1 ] [ 0 / 1 ] dp[p][0/1][0/1] dp[p][0/1][0/1]表示枚举到第 p p p位, i i i中已枚举的部分小于/等于 X X X对应部分, j j j中已枚举的部分小于/等于 Y Y Y时的方案数。
每次转移,需要考虑 4 × 4 = 16 4\times 4=16 4×4=16种情况。

D

分3种情况:
1、把走整条线段任务分给1个人
2、每个人径直走向异侧端点
3、每个人就近走完同侧的一部分。二分分界点,使两人用时尽可能均匀。

H

受到热身赛 C C C题的启发。
首先人和对应菜排列的相对顺序是相同的。
O ( k ) O(k) O(k)枚举所有对应情况,对每种情况暴力计算即可。

I

路径只有两种情况(弧度不超过2:小弧+径向;弧度超过2:双径向)
O ( n 2 m ) O(n^2m) O(n2m)暴力即可(虽然应该可以 O ( n m ) O(nm) O(nm)做)(能不能直接推通项公式然后用更低的复杂度做不清楚了,懒得想了)