2019.10.9考试反思

题目:曾老oj

T1 2197

找规律80分,正解01背包

预处理1~n每个数的收益,然后以所求数N大小为代价上限,N所包含数n大小为代价,01背包求解

反思:什么题都往数学推导上靠(还写不出来),刷题少了一眼看不出来。(我太菜了!!!)


T2 2198

暴力60分,正解二分答案+前缀和+单调队列维护区间最大值

据说不算常数的情况下是O(n)的。每个数都减去二分所得答案,用单调区间确保当前长度为(l~r)的区间内队首可得收益最大,查看是否存在区间的区间和大于0.

反思:曾记得某gigo说过,一眼看不出来的题先考虑能不能二分


T3 2199

暴力都没写出来(我太菜了)

正解:依次增加最小边+并查集维护连通性+连通块判环

要使每个数的入度都为1,则最后所得图的每个连通块都有且只有一个环

依次增加最小边确保所到状态为最优解,并查集维护确保每个数的入度不大于1,同时也维护了当前块内是否存在环,连通块判环确保每个每个块只有一个环

合并两个并查集时,判断是否有环,即组成G的A和B中无论谁有环,G都会存在环,而当A和B都有环时,该边不能参与建图(任意连通块有且只有一个环)

最后记得用一个计数器统计入度为1的数的个数,若不等于你,则输出“No”


总结

刷题刷少了,过于依赖模板,不思变通(即我太菜了!!!)

猜你喜欢

转载自www.cnblogs.com/57412626-996842/p/11644689.html