算法竞赛复健记录
高三学了一年文化课感觉已经不会算法竞赛了,开个博客记录一下复健历程。
CF1662F
题意:有
考虑把点按
题解的一种做法比较巧妙,直接用线段树优化了 BFS 的过程。本题相当于每条边长度是 1,所以 BFS 时让每个点只访问一遍就可以保证正确性和时间复杂度。对当前 BFS 到的点
CF1765J
题意:有一个
- 将矩阵一行或一列的的元素减去(加上)
,代价为 ( ) - 将矩阵一个位置的元素减去
,代价为 ,要求
求将该矩阵所有元素变成 0 所需的最小代价。
设第
考虑其对偶问题:
可以只考虑
QOJ1643
写成线性规划问题如下:
转为对偶问题:
设
再令
值得一提的是,直接在原问题上转移会得到一模一样的做法,见:https://codeforces.com/blog/entry/90956?#comment-794463
CF GYM 103107 I
博弈论
参考 Sprague–Grundy theorem 和 Nimber
- 公平组合游戏等价于(等价的定义见上述链接)一个 Nim 游戏
- Nim 游戏中,状态
可以到达的状态集合为 ,则 - Nim-和(相当于对 Nim 游戏做笛卡尔积?)具有交换律结合律。
平衡树
做题的时候需要写一种平衡树,支持比较两个元素的序关系,于是想到了后缀平衡树用的那种将节点映射到实数上的写法,可是已经看不懂自己写的代码了...
现在看懂了,当时用 fhq-treap 实现的,为了维护元素到实数的映射,插入元素的时候不能 split 再 merge,而是要找到插入的位置,然后把那个子树的映射重构。这样做的复杂度期望是
Tarjan 算法求强连通分量
更新 low
的时候注意:搜索到横叉边的时候,如果点在栈中则要更新 low
,这里的栈不是 dfs 搜索栈,而是维护所有 还未确定所属强连通分量的点 的栈。
线性规划
- https://codeforces.com/blog/entry/105049
- https://www.cnblogs.com/p-b-p-b/p/14932601.html
- https://rusunoi.github.io/books/National-Team-Thesis/2021.pdf
Lagrange 对偶
最优化问题
其中
注意到有
线性规划对偶
线段树上二分
见 ac-library 及其 文档,写法是 zkw 线段树。
二分图匹配
Theorem (Hall's marriage theorem). A bipartite graph with
最大点权匹配:求二分图的带权最大匹配,其中只有一侧点有点权。做法:将点按点权排序,贪心地依次尝试增广(使用匈牙利)。
最大边权完美匹配:设
QOJ9372
记
设
注意到
更进一步,若
按上述方法维护
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