您的位置:首页 > 其它

ACM Attention

2015-11-03 16:34 295 查看

ACM Attention

读题

读题一定要仔细,尤其是样例很水的时候,直接看输入输出是一个坏习惯

注意题目的时限和内存要求,对于某些问题,时限和内存得要求很特殊

读题的时候最好讲题目表打成数学公式,有利思考

大模拟之列最好画图标,简介的表示一下问题

注意输出的格式,精度要求,和单词拼写

思考

没思路

程序的范围基本已经暗示了本体用什么算法去做

不妨多推几个样例,找找规律,有些题目可能就是找规律

谢谢数学公式,将公式变换一下,可能就找到了压缩复杂度的方法

区间[a,b]的问题可以转换成[0,b]−[0,a]的问题

暴力吧暴力,七分天注定,三分靠胆量

有思路

不要觉得这题和以前做过的题目类似就会了,可能小细节的变动会让做法完全不同

考虑问题一定要补充不漏

注意一下细节问题,如溢出等等

思路了然于胸的时候再动手编程

编程

溢出

问题:i∗i<longlong时,很有可能因为i∗i溢出而死循环

对策:最好将变量全部设置成longlong

初始化

问题:vector<int>,map<int,double>….在多组样例的时候一定初始化

对策:最好在一组输入开始的时候就初始化

栈,队列弹出

问题

stack<int> Stack;

....

while()
{
Stack.push();
....
Stack.pop();
}


在没有检测Stack是否为empty()就直接pop()很容易RE

对策:stack,queue..类似的数据结构在pop()之前一定要检查是否isempty()

浮点型输出

问题:有些题目要求四舍五入,有些题目要求舍尾

对策:printf()默认为四舍五入,当然对于特殊精度的四舍五入我们可以+0.5,而舍尾我们可以转换为int再输出

向前遍历

问题:向前遍历的时候很容易写成i++造成死循环

对策:一定要记住向前遍历是i−−

常量类型

问题:系统默认是将1当成int来处理的,于是会出现类型错误

对策:尽量将double,longlong类型的变量放在前边,迫不得已时double–1.0,longlong–1.0LL

以两个0为EOF

问题:以两个0为EOF

写成:写成N+M==0

逻辑短路

问题:C语言中if()中用&&有可能出现逻辑短路问题

对策:知道问题后多注意注意

其他

仔细想一想,有没有除了分类讨论之外的方法,分类讨论很容易WA

以最坏的情况推测输入,如给出区间L,R注意题目没有说明的话L>R也是有可能的

在没有提高复杂度的情况下,简洁比性能更重要

不要用类,用结构体

对于一个值Ai可能有几次输入,注意选取一个最优值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: