datedate 2024_06_15:2024\_06\_15: 发现 sortsort -> stable_sortstable\_sort 更快

datedate 2024_08_23:2024\_08\_23: 发现卡时技巧。

datedate 2024_11_12:2024\_11\_12: 发现将颜色重编号卡过莫队。

1.输入输出

  • 快读
inline int read()//快读 
{
    register int x = 0, t = 1;
    register char ch = getchar();
    while(ch < '0' || ch > '9'){if(ch == '-') t = -1;ch = getchar();}
    while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}
    return x * t;
}
  • 快写
inline void write(int x)//快写 
{
    if(x < 0){putchar('-');x = -x;}
    if(x > 9) write(x / 10);
    putchar(x % 10 + '0');
}

2.inlineinline & registerregister

  • inlineinline
inline 函数类型 函数名()
  • registerregister:
register 数据类型 数据名

3.位运算

前言:一定要加()

  • 代替 modmod 运算
    • xx modmod y==y== xx & y1y - 1
  • 快速幂
#include <iostream>//cin cout 
#define int long long//优化
using namespace std;//命名空间
int n, m, k;
inline int ksm(int n, int m, int k)
{
	int ans = 1;
	while(m){
		if(m & 1) ans = ((ans % k) * (n % k)) % k;//同余定理
		n = ((n % k) * (n % k)) % k;
		m >>= 1;
	}
	return ans;
}
signed main()//主函数
{
	cin >> n >> m >> k;
	cout << ksm(n, m, k);
	return 0;//华丽结束
}
  • swap函数swap函数
inline void swap(int &a, int &b)
{
	a ^= b ^= a ^= b;
	return;
}

4.其他

  • mapmap -> unordered_map
  • \n 替换 endlendl
  • 直接开 long long 不如 #define int long long & signed main
  • 三目运算符 替换 ifif & elseelse
  • 尽量用 constconst
  • #pragmapragma (用 O(2)O(2) 即可)
  • ,; 快(?)
  • bool 慢,int
  • 前置 ++
  • sortsort -> stable_sortstable\_sort
  • 将颜色重编号卡过莫队

极限卡时:

int start = clock();
while(clock() - start >= CLOCKS_PER_SEC * 0.98)