摘要:
思路 首先我们需要看到题目一个特殊的地方:这个序列中只存在 \(0\) 和 \(1\)。 那么,我们不难发现最终的答案一定是形如下面的序列:\(0,\dots,0,1,\dots,1\)。 知道了这些,就很好想了。我们从后往前枚举,如果当前一位为 \(0\) 了,就从 \(last \sim i\) 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(19)
评论(0)
推荐(0)
摘要:
思路 做这道题之前,首先要知道一个性质:\(a \operatorname{or} b \geq a\)。那么,我们就能得出一个结论:经过一定顺序的排列,最多经过 \(\lceil \log_2^{a_{\max}} \rceil\) 个数就能让前缀或的值达到最大值。 我们不妨令有一个位置 \(i\ 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(46)
评论(0)
推荐(0)
摘要:
2022/11/23:修改了一下代码。 题意 有 \(T\) 组数据,每次给出一个 \(n,q\),表示台阶的数量和询问的次数。 然后再给出一个 \(a_i\) 为台阶高度的差分数组。 每次询问给出一个 \(k\),表示每次能走 \(k\) 个单位的高度。 问:最高能到达的高度。 思路 考虑暴力,我 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(21)
评论(0)
推荐(0)
摘要:
思路 我们可以观察样例,不难发现:对于任意一段长度为 \(2^k\) 的区间中,如果最大值减最小值加 \(1\) 等于此区间的长度,那么一定有解。 因为,我们的目标是使整个序列升序排列。因此,我们在一个区间内的最大值减最小值加 \(1\) 与区间长度是相等的。 所以,我们可以用上述结论为判断无解的标 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(30)
评论(0)
推荐(0)
摘要:
思路 简单构造题,我们可以分为三种情况进行构造。 \(n = 3\) 时,一定无解,输出 -1。(你可以试试) \(n \bmod 2 = 1 \wedge n \neq 3\) 时,我们直接先输出 \(n,n - 1\),然后顺序输出即可。 证明:令 \(a\) 为最后构造出的序列。那么,\(a_ 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(29)
评论(0)
推荐(0)
摘要:
思路 首先证明一下当序列扩大时答案一定不劣。考虑 \(f(l,r)\) 到 \(f(l,r + 1)\) 的变化。 \[\begin{aligned} f(l,r) - f(l,r + 1) &= s_{l,r} - xs_{l,r} - s_{l,r + 1} + xs_{l,r + 1}\\ & 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(17)
评论(0)
推荐(0)
摘要:
思路 首先转化原式为: \[(a_i + a_j) \times (a_i + a_j + 1) \equiv z \pmod 3 \]考虑对 \(a_i \bmod 3,a_j \bmod 3\) 进行分讨: \(a_i/a_j\) \(0\) \(1\) \(2\) \(0\) \(0\) \( 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(17)
评论(0)
推荐(0)
摘要:
思路 经典贪心,二进制拆分后,从高位往低位枚举。 如果答案的第 \(i\) 位为 \(1\),说明 \(\forall p \in [1,n]\),\(c_p\) 的第 \(i\) 位都是 \(1\)。进而由异或的性质得到,\(\forall p \in [1,n]\),\(a_p\) 的第 \(i 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(21)
评论(0)
推荐(0)
摘要:
思路 首先可以将题目的操作转化为: 将一个数 \(a_i\) 异或一个常数 \(k\)。 将连续两个数 \(a_i,a_{i + 1}\) 同时异或一个常数 \(k\)。 那么,你发现最坏情况下,操作次数是 \(n\)。那么考虑如何将多余步骤给减去。 发现,如果一个区间 \([l,r]\),\(\o 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(24)
评论(0)
推荐(0)
摘要:
思路 Part 1 这种题目应该能一眼看出是 DP。 我们令 \(dp_{i,j}\) 表示走到 \(j\) 这个位置,最后一步花了 \(i\) 的倍数。 那么,我们的方程就很好想了:\(dp_{i,j} = \sum_{k = 1}^{j - k \times i \geq 0}dp_{i - 1 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(33)
评论(0)
推荐(0)
摘要:
思路 由于题目中说这是一棵无根树,不太方便思考,于是,我们可以假装把这棵树看做有根树。 首先我们令 \(d_1,d_2,d_3\) 分别表示从根节点到节点 \(1,2,3\) 的长度(不算相交部分)。 那么我们可以得到下式: \[ \left\{\begin{matrix} d_{12} = d_1 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(33)
评论(0)
推荐(0)
摘要:
思路 这是一道极好的思维题,主要考察了:组合数学和正难则反的方法。 这题可以发现如果用直接法将十分的繁琐,于是乎,我们可以用正难则反的方法,即:总的减去不满足的。 这道题总的很好求,为:\(C_{r - l + 1}^{3}\)。 不满足的情况,我们就可以将题目转化为:\(\operatorname 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(36)
评论(0)
推荐(0)
摘要:
思路 因为我们枚举的直径是具备单调性的,所以可以使用二分答案。 我们可以想一个事情,如果有两个点 \(u\) 和 \(v\),它们两点之间的最短路径要么是直接从 \(u \to v\);要么是经过一个中转点 \(t\),即:\(u \to t \to v\)。 然后,我们可以发现一个显然的规律,就是 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(21)
评论(0)
推荐(0)
摘要:
题意 给定 \(n\) 个长度为 \(m\) 的数组,对于每一个数组选择下面任意一种操作进行若干次(操作二只能被一个数组选出)。 \(c_{t,i} - 1,c_{t,i - 1} + 1,c_{t,j} - 1,c_{t,j - 1} + 1\)。 \(c_{t,i} - 1,c_{t,i - 1 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(17)
评论(0)
推荐(0)
摘要:
思路 发现 \(2^k\) 大的数,最终的答案一定由前 \(k + 1\) 小的元素组成。 考虑数学归纳法,显然当 \(k = 1\) 成立。假令 \(k'\) 时成立,证明 \(k = k' + 1\) 时成立即可: 若第 \(k\) 位有两个及以上的 \(0\),显然最终答案的第 \(k\) 位 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(23)
评论(0)
推荐(0)
摘要:
思路 因为此题目中对于数的更新只能为 \(1\),所以,如果我们找到了 \([1,l - 1]\) 与 \([r + 1,n]\) 中能获得的两个极值即可。 我们为 \(S\) 赋予权值,用一个数组 \(a\) 储存: 如果 \(S_i\) 为 +,则其权值为 \(1\)。 否则其权值为 \(-1\ 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(17)
评论(0)
推荐(0)
摘要:
思路 本题为 P3146 变式,也算是一道很经典的区间 DP 题了。 因为 \(n \leq 500\),考虑区间 DP。定义 \(dp_{i,j}\) 表示操作 \([i,j]\) 区间剩余长度的最小值。 那么,我们可以枚举一个中间值 \(k\),可以显然地得到一个状态转移方程(即不能合二为一的情 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(39)
评论(0)
推荐(0)
摘要:
CCF 出的原题观摩一下。 思路 首先可以用一个 Trie 来维护。 在这里对本文中的一些变量做一下说明。 \(p\) 表示当前维护的 Trie 中,指向的元素编号。 \(t_i\) 表示在 Trie 中编号为 \(i\) 的元素在原序列中的值。 \(f_i\) 表示在 Trie 中编号为 \(i\ 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(16)
评论(0)
推荐(0)
摘要:
思路 这是一道简单的 DP 题,DP 题的核心就是状态转移。 先来说一说 \(dp\) 数组的含义。 \(dp_{i,j}\) 表示从 \(i\) 这个点用 \(2 ^ j\) 条线段能走到的最远的点。 我们再来考虑一下边界情况。 因为我们只用 \(2 ^ 0\) 条线段,那么:\(dp_{i,0} 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(38)
评论(0)
推荐(0)
摘要:
思路 发现,如果相邻元素的奇偶性相同,那么一定能通过在较低的位置竖着放若干个如果在 \(i\) 的位置竖着放一块砖头,使得这两列的高度相同。 那么,我们想到直接考虑 \(h_i\) 的奇偶性,即将 \(h_i \leftarrow h_i \bmod 2\)。 如果 \(h_i = h_{i + 1 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(23)
评论(0)
推荐(0)
摘要:
思路 考虑用线段树维护区间信息: 价格在 \([l,r]\) 之间的 CPU 的数量。 购买所有价格在 \([l,r]\) 之间 CPU 所需的钱。 容易将区间修改转化为差分,从而实现单点修改。于是可以使用 \(n\) 个 vector 存储第 \(i\) 天所需进行的修改。 查询第 \(i\) 天 阅读全文
posted @ 2024-06-24 12:22
WBIKPS
阅读(24)
评论(0)
推荐(0)

浙公网安备 33010602011771号