码迷,mamicode.com
首页 > 其他好文 > 详细

卡常技巧

时间:2019-04-04 20:20:31      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:不用   ora   技术   减法   如何   com   多少   ==   怎么   

某天,看到这样一个场景技术图片(要求时限3000ms)

是不是突然很想骂人?

不过,以下一些知识可能帮到你

教你如何卡常(c++)(我太弱了,大佬勿喷

1.相信你们都知道 for(int i=1;i<=n;i++),改为++i更快

技术图片然后发现照样没快多少(哎~~)

怎么办呢?

 

2.相信你们还是知道 把诸如int a=1 改为 int a(1) 更快

技术图片发现自己少了一百多毫秒,但依然T了

这时候

 

3.相信你们依然知道 在函数前加inline可以加快(可能不会吧)

 

4.在int前加register(这个也很基本吧)

于是乎技术图片愉快地A了

再想想还有什么你知道的卡常?

 

5.重要的一点--读入优化(应该都知道)

 

void read(int &x)
{
    int f=1;
    x=0;
    char s=getchar();
    while(s<‘0‘||s>‘9‘)
    {
        if(s==‘-‘)
            f=-1;
        s=getchar();
    }
    while(s>=‘0‘&&s<=‘9‘)
    {
        x=x*10+s-‘0‘;
        s=getchar();
    }
    x*=f;
}


 

技术图片又快了一些。

6.能不用变量就不用(大部分人也知道吧)

 

7.取模用减法代替

ll mo(ll x,ll y)
{
	return x+y>=mod?x+y-mod:x+y;
}

 

8.尽量用位运算 (懒得打到刚才那个程序里去)(实际上我不大会

 

9.数组尽量不要是偶数个数的(原因不明)

偶数个数后满了3ms(有时候会慢很多) 技术图片

10.把循环给尽量展开,速度会快很多

 

11.尽量消除条件的跳转

 

12.访问a[i]后访问a[i+1],a[i+2]等会快很多

 

希望以上技巧对你有帮助

 

卡常技巧

标签:不用   ora   技术   减法   如何   com   多少   ==   怎么   

原文地址:https://www.cnblogs.com/yigejuruo/p/10656779.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!