2022.05.13NOI模拟赛总结

1.时间安排

7:00~7:40 一共四题,题目不是很好读懂,花的时间有点长。

T1:(一开始以为是T4)看到一大堆数学公式和模1e9+7就不是很想写了,而且似乎没给暴力分,试试推特殊性质分。

T2:计数类dp,20分暴力分,但题目说数据随机可能可以多水几分。

T3:数据结构题,而且题目非常简洁,感觉十分可做,但是只有暴力和正解两档分,很容易翻车。

T4:看不出来是啥,但是有模1e9+7也肯定是毒瘤了,有20分的暴力,还有20分特殊性质似乎比较好写。

7:40~10:00

数据范围5e4,树上莫队没得跑,一开始想的是用平衡树维护第k大,码完板子发现转出来的树的形态非常怪,发现写的漏洞百出,调了很久。好不容易调好,手构一组大样例,不说正确性,T的非常彻底(>10s)。一看时间已经过去2个多小时,想着赶紧写前面暴力,如果最后也调不出来至少其他题不是0分。

10:00~10:30

T1实在是看不懂,光速写了T2和T4的暴力,小数据没问题(没测试T4 n=5的数据)。

下发T3的大样例了,一测试发现离散化后忘了还原回去,还好发了大样例……

10:30~11:30

继续奋战T3,弃了平衡树的思路,写了个权值线段树二分,跑的快多了(5s左右,虽然还是过不掉)。

继续想怎么优化,可没有更好的想法(因为一直认为这个log是降不掉的……)

11:30~12:00

突然想到T4特殊性质只需要把两部分拆开,方案相乘再乘上组合数就可以了,感觉很正确(因为数据不好构,也不好验证),就莽了一发,并且发现原来暴力写的set跑的非常慢,就改成了均摊n^2的检验,跑飞快。

result:

T1:/ T2:25 T3:40 T4:40

2.反思

T1:

T2:

看来题解恍然大悟,60分很容易就写出来了。(%lyc神,%J神)。因为n很小(我目害了看成1e5),所以 \(O(n^2|V|)\) 的dp完全可行,只需要枚举中位数是谁,然后dp前i个有多少比他小,用一个等差数列求和转移,最后强制一个数选做中位数即可。

T3:

真的离正解只差一步……

与场A的J神交流之后,发现一个严重的问题:修改和询问的复杂度不同阶,修改的需求量是 \(O(m\sqrt n)\) ,而询问的需求量只有 \(O(m)\) ,所以可以让询问摊多一点复杂度来降低修改的复杂度,只需要分块就能做到修改 \(O(1)\) ,询问 \(O(\sqrt n)\) ,刚好同阶,轻松跑过。

果然还是数据结构题分析复杂度做的比较少,平时就是大概一算能过就不管了,看来这些细节不能忽视。

(待upd)

posted @ 2022-05-13 14:59  Displace  阅读(114)  评论(0)    收藏  举报