HN省队集训2024讲课题解
Nauuo and Pictures (hard version)
考虑 dp。
设 表示对于第 张图片,现在进行了 次操作,其中 次是将某数加一,权值的期望值。 转移是简单的。
这样时间复杂度是 的,考虑优化。
考虑将每个照片拆成 个同类的且权值为 的照片,那么现在照片就只有两种: 等于 或 等于 。
那么就可以将 那一位去掉。 设 表示进行 次加一操作, 次减一后的期望代价,有转移:
这样时间复杂度是 ,可以通过本题,但预处理逆元可以做到 。
Anticube
首先有个想法:对每个 分解质因数,然后用 找到与之冲突的数,取两者中间出现最多的数。
但这样是 的,无法通过。(不过好像可以 BSGS?
考虑优化:首先可以先将 内的质因数先除掉,这样是可以实现的。
那么剩下的数就一定是一下几种形式:, 和 。
首先考虑剩下的是 ,那么直接开根就行。
如果剩下的是 ,那么想要与它凑成完全立方数就只能含有 ,但 都是大于 的整数
,所以 ,直接将答案加一,不要放进 。
剩下 同理。
那么这样我们就以 解决了这道题。
PS:为了防止类似 abs((__int128)x)
之类的悲剧发生,这边建议手写 的开根。(虽然这题没有涉及 __int128,但有精度问题的函数少用)。
Minimum Sum of Maximums P
首先考虑把这个奇怪的贡献拆一下,可以拆成:。
为了避免一些奇怪的边界,我们在序列左右插入一个极大值,最后减去即可。
考虑到 是固定的,所以我们要最小化 。
设区间左边那个固定点值为 ,右边那个值为 ,若 ,那么直接将这段数从小到大排序一定不会更劣。类似的,如果 ,那么可以直接从大到小排,证明显然。
对于一段区间,设该区间的最大值为 ,最小值为 ,那么该区间的代价是:
(其中 和 是这段区间左右固定的数的值)
那么我们现在的任务就是分配每一段的最小值和最大值。
结论:对于两段编号为 的区间,这两段区间的值域要么完全包含,要么没有相交。
直接反证是比较简单的。
那么我们就可以设计状态,设 表示当前值域区间为 ,已经固定了的区间集合为 ,那么有转移:
-
没有值域恰好为 的区间:
-
将两段拼起来,设 集合为 的段的长度和,有:。
-
正好有 的区间:,其中 是第 段值域为 时的代价。
这样时间复杂度是 的,瓶颈在第二个转移。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)