上一页 1 ··· 9 10 11 12 13 14 15 下一页
摘要: 思路 一道很经典的题,运用了一种叫「时光倒流」的技巧。 「时光倒流」本质上就是将所有删边(或删点)的操作,通过倒序循环求值的方式转化为加边(或加点)。 「时光倒流」具体实现通常伴随着并查集出现,维护一个连通块的某种性质。 首先,我们需要将所有从始至终没有删过的边加入并查集。在这里,我们的并查集不仅仅 阅读全文
posted @ 2024-06-22 11:14 WBIKPS 阅读(15) 评论(0) 推荐(0)
摘要: 先为大家毙掉一个错解 思路 首先不难发现,如果将整棵比赛的对战图画出来,一定是一个满二叉树。 不妨将令一个节点 \(u\) 的左右儿子编号分别为 \(2u\) 和 \(2u + 1\)。 然后定义 \(dp_{u,d}\) 表示将 \(u\) 为根的子树内的选手全部比赛完,并且 \(u\) 已经赢了 阅读全文
posted @ 2024-06-22 11:02 WBIKPS 阅读(31) 评论(0) 推荐(0)
摘要: 思路 首先,不难发现最终的序列一定是形如下面的序列: \[ l,\dots,l,a_i,a_{i + 1},\dots,a_{i + j},r,\dots r \]那么,我们就可以将其分为三段,每段都单独维护。 首先,对于第一段,我们可以枚举出最后一个 \(l\) 的位置 \(x\),那么和为 \( 阅读全文
posted @ 2024-06-22 11:01 WBIKPS 阅读(26) 评论(0) 推荐(0)
摘要: 思路 首先可以看一下 P4145,在 P4145 中使用了一种叫势能线段树的 Trick。 对于势能线段树,我个人的理解是,对于一段区间(或一个点)直接暴力维护,在经过很少的次数后操作将没有意义的题就可以使用势能线段树。 在本题中,如果没有推平操作,显然我们可以直接使用势能线段树,时间复杂度可以轻松 阅读全文
posted @ 2024-06-22 11:00 WBIKPS 阅读(17) 评论(0) 推荐(0)
摘要: 思路 容易看出来是个 DP 题,但是你发现 DP 的起点是不好确定的,于是假定第一条边的起点是黑色。然后你发现设为白色的贡献与黑色是相同的,于是直接令第一条边的起点是黑色,最后答案乘以 \(2\) 即可。 然后就可以愉快的 DP 了。 首先枚举每条边白色点的数量 \(k\),定义 \(dp_{i,0 阅读全文
posted @ 2024-06-22 10:58 WBIKPS 阅读(51) 评论(0) 推荐(0)
摘要: 思路 因为 \(1 \leq n,q \leq 2 \times 10^5\),所以对于每一次查询的时间复杂度一定要达到 \(\Theta(\log n)\),甚至于 \(\Theta(1)\)。 一个最简单的想法,我们先统计出整个序列 \(a\) 的和 \(sum\),然后答案是 \(|sum - 阅读全文
posted @ 2024-06-22 10:58 WBIKPS 阅读(62) 评论(0) 推荐(0)
摘要: 思路 令 \(f_i\) 表示 \(i\) 最大的完全平方数因子。 那么,现在如果有两个数 \(i,j\),要使 \(i \times j\) 为完全平方数,一定要使 \(\frac{i}{f_i} = \frac{j}{f_j}\)。 换句话说,\(i \times j\) 为完全平方数,当且仅当 阅读全文
posted @ 2024-06-22 10:58 WBIKPS 阅读(18) 评论(0) 推荐(0)
摘要: 思路 首先,不难看出一个规律,就是对于一个序列 \(a\),如果它将操作所有以 \(x\) 为第一关键字的二元组,那么序列的 \(a_{x \sim n}\) 将循环右移一位。(注意,在这里的 \(x\) 指的是在 \(1 \sim (n - 1)\) 中的任意一个定值) 那么,我们就可以将编号分别 阅读全文
posted @ 2024-06-22 10:58 WBIKPS 阅读(21) 评论(0) 推荐(0)
摘要: 思路 对于这种题目,通常会想到用哈希维护。 由于集合相同与 \(a_{1 \sim x}\),\(b_{1 \sim y}\) 的顺序无关,所以对于我们的哈希函数 \(h(x)\) 必定需要用一种有交换律的符号。 首先想到的当然是加法,但是不太好实现,因为这些数太大了,不因会爆 unsigned l 阅读全文
posted @ 2024-06-22 10:57 WBIKPS 阅读(26) 评论(0) 推荐(0)
摘要: 思路 对于这道题,我们可以发现一个事情:我们筛质数只需要筛 \(1 \sim \log_3 n\) 的部分就行了。 因为 \(k = p \times q^3\),那么,我们考虑一种极端情况,\(p\) 为一个很小的数,那么 \(k\) 就无限接近于 \(q^3\)。 我们就先假设 \(k = q^ 阅读全文
posted @ 2024-06-22 10:57 WBIKPS 阅读(22) 评论(0) 推荐(0)
摘要: 思路 反悔贪心套路题。 发现一个性质,当一个操作 1 生效意味着在这一步之前的所有操作都没用。 那么考虑倒着枚举,对于每一个操作 1 的选取状态做一个简单的分讨: 如果保留,那么这种情况下的答案就是之前的 \(sum\) 加上当前的 \(y\)。 如果不保留,继续往前走,\(k \leftarrow 阅读全文
posted @ 2024-06-22 10:57 WBIKPS 阅读(25) 评论(0) 推荐(0)
摘要: 思路 定义 \(dp_{i,j}\) 表示在前 \(i\) 位原字符串,压缩为 \(j\) 位的方案数。 不难得出状态转移方程: \[ dp_{i,j} = \sum_{k = 1}^{i}(25 \times dp_{k,j - \lfloor \log_{10}k \rfloor - 1}) \ 阅读全文
posted @ 2024-06-22 10:57 WBIKPS 阅读(34) 评论(0) 推荐(0)
摘要: 思路 首先,我们得清楚如何判断三点共线。 对于每一个点,它的横纵坐标都有这么一个关系:\(n \times x + m = y\)(其中 \(n,m\) 为常数)。 那么,对于三点共线的点来说,\(n,m\) 是相同的。因此我们得出三个式子。 \[ n \times x_a + m = y_a \] 阅读全文
posted @ 2024-06-22 10:56 WBIKPS 阅读(24) 评论(0) 推荐(0)
摘要: 思路 其实很简单,我们可以将所有数值相同的值的下标存入一个 vector 里面。因为,我们既然要查找 \(X\),不妨把所有值为 \(X\) 的下标存在一起,方便查找。(可以在输入的时候完成) 我们不妨在每一个数值后面添加一个哨兵,然后二分查找第一个大于等于 \(l\) 的数和第一个大于等于 \(r 阅读全文
posted @ 2024-06-22 10:56 WBIKPS 阅读(37) 评论(0) 推荐(0)
摘要: 思路 对于包含数 \(x\) 的卡牌,两张之中必定要选择一张,由此想到 2-SAT 的思想。 我们将所有带有 \(x\) 的卡牌两两连边,每一条边连接的点都表示两点必须选择一个。 不难发现,我们这样会得出若干个环。(因为对于每一张卡牌的出边为 \(2\),一定会形成环) 在每一个环中的选择情况,不会 阅读全文
posted @ 2024-06-22 10:56 WBIKPS 阅读(21) 评论(0) 推荐(0)
上一页 1 ··· 9 10 11 12 13 14 15 下一页