摘要:
思路 直接将输出的答案分为两个分考虑。 (1) 考虑二分 + DP。 设当前二分出的平均数为 \(x\),如果合法,那么有(其中 \(p\) 为选出数下标的集合): \[ \frac{a_{p_1} + a_{p_2} + \dots + a_{p_k}}{k} \geq x \]即: \[ \fr 阅读全文
posted @ 2024-06-22 10:52
WBIKPS
阅读(44)
评论(0)
推荐(0)
摘要:
思路 定义 \(dp_i\) 表示将前 \(i\) 个分为若干段的价值总和。容易得到状态转移方程: \[ dp_i = \sum_{j = 1}^{i - 1}{dp_j \times (\max_{k = j + 1}^{i}\{a_k\} - \min_{k = j + 1}^{i}\{a_k\ 阅读全文
posted @ 2024-06-22 10:51
WBIKPS
阅读(25)
评论(0)
推荐(0)
摘要:
思路 一眼可以把两个可以交换的数之间建一条边,显然在一个连通块里面的元素可以两两之间交换。 由于是排列,每一个元素 \(i\) 最终的位置是 \(i\)。 考虑将元素从小到大放置,令 \(ad_i\) 表示当前 \(i\) 元素的位置。 现在我们想让 \(i\) 换到 \(i\) 位置上,并且想使用 阅读全文
posted @ 2024-06-22 10:51
WBIKPS
阅读(26)
评论(0)
推荐(0)
摘要:
思路 首先有一个显然的贪心策略,就是先用大面值的,再用小面值的。 因为 \(n \neq 60\),先考虑搜索。 对于搜索到剩余 \(x\) 元,当前用 \(A_u\) 面值的时候。可以分为两种情况: 不找零,其答案为 a = x / a[u] + dfs(u - 1,x % a[u])。 找零,其 阅读全文
posted @ 2024-06-22 10:51
WBIKPS
阅读(38)
评论(0)
推荐(0)
摘要:
思路 首先,转化一下题面,对于每一次操作,相当于在原序列的前缀和数组 \(s\) 中删除一个数。 \(dp_i\) 表示操作 \(1 \sim i\) 能得到的序列个数。 如果 \(a_i\) 在 \(1 \sim i - 1\) 中没有出现过,状态转移方程为 \(dp_i = dp_{i - 1} 阅读全文
posted @ 2024-06-22 10:51
WBIKPS
阅读(28)
评论(0)
推荐(0)
摘要:
思路 首先需要知道一个事情,对于一个数 \(x = \prod{p_i^{c_i}}\),它的约数个数是: \[\prod{(c_i + 1)} \]那么先将 \(\binom{k}{n}\) 展开: \[\frac{\prod_{i = n - k + 1}^{n}i}{k!} \]发现一个数的约 阅读全文
posted @ 2024-06-22 10:51
WBIKPS
阅读(29)
评论(0)
推荐(0)
摘要:
思路 Part 1 弱化版 看到这道题的第一眼想到了 P1012 这道题。 但是,这两道题选择的数量是有区别的。 我们可以由拼数得出一个结论性的排序规则(这里就不多做解释了): inline bool cmp(string a,string b){ return a + b < b + a; } 如 阅读全文
posted @ 2024-06-22 10:50
WBIKPS
阅读(34)
评论(0)
推荐(0)
摘要:
思路 对于每一个 7,我们都可以抽象为这样一个图形: 如果有两个 7,无论它是否有重合部分,红色部分是不需要判断的,只需要看绿色的部分。 因此,我们的问题就简化为了三角形,而不是四边形。 对于所有的 7,都有一个公共顶点:\((0,0)\) 点。 所以,我们可以引出一个叫斜率的概念来判断这些三角形是 阅读全文
posted @ 2024-06-22 10:50
WBIKPS
阅读(25)
评论(0)
推荐(0)
摘要:
题意 给定 \(N\) 个小车,每个小车的编号分别为:\(1,2,\dots,N\)。 现在有 \(Q\) 个操作,每个操作执行 \(3\) 种操作: 1 x y,将 \(x\) 和 \(y\) 相连。(\(y\) 在 \(x\) 之后) 2 x y,将 \(x\) 和 \(y\) 的连接解除。 3 阅读全文
posted @ 2024-06-22 10:50
WBIKPS
阅读(49)
评论(0)
推荐(0)
摘要:
比较符合 CCF 造数据水平的题。 思路 首先可以用两个 vector<pair<int,int>> v[N] 分别将每一行、每一列的元素的权值与编号存储下来。 那么可以对所有的 \(v_i\) 按照权值从小到大排序。那么发现对于所有的满足 v[i][p].fst < v[i][q].fst 的 \ 阅读全文
posted @ 2024-06-22 10:50
WBIKPS
阅读(30)
评论(0)
推荐(0)
摘要:
思路 显然我们需要求出原树的最大匹配。 定义 \(dp_{i,0/1}\) 表示在 \(i\) 为根的子树中进行匹配,且 \(i\) 不选/选 的最大匹配。状态转移方程比较显然: \[\left\{\begin{matrix} dp_{u,0} = \sum{val_v}\\ dp_{u,1} = 阅读全文
posted @ 2024-06-22 10:50
WBIKPS
阅读(30)
评论(0)
推荐(0)
摘要:
板子题,模拟赛场切了。 思路 线段树换根板子题。 因为需要求每一个点的答案,所以定义 \(dp_i\) 表示以 \(i\) 为根的最长距离。 考虑将一个点 \(v\) 转化为根,树的形态会发生什么变化(假设 \(v\) 的父亲节点是 \(u\))。 发现在 \(v\) 子树中的节点,距离都会减少 \ 阅读全文
posted @ 2024-06-22 10:50
WBIKPS
阅读(33)
评论(0)
推荐(0)
摘要:
思路 定义 \(dp_{i,j}\) 表示将前 \(i\) 个数,正好分为 \(j\) 组的方案数。 那么,我们对 \(i\) 号元素进行分类讨论: 将 \(i\) 放入原本就存在的组中,因为在同一个组中不能存在两个数 \(x,y\),使得 \(x \bmod m = y \bmod m\)。所以对 阅读全文
posted @ 2024-06-22 10:50
WBIKPS
阅读(26)
评论(0)
推荐(0)
摘要:
思路 区间 DP 好题,合并的时候十分毒瘤。 首先,定义 \(dp_{i,j}\) 表示合并 \([i,j]\) 区间不同的方案的数量。不难发现,如果区间长度为奇数(即 \(j - i + 1\) 为奇数),一定无法合并。 然后,如果 \(i,j\) 是朋友关系,有 \(dp_{i, j} = dp 阅读全文
posted @ 2024-06-22 10:50
WBIKPS
阅读(34)
评论(0)
推荐(0)
摘要:
思路 首先,不难发现,对于本题将 \(a,b\) 合成一个序列,并按照 \(a_i\) 排序的答案不会发生变化。所以,我们可以直接排序,那么,我们当前枚举到的 \(a_i\) 就是当前的 \(\max(a_i)\)。 定义 \(dp_{i,j,0/1}\) 表示在 \(1 \sim i\) 中,选择 阅读全文
posted @ 2024-06-22 10:50
WBIKPS
阅读(394)
评论(0)
推荐(0)

浙公网安备 33010602011771号