比赛前去了81纪念馆和滕王阁,必须说江西的风景还是不错的,不过可惜的是作为一个江西人没有吃到足够辣的江西菜
赛前一晚做梦梦到比赛打炸了,然后还有另一个比赛也忘记打了,回去被同学鞭尸给我吓醒了,谁懂醒来还在酒店床上的救赎感
还好梦是反的,最后7题拿下第一个金牌,可惜最后封榜后没有过题
补题链接https://qoj.ac/contest/2521
L
签到题,没什么好说的
G
同样是签到题
A
队友打的,不记得了
K
所有菜品根据模4可分为4类,0,1,2,3
策略是先把0上完,然后上3131...直到3或者1用完
如果剩了3,可以循环上332,如果剩1就循环上211,如果2不够就没有答案返回no
最后剩的2就222的上,时间复杂度O(n)
H
肯定只有n次加珠子,先把这n次加上,得到数组1,2,...,n
把第二种操作插入这n个操作中,本质就是一个单点加1再对这个点之后的某个后缀区间加1
把目标数组ai-i,得到剩下的就是需要用操作2补全的量,如果有负值直接输出no
从左往右贪心想最少需要多少次操作即可,时间复杂度O(n)
C
如果对于[L,R]的虫洞,能快速判断它们能否被划分成不超过k组,就能用双指针解题
赛时突然想到的假设,后来可以证明,把一个虫洞看成一个区间加1操作,如果最后没有点大于k,就说明这些虫洞可以被划分成不超过k组
最后线段树+双指针一发过,时间复杂度O(nlogn)
B
感觉n比较大的时候很难出现一个人赢所有人或者输所有人的情况
于是手算了一下随机选两个人u和v,u对v是k间接战胜的概率
\(P(k=0)=1/2,P(k=1) = (1-(3/4)^{n-2})/2\)
可以看出来当n很大时,k = 0和k = 1的概率加起来已经很接近1了,那么就不需要考虑其他k>1的情况
假定分界点是n = 100,当n<=100时使用floyd算法预处理多源最短路,时间复杂度O(n^3)
当n>100时遍历所有点对(u,v),如果u赢了v,u对v是0间接胜利,v对u则是1间接胜利,时间复杂度O(n^2)
写法很简单,从思考到ac花的时间感觉不超过20min,最后还是1发ac,感觉这次状态真的不错
赛时过的就这些,其余待补