做题的一些心得,想到几点写几点,以后又想到了再补:
1.scanf(),printf()和cin,cout不要混用,输入数据量比较大的话会导致缓存区冲突。
2.对于大数组放到全局变量里,局部变量内存使用量不能超过64k;
3.对于多组数据,每次算都要数据初始化;
4.sort(first,last),last是past-the-end,就是要排序的元素的最后一个的后一个;
5.对于需要不停插入数据,并保持有序的可以用STL的set容器,它是用平衡二叉树实现的,免去了自己再去写一个的麻烦,用起来真是轻松加愉快。
6.迭代器可以自加自减,v.end()不能;
7.对于输入量大的不要用cin,cin速度太慢,对此我有过惨痛的教训,一道题TLE一下午,最后竟然方向问题出在输入上,狂郁闷..
8.优先队列是个好东西,可以当堆用,就不要自己写堆了。
9.比赛的时候水题要切的又快又准,有两个好处:1.稳定心态 2.有时候题目比较难就看水题刷的谁快,今年上海一题刷的快的就有铜了
10.切忌卡题,在1个小时卡下来一点没进展的情况下,要果断换题。
11.坚持到最后一刻,在最后一个小时出题的可能性还是很大的。
12.对于有重边的情况下,按边存图:
struct ss
{
int p; //点
int dis; //权值
}
vector<ss> g[MAXN];
...
cin>>x>>y>>dis; //输入边
ss temp;
temp.p=y;
temp.dis=dis;
g[x].push_back(temp); //存边
13.模板尽可能带全,挑精简的,不要重叠