小妙招(还没搞太懂,先咕掉)(持续更新)
- #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 }
- argc, argv[]
- 同上
- #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)
愿你在冷铁卷刃之前,得以窥见天光

浙公网安备 33010602011771号