ACM Attention

来源:互联网 发布:skype linux 编辑:程序博客网 时间:2024/06/05 03:07

ACM Attention

读题

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

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

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

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

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

思考

没思路

  • 程序的范围基本已经暗示了本体用什么算法去做
  • 不妨多推几个样例,找找规律,有些题目可能就是找规律
  • 谢谢数学公式,将公式变换一下,可能就找到了压缩复杂度的方法
  • 区间[a,b]的问题可以转换成[0,b][0,a]的问题
  • 暴力吧暴力,七分天注定,三分靠胆量

有思路

  • 不要觉得这题和以前做过的题目类似就会了,可能小细节的变动会让做法完全不同
  • 考虑问题一定要补充不漏
  • 注意一下细节问题,如溢出等等
  • 思路了然于胸的时候再动手编程

编程

溢出

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

对策:最好将变量全部设置成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类型的变量放在前边,迫不得已时double1.0,longlong1.0LL


以两个0为EOF

问题:以两个0为EOF

写成:写成N+M==0


逻辑短路

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

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

其他

  • 仔细想一想,有没有除了分类讨论之外的方法,分类讨论很容易WA
  • 以最坏的情况推测输入,如给出区间L,R注意题目没有说明的话L>R也是有可能的
  • 在没有提高复杂度的情况下,简洁比性能更重要
  • 不要用类,用结构体
  • 对于一个值Ai可能有几次输入,注意选取一个最优值
0 0
原创粉丝点击