ABC223比赛记录
想说的话
打了将近一个月的\(Atcoder\),包含\(VP\)在内应该有10场左右,一直没有时间总结,今天就把坑填了吧。
ABC223
A
询问一个整数是否是100的正整数倍。
B
问一个字符串的所有循环移位中字典序最大的和最小的。
循环一遍取出所有的字符串,排序即可。
C
有\(n\)个保险丝,第\(i\)根保险丝的长度为\(A_i\),每单位长度燃烧所需要的时间为\(B_i\),问当累计燃烧多少单位长度时燃烧时间刚好是总燃烧时长的一半?
首先算出总燃烧时长,再一根根去烧,累加长度,当剩余时间不够烧完当前这根时,就按照比例截取。
D
给一些偏序关系,要求取出一个序列,使它的字典序最小。
优先队列+拓扑排序,和菜肴制作那个题很像。
E
这个题真的恶心人。
给一个\(X\cdot Y\)的大矩形,问能否切出三个矩形使这三个矩形的面积至少为\(A,B,C\)。
分情况讨论。
第一种:保留长或宽分成三个矩形,整个图案是"目"字形。
第二种:割一个矩形,再根据这个矩形的两边和原来大矩形的长宽平滑的割成三块。
交换\(X,Y\),枚举\(A,B,C\)的全排列可以避免关于匹配问题的讨论。
F
F没有E恶心人。
给定一个括号序列,实现单点修改,询问区间是否为合法的括号序列。
写个支持区间修改和区间最大最小值的线段树就好了。
G
换根DP。
设\(f[st][0/1]\)表示是否选取\(fa_{st}\to st\)这条边的最大匹配数。
换根的时候把父亲当成儿子讨论一下。
H
线性基。
把询问离线下来,线性基中除了元素外,还记录每个元素出现的尽可能玩的位置。
基本上是个板子,询问的时候关心是否用到了左端点以前的元素即可。
总结
这一场打的还不算差,只是E没做出来心态有点崩,就没看F了,这实在是一件遗憾的事。
打这种比赛一定要注意细节,保持好的心态,不要以为这个做不出后没的更做不出,要看完所有题。