C++程序细节优化总结

一、时间复杂度常数优化

(一)输入、输出优化

cin加速:

  1. 关闭标准输入流的同步
    ios::sync_with_stdio(false);

     

  2. 解除cin与cout的绑定
    cin.tie(0);

     

利用getchar()&putchar()手写输入输出函数:

  1. 读入优化
  2. 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);

O2优化(竞赛禁用)

#pragma GCC optimize(2)

底层优化

int f[5000000][2];
//better than f[2][5000000]

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章