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)

posted @ 2022-07-30 19:39  Displace  阅读(24)  评论(0)    收藏  举报