avatar
fireworks99
keep hungry keep foolish

经验总结

做题经验总结

算法竞赛对其参与者的要求:

具备较强的问题抽象和建模能力,能实现对复杂实际问题的模拟求解

迎难而上,方能成长。念念不忘,必有回响!

-58.好多题数据n上限都是1e9(10亿,int上限21亿),今天遇到这样一题,一直WA,后来发现我有个3 * n的操作!!!

-57.有些样例(像是codeforces上的)不怀好意,故意引导人按照一种错误的思路去考虑,从而WA.

-56.我才发现,二进制运算 | & ,在状态压缩中,0代表无,1代表有,此时 | 对应取并集∪, & 对应取交集∩.

-55.阶乘取模,很可能从某项开始就是0了!

-54.从n到1不好算,试试反着来,从1到n。

-53.有乘有除的double运算坚持先除后乘,免超longlong!痛死

-52.不要自我感觉不会超int,就一个ans能开long long就开呗!

-51.多者选其一的贪心可简化为二者选其一,多测试几个”二者选其一“哪个更优,得出贪心方案

-50.猜出可能是贪心,可不明确贪心方案时,举一个简单的例子(>=3),手动枚举出所有方案,看哪个方案最优,猜测那就是正解

-49.当你确定思绪乱了的时候,敢于重新整理思路重新写

-48.题目叙述较长时,第一段多为题目背景,可忽略,若读完其他段有疑问可去读一下

-47.写了init函数,主函数里没调用就交上了……

-46.PE:Print a blank line after each test case.

-45.我就是个傻*,多次将i写成1

-44.T多(>=1000测试组数)想想预处理

-43.注意输出格式”Case # 1: “,大多数人做题时不管这个,只注重算法是否正确,当时间一长或思路正确而感到激动,往往忘掉了输出格式,多罚时20min

-42.较短的数字串可以当做数字处理

-41.输入(Input)可能有重复的内容

-40.代码能过样例和极限边界值却不能AC:去Discuss区看看

-39.special judge的题抓住刺眼、奇怪的特点去思考

-38.但凡有点思路就跟队友提出来,即使没有最终方案,也可以启发队友想出新策略

-37.遇到段错误(Segmentation Fault 、RE)而又不知该如何修改时,可以试试用map代替数组

-36.不要一遇到问题立刻转为数学题,有些是有实际意义的!比如你赌博(不可赊欠的那种),前四天每天输一元,后三天每天赢一元,你以为最开始只需一元的本金吗?天真…找到过程最低谷!(—++过程中最负的值即为一开始必须要有的值!) 实际问题相对于数学模型的最大特点是:不赊欠

-35.有时候除法能改为乘法(如:两比值比较大小),从而避免了卡精度问题

-34.手推出一般规律后,拿‘5’验证一下,有时候‘4’都不一定可靠

-33.在涉及取模的题目里,任何一步加法运算都要注意取模(特别是在特殊处理、结尾处理的时候)

-32.有时候初始化的值对应答案!所以慎重初始化,并检测初始化值作为答案是否符合题意!

-31.用输入挂前若需getchar()一定加上,不加可WA

-30.int n; scanf("%d", n); 漏了 & 编译器不报错

-29.平日做题遇到想不通的地方暂且搁置或问一下别人,相信阿基米德与酝酿效应,硬刚浪费时间还伤身

-28.条件判断时 >= 别漏了 ‘=’

-27.对于int型奇数n来说,n / 2 4 != n 2

-26.有些乍一看很不可思议、无从下手的题往往过于简单,用最简单的0、1、2带入’暴力赋值法’(选择填空必胜法宝),这样的题要大胆猜想、敢于尝试

-25.二分的l、r改变条件要写的简洁(那才是真的懂二分)

-24.凡是暴力遍历超时的,都可以想想二分优化(l、r的改变写好,否则易死循环)

-23.做题遇到从文件读入…freopen(“input.txt”,”r”,stdin); freopen(“output.txt”,”w”,stdout);

-22.平时1e4的期望内存开大十倍就行(除非内存限制很小)

-21.上下两个边界都要试一下

-20.程序简单取模复杂用JAVA

-19.有些题目看上去很复杂,实则是在掩盖它本身很简单这一事实,为了达到这一目的,它给的提示往往是去误导你,误导你把问题想复杂些

-18.T组测试数据,当T>100以至于1e5时,考虑预处理

-17.i、j、k下标密集区,下标看清楚写的是不是自己想要的

-16.有想法先跟队友商量一下,确保可行后试敲

-15.很多题有T组测试数据,样例输入却只一组,自己检查每组进行前是否各值已初始化!

-14.运行除法时 / 考虑分母是否可能为0,否则运行出错RE

-13.敢于读题(即使面对一篇冗长的阅读理解,有时不必全弄明白)

-12.数组开小了,非法访问未知地址的内容会TLE!

-11.数据量大时,强行用较高精度代替较低精度输入会TLE!

