寒假集训随笔

1.对于一些复杂度的估计问题

signed main() {
	int M=5e6;
	int cont=0;
	for(int i=2;i<=M;++i){
		int Tem=M/i;
		for(int j=2;j<=Tem;++j){
			cont++;
		}
	}
	cout<<cont;//cont=67896939
	return 0;
}

这是ln的级数展开,也就是说比log还略小些

2.在一次训练赛中unordered_map TLE,map AC,说明在复杂度可以接受的前提下应优先考虑map

3.尽量不要写类似于fin(),fin2()这样两个名字类似的函数,尤其是当过程相似且有递归部分的时候,及其容易因为复制的时候忘改导致wa

4.define int long long常数巨大,如果IO规模较大(1e6)尽量不要使用
经过实验,最为耗时的点在于cout<<endl.强烈建议不要用endl,或define endl '\n'
write+printf大概快了1/6,而endl会直接导致TLE
5.比起用clear清空map,有的时候可以直接再执行一次内层循环来清除这次循环的贡献
6.注意bfs和dfs的写法,这是基础,但是最近写的效率并不高。当出现爆栈可能时优先考虑bfs
7.重建线段树时自己的板子要重置id=0;
8.
对于这道题,需要对质数的分布有一些了解:
(1)n到2n之间必有质数
(1)在本题范围内(n<=1e6),i与比i大的最小质数之间距离很近,大概不到100!
9.

template<class ForwardIt>
ForwardIt is_sorted_until(ForwardIt first, ForwardIt last);

返回第一个无序元素的迭代器,如果有序就是end

posted @ 2024-01-17 10:09  wxk123  阅读(14)  评论(0)    收藏  举报