打的 VP。
妙妙题。枚举 ,思考如何快速计算 的值。
对于 是 因数的情况,有 。令 ,则 ,相当是求 里面有几个是 的倍数。记 ,因为 一定是 的因数,也要是 的因数,那么 一定是 的因数,可以转化成求有几个 是 的倍数。根据定义可知 是 的因数,考虑枚举 的因数来计算答案。这种情况最多出现 次,每次枚举是 的,总时间复杂度 ,预处理 为 (应该可以基于值域快速预处理)。
对于 不是 因数的情况,有 。令 ,则 。此时有一个重要的性质:一个数 不能被表示出来当且仅当 。证明如下:假如一个数 ,那么有 ,矛盾;假如已经有 ,可以这样构造:。
所以我们可以通过减去 这些区间内的数来计算 。可以证明这样是 的:当 时,区间至多会有 个;当 时,,故区间不会超过 个。而不管是哪种情况, 的取值都不会超过 种,故总时间复杂度为 。
妙妙题 +1。
对 的情况,我们把整个序列分成 5 段,那么 T 一定是至少一段的子序列(不懂可以手玩一下)。枚举每一段的子序列,查找 S 内包含个数,时间复杂度 。对于 的情况,我们只用考虑 或 (因为 包含在 里面)。枚举断点把 S 分成 段,对这 段求 LCS 即可。 时时间复杂度为 ,其中 是一个极小的常数。
证明一下 的大小。考虑以下问题:求排列 个白色球和 5 个黑色球的方案数。白球表示字符串的字母,第 2、4 个黑球表示我们将字符串分成 3 部分的位置,第1、3、5个黑球表示我们在 DP 中枚举转移的位置。因此,在球的顺序和所有 DP 状态之间有一个映射。球的顺序数为 ,因此 (实际上我们还没有计算分割成空串的情况,所以 甚至比这个小一点)。

md ,忍不了了,一拳把像马奇诺防线一样坚固的 pretest 打爆。

图片来源:我也不知道。
题意:让你构造一个 的矩阵,满足矩阵内不同元素数量最多,且对于其任意一个 的子矩阵 ,满足:
。
瞪眼可得最多种类为 。有一种简单的构造方式:。
题意:有 个数组,第 个里面有 个元素。现在让你把 个数组以任意顺序连接起来,使得得到的新数组价值最大。定义长度为 的数组 的价值为 。。
定义 表示 ,显然我们这样可以使得到的价值最大:先按 从小到大排序,再从中选取一些数组连接,最后把其余的放到最后。因为你任意排列得到的答案中,有贡献的子结构一定会在这样构造的方案中出现。注意这里我们只是确定了会产生贡献的数组的相对顺序,并不是答案一定是这样排列的。比如这种情况:

定义 表示当前选择的结尾为第 个数组的最大贡献,有转移方程 ,其中 等于 。显然最大值可以线段树维护。
upd:傻逼了,这个直接记一个前缀最大值就行了,根本不需要线段树。
题意:给一个有向图,每条边需要一定的钱。你可以在第 个点卖艺来赚取 块钱。初始在节点 1,身上有 块钱,要去往节点 ,求最小卖艺次数。。
因为卖艺没有次数限制,我们卖艺一定是在沿途 最大的地方。定义 表示从 1 走到 ,且沿路经过的 最大的节点为 的最少卖艺次数和最大剩余钱数。从 1 跑一遍 dijkstra ,如果去下一个点的钱不够就在 卖艺。记得更新 的值(注意我们应该先卖艺再更新,因为你的钱还不够到达下一个点)。
VP 罚时吃饱饱。
题意:给定一个长为 的数列 ,你需要构造一个长为 的数列 (正负没有限制),满足把 任意分成大小为 的两组,都有其中一组的乘积等于另一组的和。求最小的 。
手玩可以发现只有如下情况:
-
全是 0;
-
时全为一个数;
-
时全为 2;
-
为偶数时有一个 和 个 -1。
题意是最大障碍。
题意:
题意:一棵大小为 的树, 的点权为 。 次询问,给定 ,求 ,其中 表示 的深度, 表示 的 级祖先,保证 。 。
暴力怎么做?直接模拟这个过程。直接记忆化需要 map 或 hash,会被卡,考虑随机记忆化一部分答案。我的方法是只记录 是 400 倍数的 的答案,题解是只记录满足与 同样深度的点数不超过 的点对的答案。
打成 ,罚时吃饱饱。
题意:给一个 01 串,有两个操作:花 的代价交换相邻两数,花 的代价删除一个数。求让这个串单调不减的最小代价。。
最后的序列是一个前 0 后 1 的形式,考虑枚举 01 分界点,交换产生的位移至多为 1(因为大于 1 时不如删),且两边的多余的数肯定是直接删最划算。故枚举是否交换,答案直接算。复杂度 。
题意:有两个容量为 ,初始水量为 的水箱,有 次形如从一个往另一个倒水的操作,求对于所有的 ,求出操作后第一个水箱中剩的水量。。注:假设现在两水箱分别有 x,y 的水,当次操作为“从 1 向 2 倒 的水”,则实际倒水量为 。
因为水不会溢出,考虑枚举 表示水的总量。发现对于一些 的情况,假如它们在某次操作后 1 被倒空或倒满,则最后答案相同,故显然对于所有 的 ,答案画成函数是这样的:

其中 表示 1 中水量的上下界, 是函数的分界点,它们可以直接模拟过程计算。时间复杂度 。
题意: 个点的环,从 到 耗油 ,单位价格为 ,油箱容量为 ,初始为空,求每个点作为起点和终点的最小代价。。
题意:定义一个数的幸运值为其最大的一位数码与最小的之差。求 里最不幸的数。。
如果 数位不同,则一定可以取到幸运值为 0;反之,考虑枚举幸运值和每位数的取值范围,类似数位 dp 那样求一下即可。
题意:定义数组的代价为使其变成回文串的最小改动次数,求数列 的所有长度为 的子串的代价。, 是奇数。
正难则反。对于 , 不会产生代价当且仅当 ,可以直接计算。
题意:一个长度为 且 的数组 是好的当且仅当存在 满足 ,求有多少个长度为 的好的 数组,答案对质数 取模。。
条件等价于 ,枚举 和总和的值,定义 表示前 位和为 ,是否用了 的值,答案就是 。时间复杂度 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!