摘要: 01串 题意 给定一个整数 \(k\) 。 现在,我们可以对01字符串进行如下操作: 选择其中恰好 \(k\) 个连续的 \(1\) ,将它们全变成 \(0\) 。 如果一个 \(01\) 字符串可以通过若干次操作得到全 \(0\) 字符串,则称这个字符串为优秀的。 有 \(T\) 次询问,每次询问 阅读全文
posted @ 2021-11-20 23:07 Rainea 阅读(86) 评论(1) 推荐(0)
摘要: New Year Garland 题意 用 \(m\) 种颜色去装点 \(n\) 层的圣诞树。圣诞树的第 \(i\) 层恰好由 \(li_i\) 个彩灯串成一行,且同一层内的相邻彩灯颜色不同,同时相邻两层所使用的彩灯的颜色集合不同。问有多少种装点方案,答案对 \(p\) 取模。 分析 计数DP,用 阅读全文
posted @ 2021-11-20 15:45 Rainea 阅读(60) 评论(0) 推荐(0)
摘要: Count the Arrays 题意 要求计算出满足如下条件的数组的数量: 数组长度为$n$,且这 \(n\) 个元素的取值均为 \([1, m]\) 。 数组中恰好有一对元素是相同的。 存在一个索引 \(i\) ,满足 \([1, i]\) 严格上升, \([i, n]\) 严格下降。 分析 首 阅读全文
posted @ 2021-11-20 15:43 Rainea 阅读(51) 评论(0) 推荐(0)
摘要: Bus Number 题意 给定数字 \(n\) ,求有多少个数字 \(x\) 满足: \(n\) 的所有元素都在 \(x\) 中出现过。 \(x\) 的所有元素都在 \(n\) 中出现过。 \(x\) 不含前导零。 举例:\(n\) 为2028,那么 \(x\) 可以为 \(208,820, 28 阅读全文
posted @ 2021-11-20 15:41 Rainea 阅读(76) 评论(0) 推荐(0)
摘要: The Intriguing Obsession 题意 有 \(3\) 个群岛,这三个群岛分别有 \(a、b、c\) 个岛屿。 现在要在这些岛之间连桥,要求每个群岛中的任意两个岛屿。要么不能联通,要么最短路为 \(3\) 。求允许建桥的所有方案数量。 分析 先对两个群岛进行分析,因为在一个群岛中,任 阅读全文
posted @ 2021-11-20 15:38 Rainea 阅读(35) 评论(0) 推荐(0)
摘要: 取石子 题意 有 \(n\) 堆石子,每堆有 \(a_1, a_2, a_3...a_n\) 个石子,进行若干轮,使得每堆石子的数量相同。 每一轮:选择一个限定值 \(h\) ,将所有石子数量大于 \(h\) 的堆去除直到剩下 \(h\) 个石子。注意每一轮去除的石子数量不能超过 \(k\) 。 给 阅读全文
posted @ 2021-11-20 15:36 Rainea 阅读(86) 评论(0) 推荐(0)
摘要: Potions (Hard Version) 题意 有 \(n\) 个药品,从左到右摆放,每到达一个药瓶处,你可以选择喝下或不喝药,并增加 \(a_i\) 血量(注意 \(a_i\) 可能为负数)。 你的血量初始值为 \(0\) ,从最左边开始走到最右边,你需要保证每时每刻血量都不为负数,请问最多可 阅读全文
posted @ 2021-11-20 15:34 Rainea 阅读(70) 评论(0) 推荐(0)
摘要: Nezzar and Board 题意 有长度为 \(n\) 的序列 \(a\) ,每次可以选择任意两个数字 \(x, y\) (可以相同),把 \(2 \times x - y\) 写入序列 \(a\) 中(\(x, y\) 不会消失),问进行若干次操作后,能否得出给定数字 \(K\) ? \(1 阅读全文
posted @ 2021-11-20 15:31 Rainea 阅读(80) 评论(0) 推荐(0)
摘要: GCD和LCM的另一种求法 阅读全文
posted @ 2021-11-20 15:29 Rainea 阅读(61) 评论(0) 推荐(1)
摘要: 区间筛 阅读全文
posted @ 2021-11-20 15:26 Rainea 阅读(35) 评论(0) 推荐(0)
摘要: Mike and Foam 题意 有长度为 \(n\) 的序列 \(a\) ,最开始里面的元素都未激活。 有 \(q\) 次询问,每次将一个元素从激活变成未激活,或者从未激活变成激活。 每次询问后,输出激活的数字中互质的序偶数量。 分析 直接对激活序列求互质序偶数量比较复杂,可以使用容斥原理。 序列 阅读全文
posted @ 2021-11-20 14:34 Rainea 阅读(61) 评论(0) 推荐(0)
摘要: Array Differentiation 题意 给定长度为 \(n\) 的序列 \(a\) ,问是否存在一个长度为 \(n\) 的序列,满足: 对于任意 \(1 \le i \le n\),存在 \(1 \le j, k \le n\) ,满足 \(a_i = b_j - b_k\) 。 其中 \ 阅读全文
posted @ 2021-11-20 14:30 Rainea 阅读(59) 评论(0) 推荐(0)
摘要: 并查集拓展域 并查集是用来维护元素之间的制约关系,并且在更新时可以传递关系的一种数据结构,但有时候只靠是否在集合内不足以表示复杂的关系,因此引入了拓展域的关系. 例题 食物链 1. 带权并查集 #include <iostream> #include <numeric> #include <func 阅读全文
posted @ 2021-11-20 14:27 Rainea 阅读(99) 评论(0) 推荐(0)
摘要: 最近公共祖先 (LCA) 在一个有根树中,两个结点 $a、b$​ 都有若干个祖先(本身也是自己的祖先),他们也会有公共的祖先,距离他们最近,也就是在有根树中深度最大的祖先,被称做 \(a、b\) 的最近公共祖先。 求最近公共祖先 向上标记法 先从一个点开始向上走到根节点,再由另一个结点开始向上走,走 阅读全文
posted @ 2021-11-20 14:21 Rainea 阅读(79) 评论(0) 推荐(0)
摘要: 质数筛选 质数筛选指在一个范围内筛去非质数,留下质数,通常用单独的质数数组保存留下的质数。 埃氏筛 对于每个数字(从2开始),筛去它所有的倍数,那么留下来的一定都是质数。 证:对于任意和数 \(x\) ,一定存在一个质因数 \(pj\) ,那么我们一定可以用 \(pj\) 筛去 \(x\) 。 时间 阅读全文
posted @ 2021-11-20 14:19 Rainea 阅读(67) 评论(0) 推荐(1)
摘要: 快速乘 在某些乘数特别大的情况,比如题目给定的模数大于 \(10^9\) ,在之后的乘法计算中可能会爆 \(long \ long\) ,可以使用 \(O(1)\) 快速乘在不爆 \(long \ long\) 的情况下算出取模后的值。 typedef long long ll; inline ll 阅读全文
posted @ 2021-11-20 14:18 Rainea 阅读(456) 评论(0) 推荐(1)
摘要: 乘法逆元 乘法逆元可以求出 \(\displaystyle {\frac {a}{b}}\) 在取模 \(P\) 的意义下的数值。 逆元 若 \(a * x \equiv 1 \pmod q\) ,且 \(a\) 与 \(b\) 互质,那么我们定义: \(x\) 为 \(a\) 的逆元,记作 \(a 阅读全文
posted @ 2021-11-20 14:10 Rainea 阅读(101) 评论(0) 推荐(1)
摘要: 扩展中国剩余定理 中国剩余定理 对于同余方程组: \[ \begin{cases} x \equiv a_1 \pmod {m_1} \\ x \equiv a_2 \pmod {m_2} \\ x \equiv a_3 \pmod {m_3} \\ ..... \\ x \equiv a_n \p 阅读全文
posted @ 2021-11-20 14:09 Rainea 阅读(98) 评论(0) 推荐(0)
摘要: 康托展开(cantor expansion) 康托展开可以求出一个排列在全排列中的排名(\(0 \sim n!-1\))。 对于排列中的某一个元素 \(A_i\) ,假设它后面有 \(k\) 个元素小于 \(A_i\) ,那么我们可以将任意一个元素放到 \(A_i\) 的位置,然后剩下的元素随意摆放 阅读全文
posted @ 2021-11-20 13:54 Rainea 阅读(61) 评论(0) 推荐(1)
摘要: 拓展欧几里得 在拓展欧几里得定理之前,先介绍以下贝祖定理: 如果方程式 \(ax + by = m\) 成立,那么 \(gcd(a, b) | m\) 显然,我们可以把原方程式写作:\(m = k1 *g * x + k2 * g * y = g(k1 * x + k2 * y)\) 根据贝祖定理, 阅读全文
posted @ 2021-11-20 13:52 Rainea 阅读(74) 评论(0) 推荐(0)
摘要: Xor on Segment 题意 给出 \(n\) 个数字的序列 \(a\) 。进行 \(m\) 次操作,操作有两种: 求 $\displaystyle \sum_{i=l}^{r} a_i$​​ 。 把区间 \([l, r]\) 上的每个数字异或 \(x\) 。 其中 \(1 \le n \le 阅读全文
posted @ 2021-11-20 13:47 Rainea 阅读(53) 评论(0) 推荐(0)
摘要: TorCoder 题意 给出一个长度为 \(n\) 的字符串 \(s\) ,有 \(m\) 次询问,每次给出 \(l_i, r_i\) ,将 \([l_i, r_i]\) 的子串交换顺序使其成为字典序最小的回文子串,如果不能就跳过这次询问,求 \(m\) 次询问后,字符串 \(s\) 的字面值。 分 阅读全文
posted @ 2021-11-20 13:42 Rainea 阅读(102) 评论(0) 推荐(0)
摘要: Happy Matt Friends 题意 给定长度为 \(n\) 的序列 \(a\) ,从中选择任意个数字(可以为 \(0\)) ,要求选出来的所有数字异或和不小于 \(m\) ,问有多少种方案? 分析 计数DP,设 \(f(i, j)\) 表示前 \(i\) 个数字异或和正好为 \(j\) 的方 阅读全文
posted @ 2021-11-20 13:39 Rainea 阅读(39) 评论(0) 推荐(0)
摘要: Dire Wolf 题意 有 \(n\) 个狼排成一列,每个狼有 \(a_i\) 点攻击力,并且会给旁边的狼提供 \(b_i\) 点攻击力。 每当消灭一只狼后,会受到一定的伤害,伤害值为当前这只狼的所有攻击力。 如果 \(a, b, c\) 中 \(b\) 被消灭,则 \(a, c\) 变为相邻。 阅读全文
posted @ 2021-11-20 13:35 Rainea 阅读(43) 评论(0) 推荐(0)
摘要: E. Arena 题意 有 \(n\) 个勇士一个角斗场决斗,初始时每个勇士最多有 \(x\) 滴血量,每一轮活着的勇士都会对其他勇士造成 \(1\) 滴伤害。 如果最后只剩下一个勇士活着,那么称他是获胜者。 问没有获胜者的方案数量。 分析 设 \(f(i, j)\) 表示有 \(i\) 个勇士,且 阅读全文
posted @ 2021-11-20 13:32 Rainea 阅读(48) 评论(0) 推荐(0)
摘要: CF 1582F1. Korney Korneevich and XOR (easy version) 题意 给定长度为 \(n\) 的序列 \(a\) ,我们可以选择任意一个升序的子序列 \(a_{i_1}, a_{i_2}, ..., a_{i_k}\) ,求出他们的 \(xor\) 值。 求出 阅读全文
posted @ 2021-11-20 13:29 Rainea 阅读(53) 评论(0) 推荐(0)
摘要: CF 1582E.Pchelyonok and Segments 题意 给出长度为 \(n\) 的序列 \(a\) ,你可以把 \(a\) 分成任意 \(k\) 组不相交的子数组,要求: 第一个子数组长度为 \(k\) ,第二个为 \(k-1\) ,\(...\) ,第 \(k\) 个长度为 \(1 阅读全文
posted @ 2021-11-20 13:25 Rainea 阅读(46) 评论(0) 推荐(0)
摘要: 涂色 题意 给定一个长度为 \(n\) 的序列 \(a\) ,每次操作可以选择颜色相同的若干相邻元素,修改为任意数字,问最少修改几次使得序列 \(a\) 元素全部相同。 分析 区间DP,设 \(f(i, j)\) 表示将范围 \([i, j]\) 的元素修改成同一元素。 如果 \(a_i, a_j\ 阅读全文
posted @ 2021-11-20 13:16 Rainea 阅读(55) 评论(0) 推荐(0)
摘要: The Sports Festifal 题意 给定长度为 \(n\) 的数组,定义 \(S_i = \max_{j=1}^{i}a[j] - \min_{j=1}^{i}a[j]\),重新排列数组,使得 \(\sum_{i=1}^{n}S_i\) 最小。 分析 因为要构造最小,那么对于区间 [l, 阅读全文
posted @ 2021-11-20 13:13 Rainea 阅读(47) 评论(0) 推荐(0)
摘要: 2400_1592E. Bored Bakry 题意 给定长度为 \(n\) 的序列 \(a\) ,求出使得 \(a_l \& a_{l+1} \& ... \& a_r > a_l \bigoplus a_{l+1} \bigoplus ... \bigoplus a_r\) 成立的最长子数组的长 阅读全文
posted @ 2021-11-20 13:09 Rainea 阅读(43) 评论(0) 推荐(0)