我怎么这么菜啊,无语。
赛时
开 T1,刚读完题,准备想一下,因为据我经验,不可能很快切掉。
无意间发现 Heldivis 10 min 过了,意识到可能是诈骗/简单巨难题。
发现 \(k\) 就是最短路长度。对于非最短路径,只要保证赋有 \(1\sim k\) 的权值就行了。
对于边 \((u,v)\),边权赋为 \(\min(dis_u,dis_v)\bmod k\) 就行了,特判一下 \(\bmod k=0\) 的情况。
8:29 过了大样例,提交。
开 T2,发现 \(O(nq)\) 的 \(30\) pts 做法是送的。
考虑优化,想想每个数贡献了哪些区间,发现这个东西很难维护。
然后不会了。
直觉告诉我,只要会了不带修的问题,稍微改一下就能成为带修的,一般是上个数据结构。
但是我想不出来。
罚坐 1.5 h。
开 T3,发现好像会了 \(n\le 100\) 的,但是细节差一些。口胡的 \(n\le 10\) 复杂度又不对,唉。
开 T4,没啥思路,写一个 \(2^n\times 2^m\) 的。花 20 min 写了个,过了样例,预估 15 分。
T3 又想了想,写了个复杂度很不对的爆搜,没办法。样例太小所以跑的飞快,希望数据水一些。
再次冲 T2。
终于在 11:30 会了不带修的做法,是个二阶差分,可以做到 \(O(n+q)\)。
10 min 写完,又有了 \(20\) 分。
想要转成正解似乎需要上个 set
,还需要删去一些贡献,再加上一些贡献。
开始写,但是有点晕了。12:00 还没写完。
虽然我的时间还有 \(20\) min,但是我放弃了,我选择吃饭。
吃饭时向另外两个不会 T2 的同学描述了我的思路,感觉很对。
细想了一下还需要一个 Fenwick Tree。
然后 12:30 回来开始写 T2,20 min 写完了并过了大样例。
但是由于题目原因不开放提交。
14:00 多支持提交了,过了,并且跑的很快,吊打线段树大常数。
讲题
T3 正解是观察出一些性质,然后转移。但是细节有点多。
T4 子集卷积,不会。
总结
还是要敢去写,敢去想。数据结构的题目一般思维难度都不是太高。
爆搜复杂度完全没有保证还是不要写了,不如去写暴力 DP。
ps:上次代码源有个 T3 爆搜 + 剪枝拿了 \(57\) 分,感觉良好。