1
用memset初始化时,最好使用memset(a,0,4*(n+1));(a为int),而不是memset(a,0,sizeof a);
2
当碰到类似dp问题时,可以先将问题类别于我们已知的模板问题或者背包问题,这时需要我们对已知的模板较为熟悉;
3
使用cin/scanf输入一串字符,碰到空格会停止,这时可以使用gets(s)/getline(cin,s),一个适用于char,另一个用于string;
4
c++中mod运算,-10%3==-1,还是负数,我们需要将其转化为正数,k=(x%N+N)%N;适用于哈希表;
5
关于为啥memset(dist,0x3f,sizeof dist);dist[0]=0x3f3f3f3f memset是按照字节来进行memset;
6
double x=0.01;x*=100;int ans=(int)x;ans==???? 结果可能是ans==0,正确做法ans=(int)x+0.001;
7
使用并查集时,连接两个连通块时,应该将他们的父节点连接,而不是直接连接两个节点,a=find(a);
8
题完题开始检查时,尽量测试边界值,最好超过边界值,因为出题人有时候会恰好超过边界;
9
当数据边界较小时,但题目测试样例较多,可以用数组存储所有数据的答案,然后节省时间;
10
当你用dfs频繁TLE时,不如试试看看能不能用图论算法来帮你解决,自己试试看看能不能建图吧
11
一道宽搜经典题,bfs适用于步数为1,当有条件可以快速前进时,尝试利用优先队列;
12
两个int 型 a,b ;整除四舍五入 保留两位小数 ; printf(“%.2lf”,double((a+0.0001)/b);
13
数字转成字符串
#include<sstream>
int x;
stringstream os;
string s,t;
os<<x,os>>s;
os.clear();
或者直接
string s=to_string(x);
14
ceil(l/a[i]) floor(r/a[i])//celi为向上取整,floor为向下取整.
15 最长路
大臣的旅费