中级农民
- 积分
- 235
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2022-11-27
- 最后登录
- 1970-1-1
|
320 个主题 | 6124 个回复 | 最后更新:2 小时前
注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
背景:非CS本科,0 ACM/OI经验,正在读mscs。
来地里好多东西看不到好急,发个经验贴看看能不能蹭点大米😁。
先贴一下Rating,以前高强度打LC周赛的时候可能有个top 0.5%,希望这个帖子可以给大家分享点自己的经验。

1. 刷题量
我刚开始的时候抱着数据结构的书边看边根据知识点刷,题量从0刷到了大概300+题(我猜),这个时候刷题量其实也不是很多,但是一般周赛的两道medium大概率都能做出来了。后期就是碰到不会的题目,看讨论区,如果是算法没学过就查OI wki, wikipedia, CSDN,知乎, etc. 把知识点补齐,慢慢的见的Hard多了比较水的Hard题就也能写出来了。个人观点单纯为了追求数量刷题没什么必要,但是对每个知识点保证一个基础的题量(我会给自己建议初期每个知识点刷2~5题)非常重要。
2. 思路提升
提升思路我的心得是:
1.多写不同的题目,LC很多题都太接近了比如各种暴力搜索套不同的题面,那种题我觉得写个5、6题和写一题区别也不大。
2.多进行长考,在我能写出hard之后我开始偶尔参加codeforces的contest,我的体会是对自己的脑力有很显著的提升。codeforces竞赛的BCD我映像里是对知识点要求并不会比LC高多少,但是对思路的要求更高,写codeforces(对我来说)会有更多有意义的长考。后来再回去写LC,压力瞬间小了很多。
3. 小技巧
最后是一些可以有效提升排名的小技巧,比如:
1. 猜算法复杂度
打contest 如果不能一眼看出最优解,一个基本的操作就是看数据范围猜复杂度,比如O(n^2)解决n<1e4的问题,O(nlogn)解决n<1e6的问题,O(n)解决 n <1e8 的问题,O(logn)解决 n>1e8的问题。
比如biweekly 95的q4,n<=1e5,那么这题很大概率是nlogn的complexity。如果能想到线性套二分,就不难想到对于一个possible solution,可以在linear time里验证其是否是valid solution, 接着用二分缩小search space,这题hard基本就解决了。
2. 看榜
如果一道题(一般是LC contest第四题)有点摸不准难度,可以打开实时榜单看看大佬们的完成情况,根据完成的人数,可以有效判断自己是想复杂了还是想简单了。
3. 别急着提交
先静态看一遍代码,检查一遍逻辑以及typo(我现在已经很少有因为typo出错,但是还是常常在逻辑上有疏漏)再提交降低很多WA。
LC周赛WA一次就是5分钟,在手速场如果因为心急WA了两三次,那基本就和高排名无缘了
最近刚开始恢复打周赛,暂时先想到了这些。希望以后可以在地里和大家学习更多知识。
补充内容 (2023-02-20 06:57 +8:00):
看到不少人问,补充一下,楼主是数学本科 |
上一篇: 分享下自己对dijkstra 算法 的理解下一篇: chatGPT快速刷题
|