对于卡常的思考

卡常的意义

  1. 帮助你的复杂度略大的小常数解法得到高分。因为目前来看,CCF 所有试题均不绑包,在某些特定数据下也许程序会快一点,这可以让你从全部 TLE 晋升为随机 TLE,获得高部分分。甚至通过该题。
    可以参考:\(n\log^2\) 过 NOIP2024 T4(赛后通过),\({nq\over w}\log_2 64\) 过 省选2025 D1T2(赛时高分,赛后小改动通过)。

  2. 帮助你的复杂度正确但大常数的解法得到应得的分数,避免被卡常丢分。

  3. 帮助你在考场上决策是要写大常数做法卡常,还是只写暴力,避免写完后获得和暴力同分的悲剧。

为何卡常优势显著

举个例子:假设你的程序复杂度(带上常数)为 \(n\log^2 n+8n\log n\),std 复杂度为 \(8n\log n\)。那么你的复杂度可以近似认为是 \(3\times 8n\log n\),相当于你原本认为比正解多 \(\log\),但事实上只有 \(3\) 倍常数,那么如果你的 \(\log\) 很小的话那肯定会有极大概率冲过去,因为时限起码是 std 的 \(1.5\sim 2\) 倍,甚至更多。

posted @ 2025-04-27 17:23  born_to_sun  阅读(60)  评论(2)    收藏  举报