2022.07.30 NOI模拟赛总结
1.时间安排
7:30~7:45
T1:伪交互题,给定01矩阵,求是否存在它的k次幂满足矩阵的元素全非0,暴力做有20分,感觉不可做。
T2:数据结构题,支持区间栈push和区间pop,求某个栈的第k的元素,作过队列版本的题,可能能类似做。
T3:数论题,给定每个位置的上界,求卡k个上界的非降序列的个数,显然可以DP,但是最优似乎只能做到 \(n^3\)。
7:45~8:30
想起来队列版本是基于元素下标的连续性的,栈的话元素下标在弹栈后不连续了,就不能做了。
想了很久怎么转化,都不能做,最后只能先打了个 \(n^2\) 的暴力。
8:30~10:30
先打了基础 \(n^4\) DP验证正确性(因为题面出问题了,自己认为是求答案后缀和),样例没问题、
然后写了 \(n^3\) 的前缀和优化,测下大样例是20s(时限10s),感觉卡常有希望。
然后开始漫长的卡常之路,滚动拆成背包节省申请空间的时间消耗,取模优化等等。
最后卡到大样例6s,极限数据10s,到极限了。
10:30~11:00
把交互的暴力写了,一些细节问题调了一会。
对正解分没什么想法。
11:00~12:30
全力想T2。
似乎可以转成每次+1-1然后求后缀和为k的位置,但是栈空后不能pop导致这个做法假掉了。
之后想了很多做法,但是总是变成 \(n^2\)
result:
T1:20 T2:20 T3:30(OJ)/60(lemon)
2.总结
T1:
%J神和xczyz场切。
完全没想到这题和图论有关系。
0/1矩阵可以看做是邻接矩阵,那么他的k次幂就是每个点经过k条边能到达的点的集合。
问题就变成了每个点是否能到达其他所有点。
求强联通分量,看个数是不是1即可。
完全想不到,对0/1矩阵不敏感,0/1矩阵变邻接矩阵可能还会出矩阵树定理的题,要注意。
T2:
数据结构妙题。
考场上想的后缀和为k其实很接近正解,但是思考没有进一步加深。
实际上是求最后一个后缀和为k的位置,正确性显然。
而且不需要考虑空栈弹栈的特殊情况。
证明考虑如果出现空栈弹栈了,如果序列的后缀是合法的,而存在前缀不合法,那么这时前缀就没有用(相当于空栈)。
直接扫描线维护序列,用二分加线段树求答案即可。
T3:
60分是留给分治+ntt的,被我n^3偷鸡了。
但是太复杂了,看不懂。
(其实是懒得搞多项式涉及到ntt的东西了。)
(待upd)

浙公网安备 33010602011771号