A1. Gardener and the Capybaras (easy version)
思路 O(n2)暴力,枚举分裂成三部分的两个断点,提取三个部分,按照题意模拟即可。
A2看一眼数据范围觉得很难不会 s k i p skip skip了
B读完题一眼没思路,直觉上感觉一定是全部 o r or or起来然后去掉一个数这样最优,还能保证题目所说要求。然后手写一个交了一发就a了。
C题一般是我的强项,题目给定
n
n
n,
x
x
x求
m
m
m,然后可以很容易的发现
a
n
d
and
and的性质,只考虑什么时候变0(也就是消掉1的过程),
a
n
d
and
and 1对最后的结果毫无影响,可以发现只跟二进制最后一个1出现的位置有关,也就是
l
o
w
b
i
t
(
x
)
lowbit(x)
lowbit(x)这个位置,只有这个位置才会影响题目所要求式子,最后式子一直暴力一定会变为0,该题就转化为
l
o
w
b
i
t
(
x
)
lowbit(x)
lowbit(x)暴力,对
n
n
n暴力加上
l
o
w
b
i
t
(
n
)
lowbit(n)
lowbit(n),直到小于等于
x
x
x为止,最后判断是否等于
x
x
x即可。
C题代码
D. Friendly Spiders
赛后立刻被fst
赛时思路大致是对的,细节问题。
这是一道很容易想到的图论建图问题,感觉比C题要好想许多。我们考虑维护gcd连边的情况,我们想办法建图,套路性地可以想到调和函数维护某个数的倍数,对于一个数
x
x
x来说,他的任意两个
x
x
x的倍数他们的
g
c
d
gcd
gcd一定是
x
x
x的倍数,所以就可以保证题目所说的
g
c
d
gcd
gcd大于1的情况,需要注意的是题目卡掉了一些不太正确的建图,我们在枚举
x
x
x的时候,我们只需要枚举当
x
x
x为质数的情况。然后这题在赛时wa了几发后还是过掉了。
E.The Human Equation
这道题是一个非常典型的傻逼题,赛时考虑到交替出现,于是我想着维护两种变量,一种是最后一个数为正数的序列个数,一种为最后一个数为负数的序列个数,然后硬模拟一遍。
比如说当我们遍历到正数的时候,我们肯定要引用最后一个数为负数的序列,插入到这些序列的后面,如果不够的话就补上,然后就转化为最后一个数为正数的序列,再加到最后一个数为正数的序列个数上。这样贪心一定是最优的,因为满足有多少用多少的原则,然后暴力模拟即可。
可惜的是,赛时用小号打的,没想到能打出这么好的效果,在赛时还剩40min的时候,重新写了一遍ac代码交到大号上,结果 d d d被fst上大分失败!2000分体验卡一日游QaQ。