时间安排
8:00~8:20
手玩了一会T3,发现了一个结论,写了个暴力验证结论的正确性。
然后考虑优化
8:20~9:00
一开始想用主席树求,后来发现这东西不能二分,然后就去想根号做法,莫队加线段树可以轻松维护,觉得 n n l o g n n\sqrt nlogn nnlogn应该能跑过 6 e 4 6e4 6e4,就开始写,写完就交了
9:00~9:20
写了T1的爆搜,推了一会没有发现什么性质,感觉是什么神奇的dp套dp,就放弃了去看T2
9:20~9:40
先写了个n=1的情况,然后n=2的情况在三分和二分之间纠结了半天,最后觉得三分更保险就写了三分
10:00~11:20
首先可以通过贪心把n>m的情况盘掉,那么复杂度就之和m有关了,首先想到一个
O
(
m
7
)
O(m^7)
O(m7)的dp,可以通过二分做到
O
(
n
5
l
o
g
n
)
O(n^5logn)
O(n5logn),转移是一个卷积,可以
f
f
t
fft
fft,做到
O
(
n
4
l
o
g
2
n
)
O(n^4log^2n)
O(n4log2n)考虑到常数过大,因此估计不能过。
然后就开始想贪心,直觉感觉直接做就是对的,但是跑出来的答案大了,然后又想通过模拟退火逼近答案,发现根本没办法,最后就放弃了。
11:20~11:40
测了一下T3,发现要跑4s,感觉要完,试着卡了卡常数,但是没有任何作用。
订题总结
T1
万万没想到,以为是一道dp题,结果是通过一些性质枚举,然后用数学计算合法的个数。
考场上留给这道题的时间太少了,根本没发现性质。不过也算有一个教训,就是见到计数题,不一定就是dp,可以先想一下组合/数学,或者合法的状态可能很少。
T2
首先题目的性质就没有看出来,然后就是一堆一堆的细节和分类讨论,感觉就算知道思路在考场上也写不出来。
推性质的能力还是不行。
T3
这个题给我一个很好的教训,以后所有的函数都要加inline
加了inline就有50分,不加就被卡常了。
75分的做法并没有在50分的做法的基础上拓展,而是之间在原题的模型上用数据结构维护,不过感觉设计这样一档与正解和题目性质,结论都完全没有关系的部分分挺奇怪的,很容易导错方向。
正解其实就是一堆套路结合了起来,首先可以倒叙扫面线维护所有的区间,然后观察到任意时刻合法的区间一定不包含,所以可以用线段树维护所有的区间,用线段树二分暴力找出所有合法的区间,因为每个区间被找到之后就会从线段树中删掉,因此复杂度是对的,也通过这道题知道了怎么在1个log内找出所有包含关系的区间。