2022.08.09 NOI模拟赛总结
1.时间安排
7:30~8:00
T1: 求网格图划分为若干宽为1的长方条的最小染黑边的数量,感觉是插头DP,没想出来暴力怎么写。
T2:给定n(n+1)的排列,求2n个位置满足这2n个数中第k大值和第k+1大值相邻(k是奇数),只会暴力和原序列有序的40分。
T3:求是p的超集和q的子集的所有下标的对应位置的数的和,有20分暴力,还有30分应该是根号分治。
8:00~8:30
打T2的暴力和特殊性质,手构数据没问题。
8:30~11:30
先打了T3的暴力,没啥问题。
思考如何根号分治,如果p和q不同的1数量小于10可以直接暴力,大于10的话需要预处理。
想了很久,感觉不可做。
到9:30左右突然脑出来一个伪二维子集卷积的东西,把220分为前10和后10分别前缀和,查询的时候分为pq的前10位和后10位以及p&q的前10位和后10位,根据二项式定理容斥合并。
按自己想的写完后,答案错炸了。
惊奇的发现,数据3 7算的是4 7的答案,1 5算的是4 5的答案,也就是莫名其妙算的是p对q补集的答案,不知道哪里的问题。
干脆将错就错,把p转成对q的补集,反正结果是对的就行。
跟暴力对拍没问题。
11:30~12:30
先打了个T1的暴力状压。
推了推轮廓线DP的转移,细节太多感觉调不出来。
然后去搞T2的模拟退火,反正没subtask。
但是写炸了,一直死循环,不知道为什么。
result:
T1:0 T2:40 T3:50(数据锅了)
2.总结
T1:
为了保证复杂度n<m时交换了n、m,但是对应的数组忘了翻转了……改后15分……
图论寄了,全都忘了。
55分轮廓线DP据写出来的大神们说讨论不算复杂,但是我是真不想再搞大力分讨的DP了(开摆)。
正解是最小割。
可以发现互成90度的相邻两条边至少染一条,于是就可以转化成最小点覆盖了。
源连横边,汇连数边,都没染色的相邻90度横竖边连边,跑最小割即可。
感觉时间充足还是能想出来的,只给不到1h时间思考太亏了。
T2:
首先考虑把原序列划分为n个有n+1个元素段,每段排序。
找出来所有段中次大值最大的,那么这次就选这个段的最大值和次大值即可,删去这个段,然后把所有其他段的最大值删掉。
重复n次,就可以找到这2*n个位置。
用set维护以上过程即可。
神仙构造题。
T3:
之前考试还考过,对这题一点印象都没了。
不过自己能想出来那个离谱的根分也挺离谱的。

浙公网安备 33010602011771号