1. register&static&inline
-
在定义局部非char类型的变量时在前面加入
register
-
在局部char类型变量前加入
static
-
在非主函数和非递归函数前加入
inline
2. 火车头传送门(外网评测)
3. 快读
inline int read(){
register int s=0,w=0;
static char ch=getchar();
for(;!isdigit(ch)ch=getchar(););
for(;isdigit(ch);ch=getchar())s=(s<<1)+(s<<3)+(ch^48);
return w?-s:s;
}
4. 快读优化
快读其实类似于字符串处理方式读取数据
由于getchar()
时间复杂度低才能提升运行速度
但是可以利用fread()
这个函数读入指针,在缓存区读取数据
这样一来读取字符的速度也就提上来了
虽然只能用文件读写调试,但是能让程序跑得飞快!
inline char getchar(){
static char buf[1000000],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++;
}
5. 手动分配运行空间(手动开栈)
#pragma comment(linker,"/stack:200000000")
#pragma GCC optimize("Ofast,no-stack-protector")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
标签:究极,ch,char,p1,static,卡常,buf,getchar
From: https://www.cnblogs.com/As-Snow/p/16889920.html