摘要:
思路 考虑对于每一个 \(a\) 上数位进行分析。令 \(a_i\) 表示 \(a\) 在二进制表示中从左往右数的第 \(i\) 位上的数字,\(b_i\) 同理。 分类讨论一下 \(a_i\) 的取值对于答案的贡献: 如果 \(a_i = 0\),对于这一位无论如何都不会拥有贡献。 如果 \(a_ 阅读全文
posted @ 2024-06-23 22:21
WBIKPS
阅读(25)
评论(0)
推荐(0)
摘要:
题意 给定一个长度为 \(n\) 的序列 \(\{a_1,a_2,\dots,a_n\}\)。现在要在 \(a\) 选出非空子序列 \(\{b_1,b_2,\dots,b_m\}\),使得所有的 \(i \in [1,m]\),都有 \(b_i \bmod i = 0\)。 求能够选取 \(b\) 阅读全文
posted @ 2024-06-23 22:21
WBIKPS
阅读(32)
评论(0)
推荐(0)
摘要:
思路 首先发现选出的数最多 \(3\) 个,考虑反证法。假设选出了四个数 \(a,b,c,d\),并令: \[|a - b| = 2^{x_1},|b - c| = 2^{x_2},|c - d| = 2^{x_3} \]又因为,\(|a - c|,|b - d|\) 也都是 \(2\) 的次幂,那 阅读全文
posted @ 2024-06-23 13:04
WBIKPS
阅读(19)
评论(0)
推荐(0)
摘要:
思路 毒瘤数位 DP 题。 首先,你可以用一个 vector 储存每一个数字出现的次数,然后用 map 记忆化。 然后可以得到如下 TLE #8 的代码。 因为 map 自带一只 \(\log\) 所以,考虑将 map 优化掉。但是,现在每一种数字可能会出现很多次,所以要用 vector 维护出现次 阅读全文
posted @ 2024-06-23 13:00
WBIKPS
阅读(31)
评论(0)
推荐(0)
摘要:
CSP-2022 S2 T1 弱化版。 思路 首先因为边权均为 \(1\),所以我们可以在 \(\Theta(n^2)\) 的复杂度用 BFS 求解出任意两点 \(i,j\) 的最短距离 \(d_{i,j}\)(如果 \(i\) 不能到达 \(j\),则令 \(d_{i,j} = -1\))。 有一 阅读全文
posted @ 2024-06-23 13:00
WBIKPS
阅读(28)
评论(0)
推荐(0)
摘要:
思路 首先发现 \(\sum_{i = 1}^{n}i^k\) 是一个 \(k + 1\) 次多项式,那么我们需要求出 \(k + 2\) 个点才能得到唯一的一个 \(f(t) = \sum_{i = 1}^{t}{i^k}\)。 不难通过拉格朗日插值法,将 \(x = 1 \sim (k + 2) 阅读全文
posted @ 2024-06-23 13:00
WBIKPS
阅读(41)
评论(0)
推荐(0)
摘要:
思路 首先考虑答案下界,因为 \((n - i)\) 和 \(|d_i + i - n|\) 均大于等于 \(0\),所以它们相乘一定大于等于 \(0\)。于是考虑能不能构造出结果为 \(0\)。 显然当 \(i = n\) 时,无论 \(d_i\) 的值是什么,式子的结果为 \(0\)。因此只需要 阅读全文
posted @ 2024-06-23 13:00
WBIKPS
阅读(44)
评论(0)
推荐(0)
摘要:
思路 发现 \(x\) 对题目的限制较大,因此考虑先将 \(x\) 排序并离散化后再来考虑。 不难用线段树维护 \(\max_{i = l}^{r}\{x_i + len_i\}\),这样我们就可以利用类似线段树上二分的技巧得出是哪一只青蛙吃掉的蚊子。 但是有可能有一只蚊子无法吃掉,我们先把它丢进一 阅读全文
posted @ 2024-06-23 13:00
WBIKPS
阅读(29)
评论(0)
推荐(0)
摘要:
思路 首先,可以转化题意,找到一个极长的区间 \([l,r]\) 使得(其中 \(mx_i\) 表示 \([l,r]\) 区间中属性 \(i\) 的最大值): \[ \sum_{i = 1}^{m}mx_i \leq k \]显然对于这个东西当 \(l,r\) 发生移动时,是极其好维护的,所以想到双 阅读全文
posted @ 2024-06-23 13:00
WBIKPS
阅读(17)
评论(0)
推荐(0)
摘要:
思路 Part 1 简单版 我们先想一想,如果每一种花有无限个,有多少种选法。 我们先假设第 \(i\) 种花选 \(x_i\) 支,那么,我们可以得出以下式子: \[ \sum_{i = 1}^{i = n}x_i = m \]然后,我们根据隔板法,得出答案:\(C_{n + m + 1}^{n 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(35)
评论(0)
推荐(0)
摘要:
思路 首先考虑非常暴力的方法,令 \(s_i\) 表示这个数字的第 \(i\) 位上的数。则对于一个 \(s_i = 0/5\),则考虑将其留下成为最后一位元素:\(i\) 之后的所有元素都必须删,并且在 \(i\) 之前的元素可删可不删,因此贡献是 \(2^{i - 1}\)。得到如下表达式: \ 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(13)
评论(0)
推荐(0)
摘要:
思路 首先,对于每一只小猫刚好玩完就被饲养员接走的出发时间必定为 \(t_i - sd_i\)。 那么,我们令 \(a_i = t_i - sd_i\)表示第 \(i\) 只小猫的最早出发时间。 因此,对于第 \(k\) 时刻出发的饲养员能接到的小猫当且仅当满足 \(a_i \leq k\)。 然后 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(18)
评论(0)
推荐(0)
摘要:
思路 定义 \(dp_{i,j}\) 表示区间 \([i,j]\) 中回文串的数量。那么,不难得出状态转移方程 \(dp_{i,j} = dp_{i - 1} + f_{i,j}\)。(其中 \(f_{i,j}\) 表示左端点大于等于 \(i\),右端点为 \(j\) 的回文串数量) 由此,现在问题 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(18)
评论(0)
推荐(0)
摘要:
思路 首先我们将两种操作分开讨论: Part 1 加入操作 那么,我们可以用一个数组 \(vis_i = 0/1\) 表示 \(i\) 是 关闭/开启 状态,\(p_i\) 表示因数有 \(i\) 的数。 如果 $vis_x =1 $,说明此机器在之前已经启动过了,输出 Success。 然后,对 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(18)
评论(0)
推荐(0)
摘要:
思路 首先考虑较为普通的 DP。 定义 \(dp_{i,j}\) 表示在前 \(i\) 个位置中,最后一个 1 在 \(j\) 的最大分数,显然有: \[ dp_{i,j} = \left\{\begin{matrix} \max_{k = 1}^{i - 1}\{dp_{i - 1,k}\} + 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(33)
评论(0)
推荐(0)
摘要:
思路 不难发现:对于每一个 \(i(1 \leq i \leq k)\),如果能在 \((k + 1) \sim n\) 中找到任何一个 \(j\),满足 \(a_j > a_i\) 就算满足条件。 进一步思考,为了使操作数最小,对于每一个 \(1(1 \leq i \leq k)\),都找一个在 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(17)
评论(0)
推荐(0)
摘要:
思路 因为题目与二进制有关,考虑往二进制的方向思考。定义 \(dp_{i,j}\) 表示在所有的 \(n\) 个数中,当前在决策对于每一个数在二进制表示下的第 \(i\) 位是 \(0\) 还是 \(1\),且和为 \(j\) 的方案数。 因为异或需要满足对于所有 \(a_i\) 表示为二进制后每一 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(24)
评论(0)
推荐(0)
摘要:
思路 我们容易可以得到一个朴素的做法,首先对 \(a\) 数组排序,然后枚举最大值和最小值 \(a_i,a_j\),那么对于中间的元素都有选与不选两种情况,得到答案: \[ \sum_{i = 1}^{n}(a_i \times a_i + (\sum_{j = i + 1}^{n}a_i \tim 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(26)
评论(0)
推荐(0)
摘要:
题意 给定一个字符串 \(S\),你可以选择一个 \(i(1 \leq i \leq |S|)\),如果 \(s_i = s_{i + 1} \neq s_{i + 2}\),就将 \(s_{i + 2}\) 设为 \(s_i\)。 问:最多能操作几次。 思路 我们可以用一个后缀和 \(s_{i,j 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(62)
评论(0)
推荐(0)
摘要:
思路 首先,对于每一次操作,我们可以先找到最大值,然后对其操作。 这样,我们可以得到单次操作时间复杂度 \(\Theta(n)\) 的代码,因为 \(n\) 很小,所以这道题时间复杂度的瓶颈在于操作的数量。 那么,我们想到每一次找到最大值时,直接将其减到小于 \(n\)。 但是这样可能有一种问题,就 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(13)
评论(0)
推荐(0)
摘要:
思路 首先不难发现一个规律,当 \(sum\) 为奇数时不可能有解。 定义 \(dp_{i,j,k,0/1}\) 表示 A 在前 \(i\) 个数中选出和为 \(j\) 的 \(k\) 个数,且第 \(i\) 个 不选/选 的方案数。 那么,我们只需要对于第 \(i\) 个数的状态分类讨论就能得到状 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(17)
评论(0)
推荐(0)
摘要:
思路 有加边操作,一眼 LCT。问题在于处理询问操作。 首先,判断联通。如果 \(x,y\) 不在同一个联通块内,则一定没有答案。 其次,求出 \(x,y\) 之间节点的数量 \(num\)(包括 \(x,y\))。如果 \(num = 3\) 说明 \(x,y\) 之间有一个共同的节点;如果 \( 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(17)
评论(0)
推荐(0)
摘要:
思路 首先假设有两个串 \(a,b\),如果 \(b\) 是 \(a\) 的子串,且 \(a \neq b\) 则不需要考虑 \(b\);如果 \(a = b\),则如需要保留一个 \(a\)。 做完上述操作后,显然最终的答案是由这些串按照一定顺序拼接起来,再删掉重叠部分。 例如:abbcc 与 c 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(19)
评论(0)
推荐(0)
摘要:
思路 发现自己与庄家的操作是完全独立的,所以考虑分别计算它们。 首先考虑自己的情况,定义 \(dp_i\) 表示掷出骰子的和为 \(i\) 获胜的概率,并记 \(f(i)\) 表示 \(x = i\) 时就不掷的获胜概率。 对于每一步我们要么掷骰子(并且掷出的值等概率的在 \(1 \sim D\) 阅读全文
posted @ 2024-06-23 12:59
WBIKPS
阅读(31)
评论(0)
推荐(0)
摘要:
思路 带权并查集模板。 如果对于一个三元组 \((a,b,c)\) 如果它能够添加到 \(S\) 中一定满足如下条件中的一条: \(X_a,X_b\) 满足其中有一个是「不确定」的。在这里 \(X_i\)「不确定」指 \(X_i\) 没有与其它的任意 \(X_j\) 有关系 。 \(X_a,X_b\ 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(20)
评论(0)
推荐(0)
摘要:
思路 看到消除区间,并且 \(|S| \leq 300\) 果断选择区间 DP。 定义 \(dp_{i,j}\) 表示操作 \(i \sim j\) 区间能剩下最少数量。 首先枚举 \(i,j\),然后枚举一个分解点 \(k\),那么显然有 \(dp_{i,j} = \min_{i \leq k < 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(29)
评论(0)
推荐(0)
摘要:
思路 定义 \(dp_{i,j,k} = 0/1\) 表示用 \(i\) 个 1 号传感器,\(j\) 个 2 号传感器 不能/能 监控到前 \(i\) 段。 显然有: \[ dp_{i,j,k} = \max_{0 \leq p \leq j \wedge 0 \leq q \leq k \wed 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(18)
评论(0)
推荐(0)
摘要:
思路 首先我们发现,刚开始人需要走到箱子周围的四个位置。其次我们发现人需要站的位置最多有两个。 例如,\(c\) 在 \(b\) 左方,人就需要在箱子右方。 然后我们就可以算出 \(a\) 点走到这两个点的距离,需要注意的是,这两点所产生的贡献不一定是两点间的曼哈顿距离,因为如果 \(b\) 挡在了 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(28)
评论(0)
推荐(0)
摘要:
思路 可撤销背包板子。 首先问题是用当前所拥有的数的集合凑出 \(x\) 的方案数。 这个问题明显可以背包解决,即 \(dp_j \leftarrow dp_j + dp_{j - a_i}\)。 但是,此问题中物品有可能会被删除,即变为了一个动态的问题,如果直接暴力计算时间复杂度为 \(\Thet 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(34)
评论(0)
推荐(0)
摘要:
思路 首先先考虑弱化版怎么做,即如何求本质不同子序列数量。 不妨定义 \(dp_{i}\) 在前 \(i\) 位中选,且以 \(i\) 结尾的本质不同子序列数量。 显然,有(其中 \(nxt_{i,c}\) 表示在 \(i\) 之后,第一次出现 \(c\) 的位置): \[ dp_{i} \righ 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(19)
评论(0)
推荐(0)
摘要:
模拟赛怒码 7KB 错解,赛后 10min AC。 思路 首先观察 \(l,r\) 不同的关系对于结果的构成有什么影响,记 \(gf = LCA(l,r)\)。 \(l = r\)。很显然,答案就是以 \(l\) 为根的节点的深度和。 \(gf \neq l \wedge gf \neq r\)。在 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(15)
评论(0)
推荐(0)
摘要:
思路 定义 \(dp_i\) 表示前 \(i\) 位所能得到的答案。 那么,不难得出状态转移方程,其中 \(X_{i,j}\) 表示 \(X_{i,j}\) 转为的数字: \[ dp_i = \sum_{j = 1}^{i - 1}(dp_j \times X_{j + 1 \sim i}) + X 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(30)
评论(0)
推荐(0)
摘要:
思路 定义 \(dp_{i,j}\) 表示在标号前 \(i\) 个商品中,将所有 \(x_k \leq i\) 的商品购买,且一共买了 \(j\) 件商品的花费最小值。 那么,对于 \(i\) 号商品就会有 选/不选,两种状态: 如果选,那么有 \(dp_{i,j} = \min(dp_{i - 1 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(15)
评论(0)
推荐(0)
摘要:
思路 首先你可以发现,如果一个区间 \([l,r]\) 是一个好的序列,那么一定 \(i\) 能从 \(l\) 开始 一直到 \(r - k + 1\),将 \(a_{i \sim (i + k - 1)}\) 减掉 \(a_i\)。 那么,当 \(l = 1\) 时,对于每一个 \(i\),我们可 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(37)
评论(0)
推荐(0)
摘要:
思路 定义 \(dp_{i,j,0/1}\) 表示在以 \(i\) 为根的子树中(包括 \(i\))选出 \(j\) 个连通块,且 \(i\) 不选/选 的方案数。 假设我们在 DFS 过程中,当前枚举到以 \(u\) 为根节点的情况,那么显然有 \(dp_{u,0,0} = dp_{u,1,1} 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(21)
评论(0)
推荐(0)
摘要:
思路 定义 \(dp_{i,j}\) 表示前若干层一共有 \(i\) 个点,且在这些层中最外层的点数为 \(j\) 的方案数。 那么,我们先求出最外层的方案数,在 \(n - (i - j) - 1\)(即减去前若干层中除最外层点的数量再减去 \(n\) 号点)中选出 \(j\) 个作为最外层的点。 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(20)
评论(0)
推荐(0)
摘要:
思路 对于操作 1,我们可以看做将 \(x\) 号集合与 \(y\) 号集合合并,并将原本的 \(y\) 号集合重新开一个并查集维护。 对于操作 2,我们可以开一个数组维护每一个球所在哪一个并查集中。 对于操作 3,在操作 1 中维护每一个并查集对于了哪一个箱子即可。 因为 \(n + q \leq 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(29)
评论(0)
推荐(0)
摘要:
思路 因为此题撒网的时间和位置都是未知的,所以必须枚举出一个。 又因为时间有可能是一个小数,不好枚举,因此考虑枚举位置。 首先,有一个显然的贪心策略,每一次撒网的位置的左端点一定是一条鱼。 那么,我们不妨枚举撒网位置的左端点为第 \(i\) 条鱼。 然后可以算出其余的鱼能被一起捕到的时间段。 那么, 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(22)
评论(0)
推荐(0)
摘要:
思路 实际上对于一个字符串 \(S\) 进行一个 \(f(S,x)\) 的操作本质上就是在 \(S + S\) 中截取一段长度为 \(n\) 的子串。 于是你不难想到把 \(A,B\) 拼起来,形成一个字符串 \(S = A + A + B + B\),然后比较后缀。你发现这是对的,因为两个串的字典 阅读全文
posted @ 2024-06-23 00:26
WBIKPS
阅读(28)
评论(0)
推荐(0)

浙公网安备 33010602011771号