codeforces-go 💭💡🎈
算法 Algorithm
由于算法知识点繁杂,将自己学习到的算法、做过的题目分类整理好是有必要的。
一个算法模板应当涵盖以下几点:
- 对该算法的基本介绍(核心思想、复杂度等)
- 参考链接或书籍章节(讲的比较好的资料)
- 模板代码(可以包含一些注释、使用说明)
- 模板补充内容(常见题型中的额外代码、建模技巧等)
- 相关题目链接(模板题、经典题、思维转换题等)
算法目录
- 数据结构
- 字符串 strings.go
- 数学
- 动态规划 dp.go
- 背包
- 0-1 背包
- 完全背包
- 多重背包
- 分组背包
- 树上背包(依赖背包)
- 字典序最小方案
- 线性 DP
- 最大子段和
- LCS
- LPS
- LIS
- LCIS
- 长度为 m 的 LIS 个数
- 本质不同子序列个数
- 区间 DP
- 环形 DP
- 状压 DP
- 旅行商问题(TSP)
- 高维前缀和(SOS DP)
- 插头 DP
- 数位 DP
- 倍增优化 DP
- 斜率优化 DP(CHT)
- 树形 DP
- 树的直径个数
- 在任一直径上的节点个数
- 树上最大独立集
- 树上最小顶点覆盖
- 树上最小支配集
- 树上最大匹配
- 换根 DP(二次扫描法)
- 图论 graph.go
- 链式前向星
- 欧拉回路和欧拉路径
- 割点
- 割边(桥)
- 双连通分量(BCC)
- 最短路
- Dijkstra
- SPFA(队列优化的 Bellman-Ford)
- Floyd-Warshall
- Johnson
- 0-1 BFS(双端队列 BFS)
- 字典序最小最短路
- 最小环
- 最小生成树(MST)
- 单度限制最小生成树
- 次小生成树
- 曼哈顿距离最小生成树
- 最小差值生成树
- 最小树形图
- 二分图判定(染色)
- 二分图找奇环
- 二分图最大匹配
- 带权二分图最大完美匹配
- 拓扑排序
- 强连通分量(SCC)
- 2-SAT
- 基环树
- 最大流
- 最小费用最大流
- 三元环计数
- 四元环计数
- 仙人掌
- 树上问题 graph_tree.go
- 直径
- 重心
- 最近公共祖先(LCA)
- 树链剖分(重链剖分,HLD)
- 长链剖分
- 树上启发式合并(DSU)
- 树分块
- Prufer 序列
- 其他
- 快读模板 io.go
如何选择题目 How to Choose Problems
Rating < 2100
这一阶段主要目标是提高对问题的观察能力。做构造题可以针对性地训练这一点。
选择难度在自己 rating 到 rating+200 范围内的构造题 (tag: constructive algorithms),按照过题人数降序做题,比如 [1700,1900] 区间的就是下面这个链接:
https://codeforces.com/problemset?order=BY_SOLVED_DESC&tags=constructive+algorithms%2C1700-1900
通过大量的构造题训练,提高观察能力,快速找到切题入口。
Rating >= 2100
这一阶段要想上分,应以 DP 为主,图论和数据结构为辅。难度范围选择同上,可以根据自己在该项的能力上下调整。
我的 Codeforces 账号:

测试及对拍 Testing
编写一个 run(io.Reader, io.Writer)
函数来处理输入输出。这样写的理由是:
- 在
main
中调用 run(os.Stdin, os.Stdout)
来执行代码;
- 测试时,将测试数据转换成
strings.Reader
当作输入,并用一个 strings.Builder
来接收输出,将这二者传入 run
中,然后就能比较输出与答案了;
- 对拍时需要实现一个暴力算法
runAC
,参数和 run
一样。通过随机数据生成器来生成数据,分别传入 runAC
和 run
,通过比对各自的输出,来检查 run
中的问题。
具体可以见 Codeforces 代码仓库 main,所有非交互题的代码及其对应测试全部按照上述框架实现。
例如:1439C_test.go
交互题的写法要复杂一些,需要把涉及输入输出的地方抽象成接口,详见 interactive_problem。
学习资料及题目 Resources
注:由于入门经典上选了很多区域赛的题,一部分题目可以在 GYM 上找到,这样可以就可以用 Go 编程提交了。
算法竞赛入门经典(第二版)
算法竞赛入门经典训练指南
算法竞赛入门经典训练指南(升级版)
算法竞赛进阶指南
算法竞赛入门到进阶
OI Public Library(含国家队论文)
算法竞赛 (ICPC, OI, etc) 论文,课件,文档,笔记等
算法竞赛课件分享 by hzwer
算法第四版 Java 源码
数据结构和算法动态可视化
OI Wiki
CP-Algorithms
洛谷日报
All the good tutorials found for Competitive Programming
Codeforces Problem Topics
GeeksforGeeks 上的算法合集
Pepcy 模板
F0RE1GNERS 模板
【模板整合计划】目录
算法学习笔记(目录)
洛谷模板题(建议按难度筛选)
能力全面提升综合题单
Luogu Problem List
洛谷原试炼场
Links of ICPC/CCPC Contests from China
高级竞赛算法
算法进阶课
AtCoder 版《挑战程序设计竞赛》
AtCoder 版!蟻本 (初級編)
AtCoder 版!蟻本 (中級編)
AtCoder 版!蟻本 (上級編)
AtCoder 版!蟻本 (発展的トピック編)
待整理
【杂文】记一些有用的神奇网站
偶然在 GitHub 上发现的超长列表
算法竞赛训练中较难的部分
算法竞赛中可能不太会遇到的论文题
[杂谈]OI/ACM中冷门算法
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
其他 Others
My GoLand Live Templates
and Postfix Completion
settings
Draw Geometry
Draw Graph
OEIS
Wolfram|Alpha
UpSolve.me
Codeforces Upsolving Helper
Contests Filter
Codeforced
Codeforces Visualizer
Codeforces Solve Tracker
Another Codeforces Solve Tracker
Rating and Difficulties
Open Codeforces Rating System
How to Interpret Contest Ratings
Codeforces: Problem Difficulties
Elo rating system
Stay Healthy
Exercises!