力扣算法Algorithm竞赛模板库(codeforces-go):含了算法竞赛中常用的数据结构和算法实现,助力开发者更高效地解决问题

本文介绍了codeforces-go中的算法竞赛模板库,涵盖了各种数据结构、常用算法实现以及学习资源,帮助竞赛者高效解决问题和提升算法技能。
摘要由CSDN通过智能技术生成

1.算法Algorithm竞赛模板库(codeforces-go)

算法竞赛模板库,为算法竞赛爱好者提供了一系列精心设计的算法模板。这个库包含了算法竞赛中常用的数据结构和算法实现,助力开发者更高效地解决问题

在这里插入图片描述

一个算法模板应当涵盖以下几点:

  • 对该算法的基本介绍(核心思想、复杂度等)
  • 参考链接或书籍章节(讲的比较好的资料)
  • 模板代码(可以包含一些注释、使用说明)
  • 模板补充内容(常见题型中的额外代码、建模技巧等)
  • 相关题目链接(模板题、经典题、思维转换题等)

1.1 算法目录

不了解 Go?快速入门教程

1.1.1 数据结构

1.1.2 字符串 strings.go

1.1.3 数学

1.1.4 动态规划 dp.go

  • 背包
    • 0-1 背包
    • 完全背包
    • 多重背包
      • 二进制优化
      • 单调队列优化
      • 同余前缀和优化(求方案数)
    • 分组背包
    • 树上背包(依赖背包)
    • 字典序最小方案
  • 线性 DP
    • 最大子段和
    • LCS
    • LPS
    • LIS
      • 狄尔沃斯定理
    • LCIS
    • 长度为 m 的 LIS 个数
    • 本质不同子序列个数
  • 区间 DP
  • 环形 DP
  • 博弈 DP
  • 概率 DP
  • 期望 DP
  • 状压 DP
    • 全排列 DP
    • 旅行商问题(TSP)
    • 子集 DP
    • 高维前缀和(SOS DP)
    • 插头 DP
  • 数位 DP
    • 记忆化搜索(同时跑上下界)
  • 倍增优化 DP
  • 斜率优化 DP(CHT)
  • WQS 二分优化 DP(凸优化 DP / 带权二分)
  • 树形 DP
    • 树的直径个数
    • 在任一直径上的节点个数
    • 树上最大独立集
    • 树上最小顶点覆盖
    • 树上最小支配集
    • 树上最大匹配
    • 换根 DP(二次扫描法)

1.1.5 图论 graph.go

  • 链式前向星
  • DFS 常用技巧
  • BFS 常用技巧
  • 欧拉回路和欧拉路径
    • 无向图
    • 有向图
  • 割点
  • 割边(桥)
  • 双连通分量(BCC)
    • v-BCC
    • e-BCC
  • 仙人掌 & 圆方树
  • 最短路
    • Dijkstra
    • SPFA(队列优化的 Bellman-Ford)
      • 差分约束系统
    • Floyd-Warshall
    • Johnson
    • 0-1 BFS(双端队列 BFS)
    • 字典序最小最短路
    • 同余最短路
  • 最小环
  • 最小斯坦纳树
  • 最小生成树(MST)
    • Kruskal
    • Prim
  • 单度限制最小生成树
  • 次小生成树
  • 曼哈顿距离最小生成树
  • 最小差值生成树
  • 最小树形图
    • 朱刘算法
  • 二分图判定(染色)
  • 二分图找奇环
  • 二分图最大匹配
    • 匈牙利算法
  • 带权二分图最大完美匹配
    • Kuhn–Munkres 算法
  • 拓扑排序
  • 强连通分量(SCC)
    • Kosaraju
    • Tarjan
  • 2-SAT
  • 基环树
  • 最大流
    • Dinic
    • ISAP
    • HLPP
  • 最小费用最大流
    • SPFA
    • Dijkstra
  • 三元环计数
  • 四元环计数
  • 树上问题 graph_tree.go
    • 直径
    • 重心
    • 点分治
    • 点分树
    • 最近公共祖先(LCA)
      • 倍增
      • ST 表
      • Tarjan
      • 树上差分
      • 虚树
    • 重链剖分(HLD)
    • 长链剖分
    • 树上启发式合并(small to large)
      • 按大小合并
      • 轻重儿子合并
    • 树分块
    • Prufer 序列

1.1.6 其他

1.2 如何选择题目 How to Choose Problems

1.2.1 Rating < 2100

