今天必须说一下牛客网上的2018年全国多校算法寒假训练营练习比赛(第五场)
由于个人原因未参加比赛 赛后补完了所有题,但是A题比赛的时候还是看了的
本场主要内容有线段树 树状数组 KMP 并查集 暴力 优化的暴力 推理题
A(逆序数): 求逆序数。这道题刚开始数据有错误,蜜汁WA 20% 扩大数组、改成long long 去重 各种想法都试过了,还是WA。。。最后重判了,给了1A。。。应该用树状数组、归并排序都能做吧,比较裸,就是数据错了有些坑
B(Big Water Problem):这道题其实可以暴力。。。用树状数组和线段树应该也没问题。单点更新区间查询
C(字符串的问题):说难也不难。。。next数组的应用吧,我直接标记小于l的所有的next[i] 然后从next[l]开始找到第一个有标记的地方就是答案,没找到就没有。。。过了。。。数据水了吧
D(集合问题):这道题真是想了好久都没想出来怎么做。。不过显然是用到并查集,看了一下别人的AC代码,直接用map判断a-c[i]和b-c[i]是否在集合中,如果在就把i和map[a-c[i]](map存的是该数在数组中的下标)关联一下,否则关联0,或者把i和map[b-c[i]]关联,否则关联n+1,最后看如果find(0)==find(n+1)就肯定无解,否则find(i)==find(0)就是在A中,否则在B中。
E(情人节的电灯泡):比较裸的二维树状数组或线段树。。。不多说
F(The Biggest Water Problem):同余定理 答案为 (n+8)%9 +1
G(送分啦-QAQ):枚举一下不难发现是斐波那契数列。。直接暴力算出前50项 再暴力判断即可。
H(Tree Recovery):裸区间更新区间查询。。。
打cf了。。。