CTT 2018
Day 1
A
计算几何,还不会,有空学一下。
B
简单题,只需要看 即可。
那么对于一个确定的 ,对这个东西的贡献是对称的。
也就是 和 这两个方案互为倒数。
也就是只要算出等于一的方案,加上后除以二就行。
算出相等的,相当于每一个质因数都要相同,跑个暴力 dp 就行。
C
点分治方案数,考虑给点标号,标的号小的在点分树上深度小。
那么两个标号相同的中间必须有一个标号小的点。
那么一个子树填完后,给外面还有贡献的有一些点,两个子树合并的时候,相当于当前点去作为一个前缀的父亲(点分树上),然后对于剩下的点,两个子树合并需要满足标号不交,那么就是一个简单的组合数。
是 的后缀和。
也可以理解为是两个点分树合并,本质就是两条链进行合并,第二维记录的是 所在链的长度。
Day 2
A
首先考虑没有修改,只能离线下来长剖做,然后发现有修改很难做了。
强制离线,每 个操作分个块,然后过一个块重构,然后块内修改暴力即可,复杂度 。
回顾了一下长剖写法,这种需要算前缀和的长剖的常见套路是记录后缀和。
代码写完就过了,很爽。
B
类似与同余最短路,因为 的方格是 最小的,而且一定有的放,因此考虑对于每个 计算凑出这个的最小的 。
因为放置的矩形的宽 ,因此枚举 ,然后接下来先放置一个 的,然后后面可以接 ,直接完全背包一下就行。
C
欧拉数板子题,懒了。
Day 3
A
skip。
B
后缀平衡树,有时间学。
C
不大,可以暴力 dp,关键是如何计算区间的答案。
扫描线一下,注意到区间所需时间就是每个点到根路径的并的大小,因此对于一个点,如果它子树里有一个在区间中的点,那么对答案就有贡献,把贡献放在最右边的那个点上。
考虑加入一个点树上那些点会属于这个,相当于就是它到根的路径,因此 LCT Access 一下,维护一下颜色就做完了。
复杂度 ,遥遥领先,也不知道别人写的啥。
Day 4
A
构造好题。
用 SPFA 的序列去模拟 dij,注意到一个点如果最后一次出现一定是它已经成为了最短路,把这些位置标出来。
而在两个最优点中间这一段东西,就是前面一个最优点以及它前面那些普通点更新的东西,注意到最优点一定是由前面的最优点来更新的,所以可以直接把最优点拉成一条链。
中间这一段东西,我也直接强制让前面的那个最优点来更新就好了,只需要记录一个当前最短路,减一就行。
还需要保证前面的普通点当前无法更新其他点,那么说明其连出去的点权需要 ,记录一下就行,在后面连的时候注意一下。
B
题解也没有,代码也没有,以下内容口胡。
首先发现,第一问的答案是最大匹配。
考虑下界,最大匹配肯定是一种合法方案,因为只要把孤立点挂上去就行。
上界的话,每个连通块至少需要包含左右的点,因此不可能有更大的方案。
的限制的话,连通块个数最多说明边数最少,一个不满足连通块数最多的方案可以断边调整成最多的。
可以发现这样每个连通块都是一个菊花图,不过没什么用。
第二问已知总边数,直接每个点流量 的上下界网络流就行了。
还没学,先咕。
C
skip。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现