分块练习卡常有感
在一段时间的分块相关学习过程中,我不出意料遇到了学习分块一定会遇到的问题——超时,于是我就开始了莫名其妙的调试和修改工作,下面列出最有代表性一道题。
首先我要积累两个经验
#define in long long会大幅增加常数,导致TLE- STL的
.clear()清空是O(n)的,很耽误时间,STL在时限紧张的题里千万不要乱用
亲测有效。
P5356 [Ynoi Easy Round 2017] 由乃打扑克
这就是令人作呕振奋的由乃。
其实在最开始看见\(Ynoi\)的时候我是有点打怵的,但看见了题解区里各种善意的谎言评价后我决定放手一搏。
但是在我没费什么功夫写完二分套二分的查询后,我发现我神秘的TLE了。
由于我菜到不会准确的运算出最优块长和精确时间复杂度,导致我一直在题解区和讨论区的建议中胡乱更改,还上网誊抄了我看不懂的一种神秘快读,最终我在按照一篇题解中将\(sort\)改为手动归并和在二分中进行优化等措施后终于AC。
那么,代价是什么?
当然是代码长度翻倍+46次提交啦!
但其实我觉得还是我自己不认真思考导致的。
所以,收获是什么?
认真计算时间复杂度和块长,固定块长还是有优势,而且我也积累了一些卡常技巧。

浙公网安备 33010602011771号