需要注意的地方
1.输出无解情况。
2.输出时注意是否要加一些提示语句(如'ans='),另外注意大小写以及空格。
3.要求分行输出时记得考虑输出满一行的情况。
4.交程序时要删去调试的语句。
5.有时输出的答案错误可能是数组开小了或变量范围小了。
6.一些变量名要避免重复使用,如我喜欢将t用来做排序的媒介,又用来统计数组元素个数,这样在排序时会201。
7.做完一题要检查数组范围是否足够,要不要用int64等。
8.小心有多组数据。
1.对于问题,如果较难,先从暴力方法想起,联系学过的知识,不断进行优化。
2。
2.可以将问题分开讨论,分为多个部分解决
4.考虑每个元素对答案的影响。
考试策略
1.草稿纸一定要把需要的式子,每个数组的含义写清楚,把过程提前写好。
2.仔细读题,不要看错题!!!!!
3.把能拿的分拿到
细心
1.如果多个过程使用同一种操作,修改的时候要记得全部改过来
数据范围
1.要看清给的是实数还是整数。
文件
1.有的文件名单词后面有s,如windows.pas
变量
1.注意int64
2.数组范围不要搞错啊啊啊,不要随手写一个等以后来改。
3.如果数据很大,而要求用int64,则除循环变量外其它参与计算的变量都应定义为int64,
如果两个数相乘结果超过maxlongint,则若用longint存这两个数,虽然你相乘用int64存,仍然会爆,必须两个数和结果都用int64存
4.注意在函数过程中,一个变量同时在主程序和过程中定义了,那么它就被认为是局部变量,所以一个变量要在过程中使用,又要在主程序中输出,则不要再函数过程中定义了。
5.int64速度很慢,在大规模数据处理时最好不用(除非存不下)
6.少用ansistring
数字处理:
1.对于最简分数,要考虑分母为1,或分子为0的情况。
字符串处理
1.注意输入的字符串开头和结尾有没有动手脚
2.不要把没赋值的n当作length(S)
输入输出
1.不要忘记删调试的东西!!!!很关键
2.不要忘记看一看有没有ans=这类东西
3.多组数据
4.无解情况
与或关系
1.IF中 A or B and C 和 (A or B) and C是不同的!
前者只要B满足了就行,而后者B满足了还必须C满足才行
函数过程
1.函数过程中用到的i一定要在过程里面定义,否则会混乱
2.过程中用到的统计变量如果在主程序中定义的,在过程中用前要赋值为0,否则会变成很大数字(我也不知道)
滚动数组
1.每次循环都要将当前这一层数组清空一次
最短路
1.SPFA队列不要开小了,除非用循环队列。
2.floyd要记得处理f[i,i]的情况,一般设为0,最好不加(i<>j)and(j<>K)and(i<>k)
并查集
1.写非递归路径压缩时不要忘记返回祖先的标号
2.并查集节点的一切操作不要忘了find祖先
3.注意点是1~n还是0~n-1
4.不要忘记开始时f[i]:=i初始化
宽搜
1.一般都要判重,记得把队列以一个节点也加入判重数组
动态规划
1.初值要注意如果有负数不可用-inf,最好div2,或者用int64
2.01背包要注意,如果代价有负数,必须分类讨论
for i:=1 to n do
if v[i]>=0 then for j:=max downto min do...
else for j:=min to max do
对于负数,只有这样才能保证是由上一层的转移得到
线段树
1.不要忘记当不再往子节点处理时要exit
2.不要忘记build,自己老是,欢快地写完查询修改后忘记建树
3.不要忘记上传操作,用子节点修改父节点,尤其对于比较复杂的数据维护,上传可能不太好写。
4.延迟标记含义是当前节点已被修改,而子节点没修改,故放标记时,先将该节点值整体修改,再放标记,下传时
两个子节点都是先修改,后放标记,别忘了父节点标记清空。
5.由上,如果对区间加上一个值,则放标记时也是加上一个值。对于区间求和,延迟标记是b[p]=b[p]+v而不是b[p]=v切记
6.注意下传标记的节点不能是叶节点,故下传时判断l<r。
欧拉函数
1.不要忘记在统计1~n序列中gcd=1的点对数时对顺序有没有要求如(5,3)和(3,5)算不算一种
如果各自作为一种,要将结果*2,别忘记减1,因为e[1]的值被重复了,(1,1)到过来还是(1,1)
树
1.dfs时,如果y=p^.x,如果y不符合要求,你在continue前要加p:=p^.next;
2.建树时加方向边别忘了
错误记录:
9月12日小测:文件名错误,windows.pas少写了一个s。
9月16日白书贪心poj2393:结果很大没有用int64。
9月17日白书贪心poj1862:小数点后保留三位,看走眼写成两位......
9月23日白书并查集:写非递归路径压缩要记得返回祖先的编号,另外合并时要将该点祖先作为另一点的祖先。
10月25日noip2014联合权值:记录最大值和次大值写错了,发现最大值不是最大时要将它赋予次大值,然后再设为当前这个数,另外mod写错了,一个数减别的数,不能各自取模后再去减,而是应先减再取模。
10月27日poj2387最短路模板:SPFA队列开小了,发现自己太随意,数组随手开一个范围,交的时候还忘了改,习惯不好啊。
11月4日poj3249拓扑排序:用指针时忘记写p指向下一个,定义指针又一次写错,另外本题结果可能为负,不仅dis数组要初值设为负无穷,保存答案的ans也要设为负无穷。