星星之火,可以燎原
- 关于保留小数取整方面的问题:
①floor函数向下舍入为最接近的整数:-2.1,-2.9——>-3
3.1,3.9——>3
②ceil函数向上取整为最接近的帧数:-2.1,-2.9——>-2
3.1,3.0——>4
③对浮点数的四舍五入 12.5——>13
12.4——>12
- ctrl + Z 可以模拟文件输入的结束即EOF
- 对于字符串的情况,尤其是要读取空格,可以使用getline读取一整行。注意是不是应该加上getchar吸收换行。含有空格的字符串输出可以用gets(),自带换行
- 很多题目需要用到初始化,我常用的有三种:
①memset(数组名首地址,想要初始化的值,sizeof 初始化的范围)
例如memset(num,0,sizeof(num));注意只能是初始化成-1,0,0x3f3f3f3f,0x3f3f 其余的十六进制没有试过
②fill(数组名首地址,初始化的范围,初始化的值);
例如:fill(a,a+10,0);这个函数可以初始化成为任一值
③最最最保险的方法莫过于for循环,相对于以上两种方法估计还不会导致超时!!!有的题目多组输入会因为每次进行初始化,消耗的时间会很长导致超时
- 半径为 r 的圆内整点的个数为1+4r+4∑ ri=1sqrt(r * r - i * i)
- m*n的矩形中正方形的个数,0<=n,m<=1000
ans=0;
for(int i=1;i<=min(n,m);i++)
ans+=(n-i+1)*(m-i+1);
- 氧气优化 & 臭氧优化
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
- a 年到 b 年的闰年的数量
(b/4-(a-1)/4)-(b/100-(a-1)/100)+(b/400-(a-1)/400)
- 在堆内定义优先队列时,尤其是小根堆要注意!:
priority_queue <int ,vector<int> ,greater<int> 这里要加上空格> que;
两个>>在一起是位右移运算
- 在堆内定义变量时,不要定义y1 不知道为什么会报编译错误,很多平台多这样比如洛谷
比较正式的解读:传送门
不方便跳转可以直接看图:图片是上面那篇博客的
2020.6.1更
以A,B两点为端点的直线,经过两点间整数点的个数
A(x1,y1) B(x2,y2)
xx=abs(x1-x2);
yy=abs(y1-y2);
ans=gcd(xx,yy)+1;
ans包括A B两点