
1 for(int i = 1; i <= n; ++i) //预先算出log_2(i)+1的值,用的时候直接调用就可以了 2 lg[i] = lg[i-1] + (1 << lg[i-1] == i); //看不懂的可以手推一下 3 for(int i = 1; i <= n; ++i){ //约等于 4 if((1<<lg[i-1])==i) lg[i]=lg[i-1]+1; 5 else lg[i]=lg[i-1]; 6 }

1 int add(int U,int V,int val){ 2 a[++N].to=V; 3 a[N].edge=val; 4 a[N].next=last[U]; 5 last[U]=N; 6 }

1 #pragma GCC optimize(2) 2 #pragma GCC optimize(3) 3 #pragma GCC optimize("Ofast") 4 #pragma GCC optimize("inline") 5 #pragma GCC optimize("-fgcse") 6 #pragma GCC optimize("-fgcse-lm") 7 #pragma GCC optimize("-fipa-sra") 8 #pragma GCC optimize("-ftree-pre") 9 #pragma GCC optimize("-ftree-vrp") 10 #pragma GCC optimize("-fpeephole2") 11 #pragma GCC optimize("-ffast-math") 12 #pragma GCC optimize("-fsched-spec") 13 #pragma GCC optimize("unroll-loops") 14 #pragma GCC optimize("-falign-jumps") 15 #pragma GCC optimize("-falign-loops") 16 #pragma GCC optimize("-falign-labels") 17 #pragma GCC optimize("-fdevirtualize") 18 #pragma GCC optimize("-fcaller-saves") 19 #pragma GCC optimize("-fcrossjumping") 20 #pragma GCC optimize("-fthread-jumps") 21 #pragma GCC optimize("-funroll-loops") 22 #pragma GCC optimize("-fwhole-program") 23 #pragma GCC optimize("-freorder-blocks") 24 #pragma GCC optimize("-fschedule-insns") 25 #pragma GCC optimize("inline-functions") 26 #pragma GCC optimize("-ftree-tail-merge") 27 #pragma GCC optimize("-fschedule-insns2") 28 #pragma GCC optimize("-fstrict-aliasing") 29 #pragma GCC optimize("-fstrict-overflow") 30 #pragma GCC optimize("-falign-functions") 31 #pragma GCC optimize("-fcse-skip-blocks") 32 #pragma GCC optimize("-fcse-follow-jumps") 33 #pragma GCC optimize("-fsched-interblock") 34 #pragma GCC optimize("-fpartial-inlining") 35 #pragma GCC optimize("no-stack-protector") 36 #pragma GCC optimize("-freorder-functions") 37 #pragma GCC optimize("-findirect-inlining") 38 #pragma GCC optimize("-fhoist-adjacent-loads") 39 #pragma GCC optimize("-frerun-cse-after-loop") 40 #pragma GCC optimize("inline-small-functions") 41 #pragma GCC optimize("-finline-small-functions") 42 #pragma GCC optimize("-ftree-switch-conversion") 43 #pragma GCC optimize("-foptimize-sibling-calls") 44 #pragma GCC optimize("-fexpensive-optimizations") 45 #pragma GCC optimize("-funsafe-loop-optimizations") 46 #pragma GCC optimize("inline-functions-called-once") 47 #pragma GCC optimize("-fdelete-null-pointer-checks")

1 struct node{ 2 int value,num; 3 friend bool operator < (node a, node b){ 4 if(a.value==b.value) return a.num>b.num; 5 else return a.value>b.value; 6 }//升序排序(从小到大) 7 }; 8 priority_queue<node> q; 9 /* 10 empty(); 队列为空返回1 11 pop(); 出队 12 push(); 入队 13 top(); 返回队列中优先级最高的元素 14 size(); 返回队列中元素的个数 15 */

1 long long ksm(long long a,int n,long long Mod){ 2 long long ans=1; 3 while(n){ 4 if(n&1) ans=(ans*a)%Mod; 5 a=(a*a)%Mod; 6 n>>=1; 7 } 8 return ans; 9 }

1 sort(a,a+n);//一定要先排序 2 n=unique(a,a+n)-a;//去重!n为去重后的长度

1 long long ksm(long long ds,long long zs){ 2 int ans=1; 3 for(long long i=zs;i;i>>=1,ds=ds*ds%Mod) 4 if(i&1) ans=ans*ds%Mod; 5 return ans; 6 }

1 inv[1]=1; 2 for(int i=1;i<=n;i++) 3 inv[i]=( (mod-mod/i)*inv[mod%i] +mod ) %mod;
//快读
inline long long read(){ register long long s=(long long)0,w=(long long)1; register char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-') w=-1; ch=getchar(); } while(ch>='0'&&ch<='9'){ s=(s<<1)+(s<<3)+(ch^48); ch=getchar(); } return s*w; }
· 2的逆元为(n/2)+1;
·约数和定理:约数之和[(p1^α1)-1 ] /(p1-1) * [(p2^α2)-1 ] / (p2-1) * ..... *[(pk^αk)-1 ]/(pk-1)
约数个数之和=(a1+1)*(a2+1)*…(αk+1 )
·三目运算符
if(a<b) min=a; else min=b; 可以用下面的条件运算符来处理 min=(a<b)?a:b;
for(int i=0;i<a.size();i++){ }←这样十分耗时间,每次都要计算一遍a的长度 n=a.size(); for(int i=0;i<n;i++){ }←GOOD
字符串转int #include<sstream> int _num(string shu){ int sh; stringstream strr; strr<<shu; strr>>sh; strr.clear(); return sh; }
有多少个1 int _bitcount(int x){ return x==0 ? 0 : _bitcount(x/2)+(x&1); }
cout<<endl 比 cout<<'\n' 慢 很 多