这一阶段主要目标是提高对问题的观察能力。做构造题可以针对性地训练这一点。

选择难度在自己 rating 到 rating+200 范围内的构造题 (tag: constructive algorithms),按照过题人数降序做题,比如 [1700,1900] 区间的就是下面这个链接:

https://codeforces.com/problemset?order=BY_SOLVED_DESC&tags=constructive+algorithms%2C1700-1900

通过大量的构造题训练,提高观察能力,快速找到切题入口。具体见我在知乎上的这篇 回答

1.2.2 Rating >= 2100(个人训练用,仅供参考)

见识更高的山、更广的海。

按人数从高到低,做 2200+ 的题目。建议不设置难度上限!由于按人数排序,难度分不会太高,不设上限可以避免错过高分好题

1.3 测试及对拍 Testing

编写一个 run(io.Reader, io.Writer) 函数来处理输入输出。这样写的理由是:

  • main 中调用 run(os.Stdin, os.Stdout) 来执行代码;
  • 测试时,将测试数据转换成 strings.Reader 当作输入,并用一个 strings.Builder 来接收输出,将这二者传入 run 中,然后就能比较输出与答案了;
  • 对拍时需要实现一个暴力算法 runAC,参数和 run 一样。通过 随机数据生成器 来生成数据,分别传入 runACrun,通过比对各自的输出,来检查 run 中的问题。

具体可以见 Codeforces 代码仓库 main,所有非交互题的代码及其对应测试全部按照上述框架实现。

例如:1439C_test.go

交互题的写法要复杂一些,需要把涉及输入输出的地方抽象成接口,详见 interactive_problem

2. 学习资料及题目 Resources

2.1 常见资料收集

注:由于入门经典上选了很多区域赛的题,一部分题目可以在 GYM 上找到,这样可以就可以用 Go 编程提交了。

算法竞赛入门经典(第二版)

算法竞赛入门经典训练指南

算法竞赛入门经典训练指南(升级版)

算法竞赛进阶指南

算法竞赛入门到进阶

《算法竞赛》配套题单

OI Public Library(含国家队论文)

算法竞赛 (ICPC, OI, etc) 论文,课件,文档,笔记等

算法竞赛课件分享 by hzwer

算法第四版 Java 源码

数据结构和算法动态可视化

OI Wiki

CP-Algorithms

The Ultimate Topic List (with Resources, Problems and Templates)

洛谷日报

All the good tutorials found for Competitive Programming

Codeforces Problem Topics

The Ultimate Topic List(with Tutorials, Problems, and Templates)

GeeksforGeeks 上的算法合集

Pepcy 模板

F0RE1GNERS 模板

https://github.com/hh2048/XCPC 含 jiangly 模板

https://www.cnblogs.com/alex-wei/p/contents.html

【模板整合计划】目录

算法学习笔记(目录)

洛谷模板题(建议按难度筛选)

能力全面提升综合题单

Luogu Problem List

洛谷原试炼场

Links of ICPC/CCPC Contests from China

AtCoder 题目分类

2.2 AtCoder 版《挑战程序设计竞赛》

AtCoder 版!蟻本 (初級編)

AtCoder 版!蟻本 (中級編)

AtCoder 版!蟻本 (上級編)

AtCoder 版!蟻本 (発展的トピック編)

2.3 待整理

【杂文】记一些有用的神奇网站

偶然在 GitHub 上发现的超长列表

算法竞赛训练中较难的部分

算法竞赛中可能不太会遇到的论文题

[杂谈]OI/ACM中冷门算法

Things I don’t know

[meme] If you know at least 3 of these things and you are not red — you are doing it wrong. Stop learning useless algorithms, go and solve some problems, learn how to use binary search.

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

C++ @cache

2.4 其他 Others

My GoLand Live Templates and Postfix Completion settings

Useful Tools

GeoGebra

Draw Geometry

Draw Graph

OEIS

Wolfram|Alpha

UpSolve.me

Codeforces Upsolving Helper

Contests Filter

Codeforced

Codeforces Visualizer

Codeforces Solve Tracker

Another Codeforces Solve Tracker

AtCoder Problems

AtCoder Companions

AtCoder-Codeforces Rating converter

Rating and Difficulties

Open Codeforces Rating System

How to Interpret Contest Ratings

Codeforces: Problem Difficulties

Elo rating system

Stay Healthy

Exercises!

视频链接可以看:b站 灵茶山艾府 https://space.bilibili.com/206214

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汀、人工智能

十分感谢您的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值