- paste
快读,快输模板
- 2022-9-23 16:08:04 @
cin比scanf慢8倍大概所以cin读入的时候要进行优化
ios::sync_stdio(false);//关闭源流同步
cin.tie(nullptr);
一般就是1e5的数据cin和scanf差不了太多,但是上了1e6就建议用scanf 上了1e8就建议用快读了
快读原理就是getchar()比scanf快个四倍所以我们用gerchar()来读入然后转存对应数据
inline int read()//快读基本够用
{
char c = getchar();int x = 0,s = 1;
while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}//是符号
while(c >= '0' && c <= '9') {x = x*10 + c -'0';c = getchar();}//是数字
return x*s;
}
inline void write(int n){//快输
if(n==0) return;
write(n/10);
putchar(n%10+'0');
}
inline bool scan_lf(double &num) //浮点数快读
{
char in;double Dec=0.1;
bool IsN=false,IsD=false;
in=getchar();
if(in==EOF) return false;
while(in!='-'&&in!='.'&&(in<'0'||in>'9'))
in=getchar();
if(in=='-'){IsN=true;num=0;}
else if(in=='.'){IsD=true;num=0;}
else num=in-'0';
if(!IsD){
while(in=getchar(),in>='0'&&in<='9'){
num*=10;num+=in-'0';}
}
if(in!='.'){
if(IsN) num=-num;
return true;
}else{
while(in=getchar(),in>='0'&&in<='9'){
num+=Dec*(in-'0');Dec*=0.1;
}
}
if(IsN) num=-num;
return true;
}
struct FastIO{ //FastIO一般用不上,但是效率最高
FILE *fp;
static const int S=1e5;
typedef long long ll;
int wpos;
char wbuf[S];
FastIO():wpos(0){}
inline int xchar(){
static char buf[S];
static int len=0,pos=0;
if(pos==len)pos=0,len=fread(buf,1,S,stdin);
return buf[pos++];
}
inline int xuint(){
int c=xchar(),x=0;
while(c<=32)c=xchar();
for(;'0'<=c&&c<='9';c=xchar())x=x*10+c-'0';
return x;
}
inline int xint(){
int s=1,c=xchar(),x=0;
while(c<=32)c=xchar();
if(c=='-')s=-1,c=xchar();
for(;'0'<=c&&c<='9';c=xchar())x=x*10+c-'0';
return x*s;
}
inline void xstring(char *s){
int c=xchar();
while(c<=32)c=xchar();
for(;c>32;c=xchar())*s++=c;
*s=0;
}
inline void wchar(int x){
if(wpos==S)fwrite(wbuf,1,S,stdout);
wbuf[wpos++]=x;
}
inline void wint(ll x){
if(x<0)wchar('-'),x=-x;
char s[24];
int n=0;
while(x||!n)s[n++]='0'+x%10,x/=10;
while(n--)wchar(s[n]);
wchar('\n');
}
inline void wstring(const char *s){
while(*s)wchar(*s++);
}
~FastIO(){
if(wpos)fwrite(wbuf,1,wpos,stdout),wpos=0;
}
}io;
0 comments
No comments so far...