记录NOIP刷题时碰到的巨坑 或者 诸如A+B Problem各种奇淫怪技
////////////////////////////////////////////////////////////////////
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 暴力全过 永不爆零 //
////////////////////////////////////////////////////////////////////
- 重名:
max
- 极端定义域
str.size()==0
i,j重用
sort
#include <algorithm>//头文件
//do something...
sort(a,a+n);//sort a[0]~a[n-1]
- 记住cmp是return是否靠前
bool cmp(node a, node b){
return a.e<b.e;
}
//
sort(a,a+n,cmp);
- 打表
存好质数表,打表出奇迹
例见洛谷P1217
行列数与从零开始的数组
map[x][y]
转换!!!频繁使用的变量用
register
修饰(寄存CPU)
//Example:
for(register int i=1;i<=s/2;i++)
//do something
- 什么,你还在用
swap(a,b);
?!
if(a!=b){//!!!
a^=b;
b^=a;
a^=b;
}
//=swap(a,b);
-
C++ STL
真是太好用了!!!
- 求全排列:
#include <algorithm>//头文件
a[]={1,2,3}
//求下一个全排列
next_permutation(a, a+3);
//
//求上一个全排列
prev_permutation(a, a+3);
- 关于指针
注意:数组名a
是这个数组的首指针但不是指向这个数组的首个元素a[0]
,但是迭代器又不一样,a.begin()
指向首元素,但是a.end()-1
才指向尾元素
a[]={1,2,3};
a+1//=a[0]
a+3//=a[2]
register set<int>::iterator iter=m.begin();
*iter//=a[0]
iter=m.end()-1;
*iter//=a[2]
char数组(包括变量)要初始化!!!
否则初值为0(打印不出来的),不是所幻想的' '
P.S. 在main()
外定义的int
初始化值为0,bool
初始化值为false
(0)实际问题注意有可能需要向上取整
例如用二分答案做洛谷P1843时,湿度除以b时应该采用进一法(向上取整)