摘要: 思路 正着求前缀和最大值需要维护当前前缀和和目前最大前缀和,dp 还需要一维记录当前位置,状态爆炸不能接受。 使用一个小 trick,求前缀和最大值可以倒着求:维护最大前缀和 \(mx\),当前 \(i\) 要不然在最大前缀和中,即 \(mx+a_i\),否则现在还没有找到最大前缀和,即 \(0\) 阅读全文
posted @ 2026-01-21 21:14 ask_silently 阅读(5) 评论(0) 推荐(0)
摘要: Part 0 有一张 \(n \times m\) 的网格图,每次只能向右或向上走,问从 \((0,0)\) 出发走到 \((n,m)\) 的方案数。 总共会走 \(n+m\) 步,选出 \(n\) 步向右走,方 案数即为 \(\binom{n+m}{n}\)。 Part 1 有一张 \(n \ti 阅读全文
posted @ 2026-01-09 10:49 ask_silently 阅读(11) 评论(0) 推荐(0)
摘要: 定义 可以将图分为两部分,相同部分的点之间没有连边的图叫做二分图。通常将两部分的点称为“左部点”和“右部点”。 判定 发现对于每一条边来说,两个端点的部分一定不相同,所以考虑将点进行染色,时间复杂度 \(O(n+m)\)。 性质 \(1\) 由上述操作可以得到二分图不存在奇环。 最大匹配 定义二分图 阅读全文
posted @ 2025-12-12 09:45 ask_silently 阅读(6) 评论(0) 推荐(0)
摘要: 基本定义在此不再过多阐述,介绍一下基本符号: \(\dbinom{n}{m}=C_n^m\),含义为 \(n\) 选 \(m\) 的组合方案数。 \(A_n^m\),含义为 \(n\) 选 \(m\) 的排列方案数。 求组合数方式 一般采用预处理阶乘与逆元做到线性求组合数。 如果求 \(\dbino 阅读全文
posted @ 2025-11-28 17:03 ask_silently 阅读(16) 评论(0) 推荐(0)
摘要: 考砸了就简写游记吧。 J 题很简单,\(30min\) 写完了,然后无聊写了四首歌歌词与编了一个扫雷,出场比较轻松。 S 比较紧张,\(30min\) 才想出来 \(T1\),写完 \(T1\) 已经 \(1h\) 了。看了 \(30min\) \(T2\),想出来了先跑最小生成树,看见 \(k\) 阅读全文
posted @ 2025-11-06 15:54 ask_silently 阅读(9) 评论(0) 推荐(0)
摘要: 定义 公平组合游戏 公平组合游戏指(节选自 oiwiki): 游戏有两个人参与,两者轮流做出决策,均知道游戏的全部信息; 任意一个游戏者在某一确定状态可以作出的决策集合只与当前的状态有关,而与游戏者无关; 游戏中的同一个状态不可能多次抵达,游戏以玩家无法行动为结束,且游戏一定会在有限步后以非平局结束 阅读全文
posted @ 2025-08-02 12:33 ask_silently 阅读(66) 评论(0) 推荐(0)
摘要: 先看例题: BZOJ3028 食物 先看数据范围,\(n \le 10^{500}\),可能会想到矩阵加速。 \(dp_i\) 表示选了 \(i\) 件物品的方案数,很明显,对于只能选偶数类,奇数类,\(4\) 的倍数类,\(3\) 的倍数类,需要记录以前分别 \(\bmod 2,3,4\) 的前缀 阅读全文
posted @ 2025-08-01 15:55 ask_silently 阅读(15) 评论(0) 推荐(0)
摘要: 先看例题理解。 任务安排 \(O(n^2)\) dp 设 \(dp_i\) 表示前 \(i\) 个物品被分批后的最小总费用,同时处理开机时间 \(s\) 对后面状态的影响,则有转移 \(dp_i=\min_{j=0}^{i-1} dp_j + \sum_{k=1}^i t_k \times \sum 阅读全文
posted @ 2025-07-26 15:17 ask_silently 阅读(35) 评论(0) 推荐(0)
摘要: 矩阵基本操作 将一些元素排列成若干行,每行放上相同数量的元素,就是一个矩阵 (Matrix) 。一个矩阵 \(A\) 从左上角数的第 \(i\) 行第 \(j\) 列的数称作第 \(i , j\) 项,记作 \(A_{i, j}\) 或 \(A_{i j}\) 。对于 \(m = n\) 的矩阵我们 阅读全文
posted @ 2025-07-21 16:31 ask_silently 阅读(21) 评论(0) 推荐(0)
摘要: 倍增 奇妙运用:求二进制下 \(1\) 的总个数,运用倍增的思想,先求出每两个之间的 \(1\) 的个数,然后是每四个最后到 \(64\) 或 \(32\) 位(当然可以用 STL 中的 __builtin_popcount)。 int popcount(int x){ x=(x&0x5555555 阅读全文
posted @ 2025-07-17 15:24 ask_silently 阅读(8) 评论(0) 推荐(0)