• 极限IO优化


    namespace IO{ 
        #define BUF_SIZE 100000 
        #define OUT_SIZE 100000 
        #define ll long long 
        //fread->read 
     
        bool IOerror=0; 
        inline char nc(){ 
            static char buf[BUF_SIZE],*p1=buf+BUF_SIZE,*pend=buf+BUF_SIZE; 
            if (p1==pend){ 
                p1=buf; pend=buf+fread(buf,1,BUF_SIZE,stdin); 
                if (pend==p1){IOerror=1;return -1;} 
                //{printf("IO error!
    ");system("pause");for (;;);exit(0);} 
            } 
            return *p1++; 
        } 
        inline bool blank(char ch){return ch==' '||ch=='
    '||ch=='
    '||ch=='	';} 
        inline void read(int &x){ 
            bool sign=0; char ch=nc(); x=0; 
            for (;blank(ch);ch=nc()); 
            if (IOerror)return; 
            if (ch=='-')sign=1,ch=nc(); 
            for (;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0'; 
            if (sign)x=-x; 
        } 
        inline void read(ll &x){ 
            bool sign=0; char ch=nc(); x=0; 
            for (;blank(ch);ch=nc()); 
            if (IOerror)return; 
            if (ch=='-')sign=1,ch=nc(); 
            for (;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0'; 
            if (sign)x=-x; 
        } 
        inline void read(double &x){ 
            bool sign=0; char ch=nc(); x=0; 
            for (;blank(ch);ch=nc()); 
            if (IOerror)return; 
            if (ch=='-')sign=1,ch=nc(); 
            for (;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0'; 
            if (ch=='.'){ 
                double tmp=1; ch=nc(); 
                for (;ch>='0'&&ch<='9';ch=nc())tmp/=10.0,x+=tmp*(ch-'0'); 
            } 
            if (sign)x=-x; 
        } 
        inline void read(char *s){ 
            char ch=nc(); 
            for (;blank(ch);ch=nc()); 
            if (IOerror)return; 
            for (;!blank(ch)&&!IOerror;ch=nc())*s++=ch; 
            *s=0; 
        } 
        inline void read(char &c){ 
            for (c=nc();blank(c);c=nc()); 
            if (IOerror){c=-1;return;} 
        } 
        //fwrite->write 
        struct Ostream_fwrite{ 
            char *buf,*p1,*pend; 
            Ostream_fwrite(){buf=new char[BUF_SIZE];p1=buf;pend=buf+BUF_SIZE;} 
            void out(char ch){ 
                if (p1==pend){ 
                    fwrite(buf,1,BUF_SIZE,stdout);p1=buf; 
                } 
                *p1++=ch; 
            } 
            void print(int x){ 
                static char s[15],*s1;s1=s; 
                if (!x)*s1++='0';if (x<0)out('-'),x=-x; 
                while(x)*s1++=x%10+'0',x/=10; 
                while(s1--!=s)out(*s1); 
            } 
            void println(int x){ 
                static char s[15],*s1;s1=s; 
                if (!x)*s1++='0';if (x<0)out('-'),x=-x; 
                while(x)*s1++=x%10+'0',x/=10; 
                while(s1--!=s)out(*s1); out('
    '); 
            } 
            void print(ll x){ 
                static char s[25],*s1;s1=s; 
                if (!x)*s1++='0';if (x<0)out('-'),x=-x; 
                while(x)*s1++=x%10+'0',x/=10; 
                while(s1--!=s)out(*s1); 
            } 
            void println(ll x){ 
                static char s[25],*s1;s1=s; 
                if (!x)*s1++='0';if (x<0)out('-'),x=-x; 
                while(x)*s1++=x%10+'0',x/=10; 
                while(s1--!=s)out(*s1); out('
    '); 
            } 
            void print(double x,int y){ 
                static ll mul[]={1,10,100,1000,10000,100000,1000000,10000000,100000000, 
                    1000000000,10000000000LL,100000000000LL,1000000000000LL,10000000000000LL, 
                    100000000000000LL,1000000000000000LL,10000000000000000LL,100000000000000000LL}; 
                if (x<-1e-12)out('-'),x=-x;x*=mul[y]; 
                ll x1=(ll)floor(x); if (x-floor(x)>=0.5)++x1; 
                ll x2=x1/mul[y],x3=x1-x2*mul[y]; print(x2); 
                if (y>0){out('.'); for (size_t i=1;i<y&&x3*mul[i]<mul[y];out('0'),++i); print(x3);} 
            } 
            void println(double x,int y){print(x,y);out('
    ');} 
            void print(char *s){while (*s)out(*s++);} 
            void println(char *s){while (*s)out(*s++);out('
    ');} 
            void flush(){if (p1!=buf){fwrite(buf,1,p1-buf,stdout);p1=buf;}} 
            ~Ostream_fwrite(){flush();} 
        }Ostream; 
        inline void print(int x){Ostream.print(x);} 
        inline void println(int x){Ostream.println(x);} 
        inline void print(char x){Ostream.out(x);} 
        inline void println(char x){Ostream.out(x);Ostream.out('
    ');} 
        inline void print(ll x){Ostream.print(x);} 
        inline void println(ll x){Ostream.println(x);} 
        inline void print(double x,int y){Ostream.print(x,y);} 
        inline void println(double x,int y){Ostream.println(x,y);} 
        inline void print(char *s){Ostream.print(s);} 
        inline void println(char *s){Ostream.println(s);} 
        inline void println(){Ostream.out('
    ');} 
        inline void flush(){Ostream.flush();}
        #undef ll 
        #undef OUT_SIZE 
        #undef BUF_SIZE 
    };
    

     为什么人家能$n^2$过百万系列

  • 相关阅读:
    线程执行android的looper,handler消息小结
    类型对象phonegap入门10 Contacts
    域名查询普及一下域名知识
    类数据[Android Training视频系列] 6.3 Saving Data in SQL Databases(保存数据到SQLite)
    概率初始化hdu 2955 (01背包变形)
    类最大hdu 1792 A New Change Problem
    标签定义jQuery 入门教程(41): jQuery UI Tab 示例(一)
    nullnullOptimizing Navigation for TV 优化电视导航
    nullnullHandling Features Not Supported on TV 在电视上处理不支持的功能
    nullnullLoading Large Bitmaps Efficiently 有效的处理较大的位图
  • 原文地址:https://www.cnblogs.com/Rorschach-XR/p/11620358.html
Copyright © 2020-2023  润新知