1.有些数据点后面可能没有换行符,导致使用循环while(scanf("%c", &c))这样的读入会TLE。
可以这样:while(scanf("%c", &c) != EOF),利用scanf读到文件末尾时返回EOF的特性。
2.cin>>n;真的不能读入含有空格的字符串,getline(cin,n)才行,回车也是一个字符麻烦用getchar吞掉,不然会报错。
3.kmp理解就是找一个串在另外一个串里面的位置,通过回溯。
4.数论的求x,y最大公约数c(辗转相除法)(还有扩展),最小公倍数就是x*y/c;
5.数论快速幂原理记住省时间(还有矩阵快速幂)
6.数论找质数欧拉筛就行了,最优解。
7.如果遇到保留几位小数的问题,如果答案是对的,但是过不了题目,很可能是因为没有定义double。
8.解题技巧标记,桶思想。
9.遇到找有几个字母不同的题目,可以用set函数。
10.检查代码的时候如果发现输入不进去,只能输入第一次循环,检查一下是不是循环写错了。
11.如果我们在写完代码后,发现可以输入数据,但是就没有答案,很难debug,可能是第一位数组没有赋值。
12.记住做题一点要注意数据范围,会被数据卡死,如果答案出现很大的值,很可能是爆int了,改成long long.
13.观察容易发现,利用数学推导,如果总结暴力会爆表想要使得在范围n里面最大公约数是n/2最大,可令a=k,b=2k其中k=(n/2)。
14.在比赛过程中,我建议不要用int,会爆int,用long long 或者(unsign long long 我不经常用这个)。
15.数学题的时候,考虑一下构造思想。