其他分享
首页 > 其他分享> > Codeforces Round #806 (Div. 4)总结

Codeforces Round #806 (Div. 4)总结

作者:互联网

比赛地址

比赛情况

排名:?? / 27864
AC:7 / 7

题目分析

A

语法题

B

看一下出现多少字母,加上字符长度就是答案

C

因为是倒推,所以 D 就加,U 就减,最后输出模10的余数即可

D

string+map

先把所有string放入一个map里

然后对于每一个string枚举分界点,判断是否存在两个字串都在map中

E

每个位置只会与3个位置有关,于是把每个点本身、旋转90,180,270的格子都找出来,看一下最少要变多少个

答案记得除4

F

题目要求 \(a_i<i<a_j<j\)

先把不满足 \(a_i<i\) 的数筛走

然后从前往后遍历,满足 \(i<j\)

现在约束条件只剩下 \(i<a_j\),此时只需要看一下有多少个 \(a_i\) 满足 \(a_i<i\) 且 \(i<a_j-1\),这一步可以用前缀和预处理

G

有个很明显的性质,如果某个地方使用了坏钥匙,后面必然全部使用坏钥匙

而 \(a_i\leqslant 10^9\),\(2^{30}=1073741824>10^9\),也就是说坏钥匙用最多30把后后面的数就全变成0了

于是我们可以枚举哪个地方开始用坏钥匙,然后向后统计30个

时间复杂度 \(O(n\log n)\) 左右

赛后总结

手速还是慢了

A还算顺利,看完后马上打,调了一下,2min时过

B理解题目时花了点时间,打得也挺快,7min时过

C也不错,较为顺利,12min时过

D就出大问题了

也开始想着用string写,写到一半,觉得string用得不熟,想着8位不用用哈希来写,然后调不出,于是又改回string,然后string取字串的函数忘了,被迫上网查,然后好不容易打了个string+map才在31min时过

E看完题后感觉很套路,打了段代码发现过不了样例,发现理解成翻转而不是旋转,纸上推了推再改了改44min时过了

F看完题后一开始觉得要用单调队列,打完后过不了样例,仔细想了一下,发现那个前缀和就行,59min时过

G一开始觉得要不断判断 \(k\) 和所有数减去的关系,然后死活调不出,然后发现某个地方用坏钥匙后最多30次就全变成0,然后打了个暴力,然后90min是并 过

标签:map,string,时过,30,Codeforces,然后,钥匙,Div,806
来源: https://www.cnblogs.com/zhangtingxi/p/16473092.html