小妙招(还没搞太懂,先咕掉)(持续更新)

  1. #ifndef ONLINE_JUDGE
    这是预编译指令
    意思是如果没有定义宏ONLINE_JUDGE就编译#ifndef和#endif之间的的内容
    ONLINE_JUDGE 没有定义,怎么还可以运行?
    没有定义只是不编译那里面的内容 其他的照样编译 比如说
   
1         int main() { 
2         #ifndef AAAA
3              printf("这句如果没有定义AAAA就会被编译到,定义了AAAA就和注释一样");
4         #endif
5            printf("这句无论如何都会被编译到,也就是无论如何都会输出"); 
6         return 0;    
7         }

 

  1. argc, argv[]
  2. 同上
  3. #undef用于取消先前程序对于预处理器的宏定义(妈妈再也不会怕我出错了
  • 示例
  • #include <stdio.h>
    int main( void )
    {
      #define MAX 200
          printf("MAX= %d\n",MAX);
      #undef MAX
      #define MAX 300
          printf("MAX= %d\n",MAX);
        return 0;
    }

     

  • 1 一种常用做法为:
    2 
    3 #define MAX 50
    4 #include "common.h"
    5 #undef  MAX
    6 
    7 这样就只有在common.h中才能使用宏MAX。

     

 

 

  • 超级快读,极致压时间
  • /* --------------- fast io --------------- */ // begin
    namespace Fread{
    const int SIZE= 1 << 16;
        char buf[SIZE],*S,*T;
        inline char getchar(){if(S==T){T=(S=buf)+
        fread(buf,1,SIZE,stdin);if(S==T)return'\n';}return *S++;}
    } // namespace Fread
    namespace Fwrite {
    const int SIZE= 1 << 16;
        char buf[SIZE],*S=buf,*T=buf+SIZE;
        inline void flush(){fwrite(buf,1,S-buf,stdout);S=buf;}
        inline void putchar(char c){*S++=c;if(S==T)flush();}
        struct NTR{~NTR(){flush();}}ztr;
    } // namespace Fwrite
    #ifdef ONLINE_JUDGE
        #define getchar Fread::getchar
        #define putchar Fwrite::putchar
    #endif
    namespace Fastio{
    struct Reader{
        template<typename T>Reader&operator>>(T&x){
            char c=getchar();short f=1;
            while(c<'0'||c>'9'){if(c=='-')f*=-1;c=getchar();}
            x=0;while(c>='0'&&c<='9'){
                x=(x<<1)+(x<<3)+(c^48);
                c=getchar();
            }x*=f;return *this;
        }
        Reader&operator>>(double&x){
            char c=getchar();short f=1,s=0;x=0;double t=0;
            while((c<'0'||c>'9')&&c!='.'){if(c=='-')f*=-1;c=getchar();}
            while(c>='0'&&c<='9'&&c!='.')x=x*10+(c^48),c=getchar();
            if(c=='.')c=getchar();else return x*=f,*this;
            while(c>='0'&&c<='9')t=t*10+(c^48),s++,c=getchar();
            while(s--)t/=10.0;x=(x+t)*f;return*this;
        }
        Reader&operator>>(long double&x){
            char c=getchar();short f=1,s=0;x=0;long double t=0;
            while((c<'0'||c>'9')&&c!='.'){if(c=='-')f*=-1;c=getchar();}
            while(c>='0'&&c<='9'&&c!='.')x=x*10+(c^48),c=getchar();
            if(c=='.')c=getchar();else return x*=f,*this;
            while(c>='0'&&c<='9')t=t*10+(c^48),s++,c=getchar();
            while(s--)t/=10.0;x=(x+t)*f;return*this;
        }
        Reader&operator>>(__float128&x){
            char c=getchar();short f=1,s=0;x=0;__float128 t=0;
            while((c<'0'||c>'9')&&c!='.'){if(c=='-')f*=-1;c=getchar();}
            while(c>='0'&&c<='9'&&c!='.')x=x*10+(c^48),c=getchar();
            if(c=='.')c=getchar();else return x*=f,*this;
            while(c>='0'&&c<='9')t=t*10+(c^48),s++,c=getchar();
            while(s--)t/=10.0;x=(x+t)*f;return*this;
        }
        Reader&operator>>(char&c){
            c=getchar();while(c=='\n'||c==' '||c=='\r')c=getchar();
            return *this;
        }
        Reader&operator>>(char*str){
            int len=0;char c=getchar();
            while(c=='\n'||c==' '||c=='\r')c=getchar();
            while(c!='\n'&&c!=' '&&c!='\r')str[len++]=c,c=getchar();
            str[len]='\0';return*this;
        }
        Reader&operator>>(string&str){
            char c=getchar();str.clear();
            while(c=='\n'||c==' '||c=='\r')c=getchar();
            while(c!='\n'&&c!=' '&&c!='\r')str.push_back(c),c=getchar();
            return*this;
        }
        template<class _Tp>Reader&operator>>(vector<_Tp>&vec){for(unsigned i=0;i<vec.size();i++)cin>>vec[i];return*this;}
        template<class _Tp,class _tp>Reader&operator>>(pair<_Tp,_tp>&a){cin>>a.first>>a.second;return*this;}
        Reader(){}
    }cin;
    const char endl='\n';
    struct Writer{
    const int Setprecision=6;
    typedef int mxdouble;
        template<typename T>Writer&operator<<(T x){
            if(x==0)return putchar('0'),*this;
            if(x<0)putchar('-'),x=-x;
            static int sta[45];int top=0;
            while(x)sta[++top]=x%10,x/=10;
            while(top)putchar(sta[top]+'0'),--top;
            return*this;
        }
        Writer&operator<<(double x){
            if(x<0)putchar('-'),x=-x;
            mxdouble _=x;x-=(double)_;static int sta[45];int top=0;
            while(_)sta[++top]=_%10,_/=10;if(!top)putchar('0');
            while(top)putchar(sta[top]+'0'),--top;putchar('.');
            for(int i=0;i<Setprecision;i++)x*=10;
            _=x;while(_)sta[++top]=_%10,_/=10;
            for(int i=0;i<Setprecision-top;i++)putchar('0');
            while(top)putchar(sta[top]+'0'),--top;
            return*this;
        }
        Writer&operator<<(long double x){
            if(x<0)putchar('-'),x=-x;
            mxdouble _=x;x-=(long double)_;static int sta[45];int top=0;
            while(_)sta[++top]=_%10,_/=10;if(!top)putchar('0');
            while(top)putchar(sta[top]+'0'),--top;putchar('.');
            for(int i=0;i<Setprecision;i++)x*=10;
            _=x;while(_)sta[++top]=_%10,_/=10;
            for(int i=0;i<Setprecision-top;i++)putchar('0');
            while(top)putchar(sta[top]+'0'),--top;
            return*this;
        }
        Writer&operator<<(__float128 x){
            if(x<0)putchar('-'),x=-x;
            mxdouble _=x;x-=(__float128)_;static int sta[45];int top=0;
            while(_)sta[++top]=_%10,_/=10;if(!top)putchar('0');
            while(top)putchar(sta[top]+'0'),--top;putchar('.');
            for(int i=0;i<Setprecision;i++)x*=10;
            _=x;while(_)sta[++top]=_%10,_/=10;
            for(int i=0;i<Setprecision-top;i++)putchar('0');
            while(top)putchar(sta[top]+'0'),--top;
            return*this;
        }
        Writer&operator<<(char c){putchar(c);return*this;}
        Writer& operator<<(char*str){
            int cur=0;while(str[cur])putchar(str[cur++]);
            return *this;
        }
        Writer&operator<<(const char*str){
            int cur=0;while(str[cur])putchar(str[cur++]);
            return*this;
        }
        Writer&operator<<(string str){
            int st=0,ed=str.size();
            while(st<ed)putchar(str[st++]);
            return*this;
        }
        template<class _Tp>Writer&operator<<(vector<_Tp>vec){for(unsigned i=0;i<vec.size()-1;i++)cout<<vec[i]<<" ";cout<<vec[vec.size()-1];return*this;}
        template<class _Tp,class _tp>Writer&operator<<(pair<_Tp,_tp>a){cout<<a.first<<" "<<a.second;return*this;}
        Writer(){}
    }cout;
    } // namespace Fastio
    #define cin Fastio :: cin
    #define cout Fastio :: cout
    #define endl Fastio :: endl
    /* --------------- fast io --------------- */ // end
    

     

 

具体还是看我洛谷,有些注意事项没放上,如想知道可联系我2829422073(QQ)
posted @ 2022-02-24 21:23  kiritokazuto  阅读(189)  评论(0)    收藏  举报