版权声明:本文为博主原创文章。 https://blog.csdn.net/qq_37657307/article/details/83542606
一、时间复杂度常数优化
(一)输入、输出优化
cin加速:
- 关闭标准输入流的同步
ios::sync_with_stdio(false);
- 解除cin与cout的绑定
cin.tie(0);
利用getchar()&putchar()手写输入输出函数:
- 读入优化
-
inline int read() { int x=0,f=1;char c=getchar(); while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();} return x*f; }
输出优化
inline void print(int x) { if(x<0)putchar('-'),x=-x; if(x>9)print(x/10); putchar(x%10+'0'); }
(二)常用函数优化
计算绝对值
inline int abs(int x)
{
int y=x>>31;
return (x+y)^y;
}
求最大值
inline int max(int x,int y)
{
int m=(x-y)>>31;
return (y&m)|(x&~m);
}
求最小值
inline int min(int x,int y)
{
int m=(x-y)>>31;
return (y&m|x&~m)^(x^y);
}
交换两个数
inline void swap(int &x,int &y)
{
x^=y,y^=x,x^=y;
}
算平均数
inline int ave(int x,int y)
{
return (x&y)+((x^y)>>1);
}
(三)其他优化
多次使用同一个函数值时用一个变量储存
string s;
int len=s.length();
vector<int>g[MAXN];
int l1=g[x].size();
int ml=X(d);