@feiyangyang
2022-07-16T08:11:03.000000Z
字数 1125
阅读 305
这个是最万恶有用的东西,养不成习惯(虽然码风会变的很奇怪)
这只能怪一些数据太毒瘤,出数据者太卷,程序太神奇,评测机太慢……导致常数太大
而且不是总有人很良心给开(当然你的常数巨大就不能怨它),所以一门技术玄学就此诞生
比较常用就不说了
将一些东西函数化
比如一个很简单的例子:
还有:使用,可以更快
但对于一些时间复杂度大、递归的函数就没用,多用于简单、使用频繁的函数(当然全写上也没问题)
比快(慎用)
能用别用
似乎比快
用这个定义一些常量会快很多
赋值也是计算对吧,我们可以这样:
当然仅限用于定义中
这个东西还是蛮有用的
例1:,
例2:
例3:
例4:
例5:
例6:
例7:
例8:
尽量少取模,这个复杂度大,这时最好配合循环外代
如果你很猛的话可以每次让加上8甚至25……不过对于一些题真的有奇效()
这个应该是老朋友了,就是函数
勇者的优化
火车头大法:在跨上火车头的一瞬间,你就变成了勇者/毕业生
如果能用那么优化极大(看压的位数而言)
至于具体过程就比较简单,高精度中多次使用了
当遇到时间复杂度高的运算时这个很有用,比如取模
举个例子:
某题:
循环展开后的:
就问你神不神奇
其实这题是有方法删一个的,但是这个卡常竟然过了,所以很牛皮
从小到大比从大到小要快,可以让矩乘原地起飞
勇者的优化
查找某个元素的时候,先用判断是否存在这个元素,再询问
连续多交几次就可以把卡了

虽然有的时候会失败,那是因为超时过头了
在超时限约时可以上此法
如果在循环里多次计算某数时间复杂度会很高,如:
现在把给搞出来就会变快:
你会发现循环总是恶心人,所以他的卡常方法就极其好用
把一个循环搞成两个循环,当然内容是一样的
某题:
:
神奇吗?
某些东西常数巨大,遇到毒瘤时就完蛋
若能用别的,如果不是特殊情况为什么要用呢???
例1:线段树->树状数组
例2:
还有,多项式算法常数巨大,暴力甚至更快……