上一页 1 ··· 8 9 10 11 12 13 14 15 16 下一页
摘要: 思路 不难发现:对于每一个 \(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 阅读(28) 评论(0) 推荐(0)
摘要: 思路 因为题目与二进制有关,考虑往二进制的方向思考。定义 \(dp_{i,j}\) 表示在所有的 \(n\) 个数中,当前在决策对于每一个数在二进制表示下的第 \(i\) 位是 \(0\) 还是 \(1\),且和为 \(j\) 的方案数。 因为异或需要满足对于所有 \(a_i\) 表示为二进制后每一 阅读全文
posted @ 2024-06-23 12:59 WBIKPS 阅读(32) 评论(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 阅读(36) 评论(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 阅读(71) 评论(0) 推荐(0)
摘要: 思路 首先,对于每一次操作,我们可以先找到最大值,然后对其操作。 这样,我们可以得到单次操作时间复杂度 \(\Theta(n)\) 的代码,因为 \(n\) 很小,所以这道题时间复杂度的瓶颈在于操作的数量。 那么,我们想到每一次找到最大值时,直接将其减到小于 \(n\)。 但是这样可能有一种问题,就 阅读全文
posted @ 2024-06-23 12:59 WBIKPS 阅读(23) 评论(0) 推荐(0)
摘要: 思路 首先不难发现一个规律,当 \(sum\) 为奇数时不可能有解。 定义 \(dp_{i,j,k,0/1}\) 表示 A 在前 \(i\) 个数中选出和为 \(j\) 的 \(k\) 个数,且第 \(i\) 个 不选/选 的方案数。 那么,我们只需要对于第 \(i\) 个数的状态分类讨论就能得到状 阅读全文
posted @ 2024-06-23 12:59 WBIKPS 阅读(26) 评论(0) 推荐(0)
摘要: 思路 有加边操作,一眼 LCT。问题在于处理询问操作。 首先,判断联通。如果 \(x,y\) 不在同一个联通块内,则一定没有答案。 其次,求出 \(x,y\) 之间节点的数量 \(num\)(包括 \(x,y\))。如果 \(num = 3\) 说明 \(x,y\) 之间有一个共同的节点;如果 \( 阅读全文
posted @ 2024-06-23 12:59 WBIKPS 阅读(27) 评论(0) 推荐(0)
摘要: 思路 首先假设有两个串 \(a,b\),如果 \(b\) 是 \(a\) 的子串,且 \(a \neq b\) 则不需要考虑 \(b\);如果 \(a = b\),则如需要保留一个 \(a\)。 做完上述操作后,显然最终的答案是由这些串按照一定顺序拼接起来,再删掉重叠部分。 例如:abbcc 与 c 阅读全文
posted @ 2024-06-23 12:59 WBIKPS 阅读(27) 评论(0) 推荐(0)
摘要: 思路 发现自己与庄家的操作是完全独立的,所以考虑分别计算它们。 首先考虑自己的情况,定义 \(dp_i\) 表示掷出骰子的和为 \(i\) 获胜的概率,并记 \(f(i)\) 表示 \(x = i\) 时就不掷的获胜概率。 对于每一步我们要么掷骰子(并且掷出的值等概率的在 \(1 \sim D\) 阅读全文
posted @ 2024-06-23 12:59 WBIKPS 阅读(42) 评论(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 阅读(28) 评论(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 阅读(38) 评论(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 阅读(42) 评论(0) 推荐(0)
摘要: 思路 首先我们发现,刚开始人需要走到箱子周围的四个位置。其次我们发现人需要站的位置最多有两个。 例如,\(c\) 在 \(b\) 左方,人就需要在箱子右方。 然后我们就可以算出 \(a\) 点走到这两个点的距离,需要注意的是,这两点所产生的贡献不一定是两点间的曼哈顿距离,因为如果 \(b\) 挡在了 阅读全文
posted @ 2024-06-23 00:26 WBIKPS 阅读(33) 评论(0) 推荐(0)
摘要: 思路 可撤销背包板子。 首先问题是用当前所拥有的数的集合凑出 \(x\) 的方案数。 这个问题明显可以背包解决,即 \(dp_j \leftarrow dp_j + dp_{j - a_i}\)。 但是,此问题中物品有可能会被删除,即变为了一个动态的问题,如果直接暴力计算时间复杂度为 \(\Thet 阅读全文
posted @ 2024-06-23 00:26 WBIKPS 阅读(41) 评论(0) 推荐(0)
摘要: 思路 首先先考虑弱化版怎么做,即如何求本质不同子序列数量。 不妨定义 \(dp_{i}\) 在前 \(i\) 位中选,且以 \(i\) 结尾的本质不同子序列数量。 显然,有(其中 \(nxt_{i,c}\) 表示在 \(i\) 之后,第一次出现 \(c\) 的位置): \[ dp_{i} \righ 阅读全文
posted @ 2024-06-23 00:26 WBIKPS 阅读(29) 评论(0) 推荐(0)
上一页 1 ··· 8 9 10 11 12 13 14 15 16 下一页