ACM Attention

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 类型的变量放在前边,迫不得已时 double 1.0 , longlong 1.0LL


以两个0为EOF

问题:以两个0为EOF

写成:写成 N+M==0


逻辑短路

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

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

其他

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值