快速读入——卡常终结者(快读)

什么是卡常?

程序被卡常,一般指程序复杂度可以接受,但是由于实现/算法本身的时间常数因子较大,无法在规定的时限内运行结束。

先看一组数据(by my friend cdsidi)

[单位毫秒,100000int读入测试]

快读(带inline):47

scanf输入:1140

快读:50

scanf输入:1121

快读:50

scanf输入:1122

快读:52

scanf输入:1147

快读:50

scanf输入:1239

快读:51

scanf输入:1189

快读:50

scanf输入:1134

快读:51

scanf输入:1142

快读:51

scanf输入:1135

快读:50

scanf输入:1125

快读:54

scanf输入:1128

可以看到,基本上快读稳定在scanf的40分之一

快读可以避免大部分卡常

基本思路:

快速读入代码

 1 inline int read()
 2 {
 3     int fu=1,k=0;
 4     char a=getchar();
 5     while(a<'0'||a>'9')
 6     {
 7         if(a=='-')fu=-1;
 8         a=getchar();
 9     }
10     while(a>='0'&&a<='9')
11     {
12         k=k*10+a-'0';
13         a=getchar();
14     }
15     return fu*k;
16 }
原文地址:https://www.cnblogs.com/lihaolin/p/11268792.html