-10.无 结果输出 又没有 程序结束提示 :大概是死循环

-9.debug要有!针对性!抓要点!不盲目地改,效率低!

-8.if并列关系要列的清楚明白、层次分明,不要乱if

-7.输入一个数字,程序没运行直接返回一个异样的负值,很可能你的 scanf没有&

-6.当变量设置较多时,适当注释。

-5.数组开的大又不止一个会溢出,不等你输入直接结束程序

-4.特殊样例:逆序输入、重复输入、0、+1、-1 !边界值!

-3.思路清晰,写在纸上,可减少出错

-2.注意是非负整数(包括0)还是正整数

-1.在wrong answer与presentation error同时存在时可能先报presentation answer!

0.sacnf(“%lld”,a[i])没有“&”不报错但!

1.Time limit Exceeded(超时)缺少 !=EOF

2.数组适当开大一点,题目数据小的话开大10倍

3.细心!p!=np(输入p与n而非np).

4.分类讨论时 注意对应、对称性!

5.if(a==0)两个= if(a[i] == a[j])让这个==害惨了

6.赋值 temp==a[i] 无语……

7.原来循环中可以计算a【i】有多少被赋值(循环中计数)

8.不能只想,要一边想一边写,成功几率更大

9.特殊样例:注意0与负数与常数列的输入检测.(某些值结果若是0等特殊数字)

10.英文注意Multiple test cases.

11.有错误可用手机检查一下?

12.花样自造输入样例.

13.鼠标拖动选中Sample Output测试末尾有无空格

14.输入一个数字就对Ta操作,可不开数组,或许省内存、思路更清晰,但耗时间?

15.int 比 long long 省空间还省时;尽量不用endl因为耗时!

16.if(flag) 这里flag即使为负值也被算作1,if只能判0与非0

17.当你知道某题用到的知识点是你没学过的,那就直接去看题解,学会这个点,A过这道题,不要犹豫,这是应该的

英语单词学习(ACM相关)

有时候不愿刷题真的是因为题面是一大片英文……就跟饭菜不合胃口似的,想吃点又吃不下……

学以致用才是真正学到了。单词学完了用到句子里、文章里;数据结构、算法学完了用它去解题;函数、库学完了用它去做一两个简单的项目,这样才能记住些东西。

如果你学习一个知识点不去实践、应用,根本记不了一两天,还不如不去浪费那个时间!

  1. bidirectional /,baɪdə’rɛkʃənl/ 双向的 example: a bidirectional path
  2. adjacent /ə’dʒesnt/ 相邻的
  3. respectively /rɪ’spɛktɪvli/ 分别的
  4. radius [‘redɪəs] 半径,半径范围
  5. contiguous [kən’tɪɡjuəs] 连续的;邻近的;接触的
  6. horizontal [hɒrɪ’zɒnt(ə)l] 水平的、水平线,水平面;水平位置
  7. lexicographic [,lɛksɪkə’græfɪk] 字典的;字典编纂的
  8. troop [truːp] 军队;组;群;多数
  9. pasture [‘pɑːstʃə] 牧场;草原 吃草 放牧
  10. quadrant [‘kwɒdr(ə)nt] 象限、四分之一圆
  11. decimal [‘desɪm(ə)l] 十进位的,小数的
  12. lexicographically [ˌleksɪkəˈɡræfɪklɪ] 按字典序
  13. boundary [‘baʊnd(ə)rɪ] 边界;分界线
  14. indices [‘ɪndɪsiːz] 指数;目录(index的复数)
  15. scenarios [sɪ’nɛrɪ,o] 情节;情况 (≈cases)
  16. decimal [‘desɪm(ə)l] 十进制的、小数的;小数
  17. rational [‘ræʃ(ə)n(ə)l] 合理的,有理数(rational number)
  18. finite [‘faɪnaɪt] 有限的
  19. invalid [ˈɪnvəlɪd; ɪnˈvælɪd] 无效的、病弱残的
  20. syntax [‘sɪntæks] 句法
  21. Trajan [‘treidʒən]
  22. identical [aɪ’dentɪk(ə)l] 完全同样的,相同的;恒等的
  23. specification [,spesɪfɪ’keɪʃ(ə)n] 规格;说明书;详述
  24. performance [pə’fɔːm(ə)ns] 性能;绩效
  25. diameter [daɪ’æmɪtə] 直径
  26. radius [‘reɪdɪəs] 半径
  27. precisely [prɪ’saɪslɪ] 精确地
  28. arbitrarily [,ɑrbə’trɛrəli] 任意地
  29. cryptography [krɪp’tɒgrəfɪ] 密码学
  30. diagonal [daɪ’æg(ə)n(ə)l] 斜的,对角线的
  31. overlap [.əʊvə(r)’læp] 交叠、重叠
  32. unidirectional [,juːnɪdɪ’rekʃ(ə)n(ə)l] 单向的 (对比undirected无向的)
Site by Baole Zhao | Powered by Hexo | theme PreciousJoy