OI 小细节记录

double 数组的初始化:

正无穷:0x7f,负无穷:0xfe,不过注意如果需要保留两位小数这样精度不大的数的时候,正无穷 0x43,负无穷 0xc2

set 用 lower_bound 进行二分查找时,和 vector 是不一样的

例如在一个二维 vector 查找大于等于 \(x\) 的数应该这样写:lower_bound(vec[i].begin(), vec[i].end(), x)

但是在一个二维 set 里面就得这样写:se[i].lower_bound(x),否则甚至会 TLE,调了我半天

写树上问题的时候,DFS 里面有一个参数 fa,很多树上问题需要根据父节点记录什么东西,我总是忘记特判 -1

DFS 遍历图求东西的时候,例如求一个点走 xx 步到哪里,把枚举放到 DFS 里面,不要放在 main 里面,否则会乘上 N + M 的复杂度

重载小于号:sort 里面 a < b 是从小到大,堆里面是大根堆

随机生成树拉一条链

#include <bits/stdc++.h>
using namespace std;

const int N = 100005;

int A[N];
mt19937 rnd(time(NULL));

int main()
{
	int n = 10;
	for (int i = 0; i < n; i++) A[i] = i + 1;
	shuffle(A, A + n, rnd);
	
	cout << n << endl;
	for (int i = 1; i <= n / 3; i++) printf("%d %d\n", A[i - 1], A[i]);
	
	for (int i = n / 3 + 1; i < n; i++) 
		printf("%d %d\n", A[rnd() % i], A[i]);
		
	return 0;
}

如果定义了迭代器 auto it = s.begin() 然后删除了它 s.erase(it) 此时再用 *it1 就会报错,取决于编译器版本

posted @ 2024-09-16 19:27  typerxiaozhu  阅读(5)  评论(0编辑  收藏  举报