12 2023 档案
摘要:题意 有 个人, 对关系,要求每对关系中,有且仅有一个人给另外一个人送礼物,并且使送出礼物最多的人送的礼物尽可能少。并输出送礼物的方案。 Sol 二分答案,对于每个人向每个限制连 容量,每个限制向汇点连 容量。 Code array <pii, N> i
阅读全文
摘要:题意 给定一个序列,维护下列操作。 区间加 区间查询数中只包含 数的个数。 所有数前后不超过 。 Sol 块块版。 ,发现满足条件的数的个数只有 个。 对于每个块开一个桶,记录每种数有多少个。 查询时暴力枚举 个数,暴力判断即
阅读全文
摘要:题意 给定一个由 组成的网格图。 每个点有一个方向,用 表示。 每次操作可以选择两个相邻的点,使其中一个顺时针旋转另一个逆时针旋转。 称一个匹配为站在两个相邻点所朝的方向上使得左边是 右边是 。 S
阅读全文
摘要:题意 给定 个护符,每个护符有一个权值 ,进行 次操作,每次选择一个护符,并获得护符的权值。 给定 个限制,表示在第 次调整必须调整前 个护符或在第 次调整时调整后 个护符。 求最小权值。 Sol 最小
阅读全文
摘要:题意 给定一棵 个节点的一棵树,初始时 号点为红色,其余为蓝色。 要求支持以下操作: 将一个节点变为红色。 询问节点 到最近红色节点的距离 共 次操作。 Sol 喵喵题。 不难想到点分树做法,不再阐述。 考虑简单的操作分块。 对于块外,可以考虑每做完一
阅读全文
摘要:题意 维护一个序列: 区间查询 区间赋值 区间加法 区间复制 区间交换 区间翻转 数据随机。 Sol 珂朵莉。 前 个操作很 。 考虑区间复制。 先把两个区间 出来。 然后扔进 ,全部 掉。再用 \(vec
阅读全文
摘要:题意 给定一个序列。 每次询问求两个区间排序后是否只有一个或者没有位置不同。 Sol 不难想到主席树维护值域。 考虑如何判断。 注意到当前答案正确,当且仅当值域上两点不同且相邻。 维护每个点的哈希值判断即可。 Code #include <iostream> #include <algorithm>
阅读全文
摘要:题意 给定一个矩阵,你需要支持: 循环左移 循环右移 循环下移 循环上移 按行置换求逆 按列置换求逆 Sol 前 个操作是 的。 如何处理后两个操作? 考虑设一个三元组:。 每次操作,对于每一个元素都能确定操作后另外某个元素。
阅读全文
摘要:题意 给定一个长度为 的序列。 每个数字的范围为 。 求一共 种数列,每个数列种本质不同的子序列个数之和。 Sol 考虑用一种比较好的方式表示答案。 枚举本质不同的子序列长度,枚举中间跳过的数的个数。 \[m ^ n + \sum_{i = 1}
阅读全文
摘要:题意 给定一个数列。每个数字有一个颜色。 单点修改数字,区间修改颜色。 求: 包含所有颜色的数字和最小的区间 没有重复颜色的数字和最大的区间 数据随机。 Sol 数据随机,直接上珂朵莉树。 跑双指针的时候套个线段树求最大最小区间和就行。 Code #include <iostream> #inclu
阅读全文
摘要:题意 给你一张无向图。 你可以添加若干条边,然后给所有边定向。 使得每一个点的出入度为偶数。 Sol 出入度为偶数,显然为欧拉环路的充要条件。 考虑对于所有原图度数为奇数的点两两相连。 如果不满足边数为偶数直接连自环即可。 跑一边欧拉环路,对于相邻两条边反向连就行了。 Code #include <
阅读全文
摘要:题意 给定每列有多少个方块 。 每次炸掉边缘的方块。 问你几次能把所有方块炸完。 Sol *1600 竟然还开了题解,该退役了。 发现每个方块只会有三种情况影响时间。 设每列的最短时间为 。 \(v_{i + 1} +
阅读全文
摘要:题意 给定 个数。 求最长的子段使得子段内有两个众数。 Sol 考虑全局众数对于子段的众数的影响。 注意到对于答案有贡献的子段一定包含全局众数,读者自证不难。 考虑对于每个数出现的次数根号分治。 对于出现次数大于根号的数: 种类不超过根号。 考虑暴力对于每一种数,考虑她成为众数的情况。
阅读全文
摘要:题意 有 个工人, 个工作。 每个人给每个工作有 的花费。 求每个工作的最小平均花费。 Sol 直接连边跑费用流不好搞。 考虑将每种工人在不同时间做的工作暴力建点。 枚举 表示第 个工人在倒数第 个做 工
阅读全文
摘要:题意 给定 个工作, 个机器。 每个工作需要若干机器获得 的奖励。 机器可以选择租和买。租只能在当前工作内使用。 Sol 考虑在最大权闭合子图上面改改。 发现直接把工作往汇点连买的权值就完事了。 Code #include <iostream> #include
阅读全文
摘要:题意 给定一个矩阵,每次询问子矩阵的第 大。 Sol 考虑把莫队扔到二维上来做。 发现复杂度变为:。 卡卡常就过了。 Code #include <iostream> #include <algorithm> #include
阅读全文
摘要:题意 给定一个图,走过一条边的花费为权值,其中有 个充电点。 你需要确定一个电量的上限,使得满足从 走到 。 Sol 先对于每个点求出她走到充电点最近的距离,用 随便跑跑。 考虑从 一条边的贡献。设当前的电量上限为
阅读全文
摘要:题意 给定一棵树,以及 条路径。 让你选出最少的点,使得对于每一条路径,都有一个点距离链上的点离端点更近。 Sol 考虑将每一条路径分为直链和曲链考虑。 注意到所有的曲链最多对答案有 的贡献。 考虑直链的情况。 注意到一个很显然的东西。 对于一个选择的点,如果她的上方不是端点
阅读全文
摘要:题意 给定一个字符串 。 每次等概率随机选择一个为 的位置,随机向左或者向右移动。 走过的位置全部覆盖成 或 。 Sol 注意到最终的状态一定是 。 考虑 出前缀和后缀的概率。 设 表示已
阅读全文
摘要:题意 有 个工作,每个工作需要一些限制。 你可以花 的代价满足一个限制。 然后获得 的贡献。 问是的获得的贡献最大可以使多少? Sol 最小割。 从源点往每个实验连 ,每个实验往每个代价连 . 代价往汇点连 就行
阅读全文
摘要:题意 给 个点两两求最小割,问不同的最小割的数量。 Sol 最小割树。 每次最小割完,对于源点集和汇点集分别再做一遍最小割。 这样递归下去对于每次的源点和汇点连边,边权为最小割的值。 Code #include <iostream> #include <algorithm> #inclu
阅读全文
摘要:题意 link Sol 考虑不戴限制的情况,那就是对于每一层连到下一层跑网络流。 考虑戴上添边,不难发现向相邻的点连一条 边就行了。 Code #include <iostream> #include <algorithm> #include <cstdio> #include <a
阅读全文
摘要:题意 给定一个 的矩阵。 你需要将其中每一个元素分成两个集合。 当一个元素的集合为 ,获得 。集合为 ,获得 。 当一个元素与她相邻的所有元素都在同一个集合,获得 或 \(d_{i, j
阅读全文
摘要:题意 你有 个糖果,第 个的价值为 。 每次操作可以选 或 个糖果。 问在所有的方案中, 个或 个糖果的价值之和的最大值和最小值之差最小是多少。 Sol 很有趣的诈骗题。 首先套路的,考虑将选一个的情况变为选一个 \
阅读全文
摘要:题意 维护一个序列 ,有以下操作。 区间加。 区间覆盖。 求 到 的第 小元素。 求 到 的每个元素的 次方之和膜 。 输入由给定种子 随机 生成。 Sol 珂朵莉树。 本质上就是拿 乱搞。
阅读全文
摘要:题意 给定序列,每次交换两个数。询问逆序对个数。 Sol 暴力草过去了。 分块的做法等会来补。 Code #include <iostream> #include <algorithm> #include <cstdio> #include <array> #define int long long
阅读全文
摘要:题意 有 个商店。每个商店有 个物品。每个物品的价值为 。每种物品只能被购买一次。 你可以选择一个起点,在任意商店结束购买。获得的价值为 个物品之和减去路程。 求最大可获得的价值。 Sol
阅读全文
摘要:题意 给定序列 ,每次询问 的区间众数的出现次数。 强制在线。空间:。 Sol 蒲公英卡常卡空间版。 考虑优化那个 的数组。 我们要求 之中某个数的个数。 乍一看不好弄,仔细想想就会发现,如果我们知道当前
阅读全文
摘要:题意 给定序列 ,求 的区间众数,强制在线。 Sol 考虑分块。 不难想到可以预处理出块 到块 的区间众数。 然后查询时将散块出现的数在整块中出现的个数加入贡献。 这个玩意可以用前缀和简单预处理。 然后就做完了。 Code #include <io
阅读全文
摘要:题意 给定长度为 的序列 。 有 个询问,每次询问三个区间,把三个区间中同时出现的数一个一个删掉,问最后三个区间剩下的数的个数和,询问独立。 Sol 不难发现答案即为求:。其中 \(s
阅读全文
摘要:题意 给定一个序列,每次询问求: 在区间 中,大小在 中数的个数与种类数。 Sol 对于第一问直接离线跑树状数组二维偏序。 第二问考虑莫队,发现只需要维护莫队那个表示种类的数组的区间和就行了。 要求 修改的话,写个值域分块? Code #
阅读全文
摘要:题意 给定一个字符串 ,每次区间查询 中有多少子区间重排可以形成回文串。 Sol 莫队板子题。 首先套路地,状压 个字母,然后做异或前缀和。 问题变为当前区间内有多少个 使得 有或者没有
阅读全文
摘要:题意 给定一棵树,每次询问给出 个点。 问最少删除多少个 节点 (不能删这 个点) 使得这 个点两两不连通。 Sol 无解的情况是 的。 判断是否有相邻的两个关键点就行了。 但是 是不太 的。 设 \(
阅读全文