按照过题顺序放代码和思路。
C 签到
复杂度$O(1)$。
好像是codeforces 4A,岑岑以前做过,抢了个一血。
1 | int main(){ |
B 动态开点线段树
复杂度$O(mlogn)$。
这题想过可以pdbs+二分,想过可以map+并查集,但是个人感觉,都不如动态开点好写。
那么问题就变成了求对于全局来说,区间内最小未出现的数字是多少便可,经典操作。
1 |
|
D 字符串hash
复杂度$O(\Sigma(|S|+|T|))$。
这题挺显然的,对$S$和$T$分别hash处理一下就好了,看通过率这么高,大胆猜测没有卡hash,直接莽就完事了。
1 |
|
E 线段树
复杂度$O(nlogn)$
写的$O(nlogn)$做法,显然$O(nlog^2n)$比较好写,线段树+二分便可,但是怕被卡时间复杂度。
1 |
|
G 回文自动机+前缀和
时间复杂度$O(26*|S|)$。
对于回文自动机里面每个状态$sta$,可以计算它的出现次数$cnt$、长度$len$等信息,那么只需要前缀和维护一下区间$[L,R]$内字符$c$的出现次数便可,那么就可以维护出$sta$对应回文串的贡献$val$。
1 |
|
M 贪心
看了一下代码,好短,队友把它秒了……
1 |
|
K 几何?猜结论?
复杂度$O(n^2logn)$
一开始以为是很难的几何,看到$n=1000$,不妨考虑对所有$pair(p[i],p[j])$求出中点$q$,可以知道重复次数最多的$q$就是中心点最佳位置了,显然,因为每次重叠,都减少了一组点的对应点构造。
1 |
|
I 主席树
复杂度$O(nlogn)$。
对于每个$a_i$,贡献的位置是一组$pos_{i,j}$,不妨用主席树维护出来,那么就变成了:查询第$L$棵树到第$R$棵树中间,$L \le pos_{i,j} \le R$的贡献值。
1 |
|
A 博弈找规律
队友发现其实就是个斐波那契数列,然后就冲了。
1 | import java.math.BigInteger; |
J 树形dp
“dfs一下求个逆元就出来了”。
1 |
|