快读

  快速读入能使我们的程序常数减小,这里介绍一种较为快速的方法。

#define gc pa==pb&&(pb=(pa=buf)+fread(buf,1,100000,stdin),pa==pb)?EOF:*pa++
#define gc pa==pb&&(pb=(pa=buf)+fread(buf,1,100000,in),pa==pb)?EOF:*pa++

  我们用这个gc来代替我们快读的getchar,速度大概是getchar的7倍。此处stdin,和in是文件指针,当我们使用freopen时我们使用第一行,当我们使用fopen的时候我们需要文件重定向再使用第二行的gc即可。加上快读速度极快。

inline int read()
{
    register int p(1),a(0);register char ch(gc);
    while((ch<'0'||ch>'9')&&ch!='-') ch=gc;
    ch=='-'?p=-1,ch=gc:p;
    while(ch>='0'&&ch<='9') a=a*10+ch-48,ch=gc;
    return a*p;
}

 

posted @ 2018-11-20 19:41  cold_cold  阅读(202)  评论(0编辑  收藏  举报