摘要:
01串 题意 给定一个整数 \(k\) 。 现在,我们可以对01字符串进行如下操作: 选择其中恰好 \(k\) 个连续的 \(1\) ,将它们全变成 \(0\) 。 如果一个 \(01\) 字符串可以通过若干次操作得到全 \(0\) 字符串,则称这个字符串为优秀的。 有 \(T\) 次询问,每次询问 阅读全文
摘要:
New Year Garland 题意 用 \(m\) 种颜色去装点 \(n\) 层的圣诞树。圣诞树的第 \(i\) 层恰好由 \(li_i\) 个彩灯串成一行,且同一层内的相邻彩灯颜色不同,同时相邻两层所使用的彩灯的颜色集合不同。问有多少种装点方案,答案对 \(p\) 取模。 分析 计数DP,用 阅读全文
摘要:
Count the Arrays 题意 要求计算出满足如下条件的数组的数量: 数组长度为$n$,且这 \(n\) 个元素的取值均为 \([1, m]\) 。 数组中恰好有一对元素是相同的。 存在一个索引 \(i\) ,满足 \([1, i]\) 严格上升, \([i, n]\) 严格下降。 分析 首 阅读全文
摘要:
Bus Number 题意 给定数字 \(n\) ,求有多少个数字 \(x\) 满足: \(n\) 的所有元素都在 \(x\) 中出现过。 \(x\) 的所有元素都在 \(n\) 中出现过。 \(x\) 不含前导零。 举例:\(n\) 为2028,那么 \(x\) 可以为 \(208,820, 28 阅读全文
摘要:
The Intriguing Obsession 题意 有 \(3\) 个群岛,这三个群岛分别有 \(a、b、c\) 个岛屿。 现在要在这些岛之间连桥,要求每个群岛中的任意两个岛屿。要么不能联通,要么最短路为 \(3\) 。求允许建桥的所有方案数量。 分析 先对两个群岛进行分析,因为在一个群岛中,任 阅读全文
摘要:
取石子 题意 有 \(n\) 堆石子,每堆有 \(a_1, a_2, a_3...a_n\) 个石子,进行若干轮,使得每堆石子的数量相同。 每一轮:选择一个限定值 \(h\) ,将所有石子数量大于 \(h\) 的堆去除直到剩下 \(h\) 个石子。注意每一轮去除的石子数量不能超过 \(k\) 。 给 阅读全文
摘要:
Potions (Hard Version) 题意 有 \(n\) 个药品,从左到右摆放,每到达一个药瓶处,你可以选择喝下或不喝药,并增加 \(a_i\) 血量(注意 \(a_i\) 可能为负数)。 你的血量初始值为 \(0\) ,从最左边开始走到最右边,你需要保证每时每刻血量都不为负数,请问最多可 阅读全文
摘要:
Nezzar and Board 题意 有长度为 \(n\) 的序列 \(a\) ,每次可以选择任意两个数字 \(x, y\) (可以相同),把 \(2 \times x - y\) 写入序列 \(a\) 中(\(x, y\) 不会消失),问进行若干次操作后,能否得出给定数字 \(K\) ? \(1 阅读全文
摘要:
GCD和LCM的另一种求法 阅读全文
摘要:
区间筛 阅读全文
摘要:
Mike and Foam 题意 有长度为 \(n\) 的序列 \(a\) ,最开始里面的元素都未激活。 有 \(q\) 次询问,每次将一个元素从激活变成未激活,或者从未激活变成激活。 每次询问后,输出激活的数字中互质的序偶数量。 分析 直接对激活序列求互质序偶数量比较复杂,可以使用容斥原理。 序列 阅读全文
摘要:
Array Differentiation 题意 给定长度为 \(n\) 的序列 \(a\) ,问是否存在一个长度为 \(n\) 的序列,满足: 对于任意 \(1 \le i \le n\),存在 \(1 \le j, k \le n\) ,满足 \(a_i = b_j - b_k\) 。 其中 \ 阅读全文
摘要:
并查集拓展域 并查集是用来维护元素之间的制约关系,并且在更新时可以传递关系的一种数据结构,但有时候只靠是否在集合内不足以表示复杂的关系,因此引入了拓展域的关系. 例题 食物链 1. 带权并查集 #include <iostream> #include <numeric> #include <func 阅读全文
摘要:
最近公共祖先 (LCA) 在一个有根树中,两个结点 $a、b$ 都有若干个祖先(本身也是自己的祖先),他们也会有公共的祖先,距离他们最近,也就是在有根树中深度最大的祖先,被称做 \(a、b\) 的最近公共祖先。 求最近公共祖先 向上标记法 先从一个点开始向上走到根节点,再由另一个结点开始向上走,走 阅读全文
摘要:
质数筛选 质数筛选指在一个范围内筛去非质数,留下质数,通常用单独的质数数组保存留下的质数。 埃氏筛 对于每个数字(从2开始),筛去它所有的倍数,那么留下来的一定都是质数。 证:对于任意和数 \(x\) ,一定存在一个质因数 \(pj\) ,那么我们一定可以用 \(pj\) 筛去 \(x\) 。 时间 阅读全文
摘要:
快速乘 在某些乘数特别大的情况,比如题目给定的模数大于 \(10^9\) ,在之后的乘法计算中可能会爆 \(long \ long\) ,可以使用 \(O(1)\) 快速乘在不爆 \(long \ long\) 的情况下算出取模后的值。 typedef long long ll; inline ll 阅读全文
摘要:
乘法逆元 乘法逆元可以求出 \(\displaystyle {\frac {a}{b}}\) 在取模 \(P\) 的意义下的数值。 逆元 若 \(a * x \equiv 1 \pmod q\) ,且 \(a\) 与 \(b\) 互质,那么我们定义: \(x\) 为 \(a\) 的逆元,记作 \(a 阅读全文
摘要:
扩展中国剩余定理 中国剩余定理 对于同余方程组: \[ \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 阅读全文
摘要:
康托展开(cantor expansion) 康托展开可以求出一个排列在全排列中的排名(\(0 \sim n!-1\))。 对于排列中的某一个元素 \(A_i\) ,假设它后面有 \(k\) 个元素小于 \(A_i\) ,那么我们可以将任意一个元素放到 \(A_i\) 的位置,然后剩下的元素随意摆放 阅读全文
摘要:
拓展欧几里得 在拓展欧几里得定理之前,先介绍以下贝祖定理: 如果方程式 \(ax + by = m\) 成立,那么 \(gcd(a, b) | m\) 显然,我们可以把原方程式写作:\(m = k1 *g * x + k2 * g * y = g(k1 * x + k2 * y)\) 根据贝祖定理, 阅读全文