每天一个爆零小技巧个人用的常数小技巧_自用
Posted czyarl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每天一个爆零小技巧个人用的常数小技巧_自用相关的知识,希望对你有一定的参考价值。
- 不论整数,浮点数,除法是真的慢
- 整数取模尽量避免,这也是大部分程序的卡常关键
- 要尽可能让几次对一个数组的调用地址距离近。比如(f_{i,j,k})中,大部分运算是在相同的(i,k)下做的,那么我们应该存为f[i][k][j]。
- 一个优秀的快读快输很有必要
template<typename T>void Read(T &cn)
{
char c; int sig = 1;
while(!isdigit(c = getchar())) if(c == ‘-‘) sig = -1; cn = c-48;
while(isdigit(c = getchar())) cn = cn*10+c-48; cn*=sig;
}
template<typename T>void Write(T cn)
{
if(cn < 0) {putchar(‘-‘); cn = 0-cn; }
int wei = 0; T cm = 0; int cx = cn%10; cn/=10;
while(cn) wei++, cm = cm*10+cn%10, cn/=10;
while(wei--) putchar(cm%10+48), cm /= 10;
putchar(cx+48);
}
- 一个优秀的快速幂也比较有用
LL ksm(LL cn, LL cm) {LL ans = 1; while(cm) ans = 1ll*ans*(1+(cn-1)*(cm&1))%MOD, cn = cn*cn%MOD, cm = cm>>=1; return ans; }
- 循环展开是最后的计策
- memset,最好算好要用前多少位,然后精确清零
- 正确分析好程序的复杂度瓶颈,然后只在瓶颈上优化,除非其它地方优化起来太方便了,可以顺手搞一下
以上是关于每天一个爆零小技巧个人用的常数小技巧_自用的主要内容,如果未能解决你的问题,请参考以下文章