由于算法知识点繁杂,将自己学习到的算法、做过的题目分类整理好是有必要的。
一个算法模板应当涵盖以下几点: - 对该算法的基本介绍(核心思想、复杂度等) - 参考链接或书籍章节(讲的比较好的资料) - 模板代码(可以包含一些注释、使用说明) - 模板补充内容(常见题型中的额外代码、建模技巧等) - 相关题目链接(模板题、经典题、思维转换题等)
这一阶段主要目标是提高对问题的观察能力。做构造题可以针对性地训练这一点。
选择难度在自己 rating 到 rating+200 范围内的构造题 (tag: constructive algorithms),按照过题人数降序做题,比如 [1700,1900] 区间的就是下面这个链接:
https://codeforces.com/problemset?order=BY_SOLVED_DESC&tags=constructive+algorithms%2C1700-1900
通过大量的构造题训练,提高观察能力,快速找到切题入口。
这一阶段要想上分,应以 DP 为主,图论和数据结构为辅。难度范围选择同上,可以根据自己在该项的能力上下调整。
我的 Codeforces 账号:
编写一个 run(io.Reader, io.Writer) 函数来处理输入输出。这样写的理由是:
main 中调用 run(os.Stdin, os.Stdout) 来执行代码;strings.Reader 当作输入,并用一个 strings.Builder 来接收输出,将这二者传入 run 中,然后就能比较输出与答案了;runAC,参数和 run 一样。通过随机数据生成器来生成数据,分别传入 runAC 和 run,通过比对各自的输出,来检查 run 中的问题。具体可以见 Codeforces 代码仓库 main,所有非交互题的代码及其对应测试全部按照上述框架实现。
交互题的写法要复杂一些,需要把涉及输入输出的地方抽象成接口,详见 interactive_problem。
注:由于入门经典上选了很多区域赛的题,一部分题目可以在 GYM 上找到,这样可以就可以用 Go 编程提交了。
算法竞赛 (ICPC, OI, etc) 论文,课件,文档,笔记等
All the good tutorials found for Competitive Programming
Links of ICPC/CCPC Contests from China
https://blog.csdn.net/calabash_boy/article/details/79973483
https://github.com/zimpha/algorithmic-library
https://www.luogu.com.cn/blog/command-block/blog-suo-yin-zhi-ding-post
https://wcysai.github.io/
https://www.luogu.com.cn/blog/Troverld/index
My GoLand Live Templates and Postfix Completion settings
Another Codeforces Solve Tracker
How to Interpret Contest Ratings
Codeforces: Problem Difficulties
$ claude mcp add codeforces-go \
-- python -m otcore.mcp_server <graph>