纪念一下人生首次$CF$翻车(雾
$A$
判断是否$\lceil \frac{a}{c}\rceil+\lceil\frac{b}{d}\rceil\leq k$即可
1 |
|
$B$
如果没有楼梯使得上下两层房间连通,显然答案为$n$
如果有楼梯使得上下两层房间连通,可以考虑贪心
显然从两边往中间寻找楼梯,答案一定最优(雾
1 |
|
$C$
先吐槽一句这道题,真$TM$拖节奏+崩心态
一眼扩展欧几里得解同余方程,但是早就忘得差不多了
直接拿了之前的板子,大力调一波交上去就$WA$
发现可能会爆$long$ $long$,改成__$int128$怒提一发$CE$
最后改成暴力枚举就过了???不过最后评测的时候还是$TLE$
这道题前前后后总共花了大概$1h$,最后还没做出来
回过头来看看这道题,发现还是比较妙的
先扔一个结论,如果方程有解,那么在$y \leq w$范围内一定有解
考虑证明,假设存在$y’=aw+b(a \ge 1,0 \leq b < w)$使得$xw+y’d=p$
即$xw+(aw+b)d=xw+awd+bd=(x+ad)w+bd$
观察这个式子左右两项,左边的系数和为$x+aw+b$,右边的系数为$x+ad+b$
因为$w>d$,所以在$y \leq w$范围内$x+y$一定最小,得证
在$[0,w)$范围内枚举$y$,计算是否存在合法的$x$即可
1 |
|
$D$
不难发现合法的情况一定是一条链
枚举链首前两个节点的颜色计算即可
1 |
|
$E$
将$a$数组排序,依次更新最大值/最小值
每次更新出现次数更少的使得代价更小
最后记得特判不能完全更新的情况
1 |
|
$F$
不难发现一些性质,对于每个点来说
如果它第一次不需要改变,那么它以后都不需要改变
如果它第$x(x \ge 2)$次不需要改变,那么它相邻的两个点第$x+1$次不需要改变
从第一次不需要改变的点开始递推,注意特判一些变化的情况即可
1 |
|
$G$
考虑怎么构造排列使得$sum$最大/小
显然,当$p_i=q_i$时$sum$最小
贪心一下,发现当$p_i+q_i=n+1$时$sum$最大
如果$k<(n+1)*n/2$,那么无解
如果$k \ge (n+1)*n/2$,考虑如何构造一种合法方案
首先使$p_i=i,q_i=i$,那么当前的$sum=(n+1)*n/2$
贪心一下,每次在未被交换的值中选取最大的和最小的交换
这样交换,每次$sum$的增长一定最大
特判最后一次交换时$sum>k$的情况即可
1 |
|