20251020

news/2025/10/20 20:54:55/文章来源:https://www.cnblogs.com/xhr0817-blog/p/19153630

正睿NOIP 二十连测

A

\(m(m \le 95)\) 种药剂,每种药剂有 \(n_i(\sum n_i \le 10^{15})\) 瓶,等级为 \(p_i\)\(2 \le p_i \le 499\))。要将这些药剂分成两个不相交的集合 \(X, Y\)\(X\) 的价值为其组内所有药剂等级的乘积\(Y\) 的价值为其组内所有药剂等级之。请问在满足 \(X, Y\) 价值相等的情况下最大的共同价值为多少。

设所有药剂的等级之和为 \(s\),显然 \(X, Y\) 的价值均满足小于 \(s\)。又因为所有药剂的等级均至少为 \(2\),则 \(|X| \le \log_2 s\)。这也说明了 \(X\) 内药剂等级之和小于等于 \(P\log_2s(P = \max p_i)\),也就是 \(Y\) 的价值不少于 \(s - P \log_2 s\)

那么可以枚举 \(Y\) 的价值,对这个价值做质因数分解检查是否符合题意即可。

时间复杂度:\(O(mP\log_2 s)\)

本题主要是通过等级至少为 \(2\) 得到 \(Y\) 的价值范围,暴力 check 即可。

B

\(n\) 个物品和 \(m\) 条描述。每条描述形如 \(X_{a_i} \equiv X_{b_{i}} + c_i \pmod {d_i}(d_i = -1, 1, 2, 4, \dots 2^{15})\),其中 \(d_i = -1\) 表示非同余的正常的方程 。对于每条描述,输出是否和前面的描述冲突(冲突则忽略)。

这个题知道了 \(X_{a_i} - X_{b_i}\) 在模 \(d_i\) 意义下的值,也就是知道了模小于等于 \(d_i\) 的二的幂次的结果。

于是可以开 \(15\) 个带权并查集检验模 \(2^1, 2^2, \dots 2^{15}\) 时是否有问题。每次只需要看查询是否连通,检查一下差值是否正确。当在 \(15\) 个并查集中均没有问题时在连边、合并。

注意\(d_i = -1\) 不能看成 \(2^{16}\),要么单独处理一下,要么看成 \(2^{34}(2^{34} > 2^{15}n)\) 之类的。因为这个挂了 \(28pts\)

时间复杂度:\(O(15n \log n + 15m)\)

思路还是挺一眼的,被 \(d_i = -1\) 坑了一把。

D

设给定 \(S = \{1, 2, \dots , m\}\)

对于一个值域为 \(S\) 的长度为 \(n\) 数组 \(b\) 和一个定义域与一个定义域和值域均为 \(S\) 的函数 \(f\),若对于任意 \(i(1 \le i \le n), f_{b_i} = b_{n - i + 1}\),则 \(b\) 是可 \(f\) 翻转的。现在给定长度为 \(n\) 的数组 \(a\),设对于函数 \(f\) (共 \(m^m\) 种),有 \(w(f)\)\(a\) 的子串是可 \(f\) 翻转的,输出 \(\sum w(f) \mod 998244353\)

先考虑对于 \(b\) 来说,有多少个 \(f\) 有贡献。首先 \(b\) 中出现的数的 \(f\) 值必须一一对应(而且是个双射,\(f(i) = n - i + 1, f(n - i + 1) = i\))。在这点满足下,设 \(b\) 中有 \(c\) 种不同的数字,则共有 \(m^{m - c}\)\(f\) 是可行的(\(c\) 个固定,\(m - c\) 个随意。)

这个东西有点像回文串,可以考虑选择某个字符为中心开始扩展,显然半径越大越可能矛盾,直接暴力枚举可以做到 \(O(n^2)\)

进一步地,可以想到 Manacher,尝试套用。而 Manacher 的关键就是若 \([L, R]\) 和它的子串 \([l, r]\) 均为回文串,那么 \([L + R - r, L + R - l]\) 也是回文串。而这以点在这个题也是成立的。(后面称不矛盾的区间为类回文串。)

\(f(L + R - r) = r = f(l) = L + R - l, f(L + R - l) = l = f(r) = L + R - r\)


在定好大致思路,进行 Manacher 之前,我们要先解决一个问题,在两端分别加入一个数后如何判断 \([l, r]\) 是否是个类回文串?同时需要维护 \(c_i\) 表示有多少个 \(f(x)\) 是固定的(以及 \(s_i\) 表示以 \(i\) 为回文中心的类回文串 \(f\) 数之和。)(这也是为什么不能使用二分 + Hash 的原因。)

实际上,我们可以预处理出 \(pre_{i}\)\(nxt_i\) 分别表示 \(i\) 前面与 \(i\) 后面第一个与 \(a_i\) 相同的数的位置。

\(a_r\)\([l - 1, r - 1]\) 已经出现过(即 \(pre_r > l\)),需要判断 \(a_{l + r - pre_r}(之前得到的 f_{a_r})\) 是否与 \(a_l\) 相同。对于 \(a_l\) 也要判 \(a_{l + r - nxt_l}\) 是否与 \(a_r\) 相同。千万不要偷懒只判一边!!如果都是一样就代表 \([l, r]\) 合法,\(c\) 不用变。

若都没出现过,显然 \([l, r]\) 合法,\(c \leftarrow c + 1 + [a_l \ne a_r]\)

bool add(int &c, int x, int y) {if (!a[x]) return 1;if (nxt[x] < y || pre[y] > x) {if (a[y] != a[x + y - nxt[x]] || a[x] != a[x + y - pre[y]]) return 0;} else {c += 1 + (a[x] != a[y]);}return 1;
}

接下来按照 Manacher 的流程,设 \(len_i\) 表示 \(i\) 位置回文半径。假设考虑到了 \(i\),先前有一个 \(r\) 最大的类回文串 \([l, r]\)

  • \(r < i\),直接暴力拓展即可。

  • \(i + len_{l + r - i} < r\),十分的友好,直接把 \(l + r - i\) 的所有信息(\(len, c, s\))全部继承过来。

  • 否则就比较麻烦。我们只能保证 \(len_i \ge r - i\),而且 \(c_i, s_i\) 也不能直接继承过来。我们只能尝试从 \(len_{l + r - i}\) 开始慢慢删到 \(r - i\),同时维护 \(c, s\),再进行扩展。写倒是不难写,但是时间复杂度是对的吗?

    这个东西的代价是 \(O(i + len_{l + r - i} - r)\) 的。下面我们需要证明它是均摊 \(O(1)\) 的。因为 \([l, r]\) 的中心 \(mid < i\),则 \(l + r - i < i\),也就是 \(l + r - i\) 再回文串的左半边,那么 \(l + r - i + len_{l + r - i} \le r\)。所以 \(i + len_{l + r - i} - r \le 2i - (r + l) = 2(i - mid)\)。而此时因为 \(i + len_i\) 已经大于等于 \(r\) 了,所以 \(i\) 就会成为新的 \(mid\)。总共的代价也就是 \(O(n)\) 的了。

然后这个题就做完了,时间复杂度:\(O(n)\)

Manacher 把长度为奇数和偶数统一考虑的技巧,仍然可用。中间插 \(0\),维护 \(c, s\) 时注意判一下即可。

总的来说,这个题的思路还是比较顺的。发现条件的性质很像回文串后,可以联想到 Manacher。主要是最后这个挪的部分时间复杂度不太好证,而且要维护 \(c, s\)。代码难度还好,有些细节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低代码赋能业务创新:打破数字鸿沟,释放业务潜能

在数字化转型的浪潮中,一个突出的矛盾日益显现:业务部门汹涌的创新需求,与IT部门有限的开发资源之间,形成了一道难以逾越的“数字鸿沟”。当市场部门需要一个临时的活动报名系统,当HR部门渴望一个高效的内部推荐工…

【大模型】大模型训练的几个不同阶段

总结:各方法的典型关联(以大语言模型为例)Pre-Training:先让模型学“通识知识”(如语言、世界知识)。 Supervised Fine-Tuning (SFT):用标注数据让模型学“任务基本模式”(如指令遵循)。 Reward Modeling:训…

详细介绍:1、手把手教你入门设计半桥LLC开关电源设计,LLC谐振腔器件计算

详细介绍:1、手把手教你入门设计半桥LLC开关电源设计,LLC谐振腔器件计算pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…

十六天

今日重点学习关系型数据库基础,核心掌握三个模块:一是数据表的结构化设计,明确字段类型(如INT、VARCHAR)需与数据属性匹配,避免后续数据存储异常;二是主键的作用,通过实操验证其“唯一标识记录”的必要性——未…

10/20/2025杂题 关于在线性时间内求解低次多项式的幂

例 设 \(g = ax^2 + bx + c\),求: \[ f = g^n\]其中 \(0 \leq n \leq 3 \times 10^5\)。结果对 \(10^9 + 7\) 取模。 首先可以直接用 MTT 在 \(O(n \log n)\) 的时间复杂度内求解。然而此做法常数太大,在需要多次求…

歌手与模特儿

https://www.luogu.com.cn/problem/AT_nikkei2019_2_final_h 第一次见到能 manacher 但不能二分+哈希的题! 直接上 manacher,当尝试将区间拓展为 \([l,r]\) 时,考察 \(nxt_l\) 和 \(lst_r\) 的位置关系,可以 check…

20251019

正睿 NOIP 十连测 B 有 \(n\) 个数 \(a_1 \sim a_n\)。初始有一个 \(x = 1\),每次需要将 \(x\) 变为某个 \(i\),花费代价为 \(\min(|i - x|, n - |i - x|)\),且 \(a_x \le a_i\)。问访问所有 \(i\) 需花费的最小代价…

计算机毕业设计 基于EChants的海洋气象数据可视化平台设计与建立 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】

计算机毕业设计 基于EChants的海洋气象数据可视化平台设计与建立 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】pre { white-space: pre !important; word-wrap: normal !important; overflo…

SpringBoot整合Redis教程

一、Redis 简介 Redis(Remote Dictionary Server)是一个开源的高性能键值对存储数据库,基于内存运行并支持持久化,常用于缓存、会话存储、消息队列等场景。其核心特点包括:速度快:基于内存操作,单线程模型避免上…

https://www.luogu.com.cn/problem/CF1635E

考虑一个事情,两辆车方向一定相反,弱化限制后,建二元关系图,发现一定是一张二分图。 钦定左部点为向左,其他点为向右,然后发现位置满足一个二元大小关系限制,建 DAG 跑拓扑序即可。

ZR 2025 NOIP 二十连测 Day 5

85 + 32 + 5 + 5 = 127, Rank 67/128.呜呜我错了……我再也不开太大的 vector 了呜呜……/dk /dk /dk25noip二十连测day5 链接:link 题解:题目内 时间:4h (2025.10.20 14:00~18:00) 题目数:4 难度:A B C D\(\colo…

关于单片机内部ADC采样率,采样精度的理解与计算整理 - 实践

关于单片机内部ADC采样率,采样精度的理解与计算整理 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

整体架构与数据流

下面给出对题目及当前代码求解方法的系统、深入解析,涵盖三问建模逻辑、数据流、关键算法、假设与局限、以及改进建议。内容按“题目需求 -> 代码实现 -> 差异/假设 -> 评估/改进”结构展开,方便你写论文或…

【上青了】

【上青了】赶紧把面板记录一下先,怕下次又又又掉了 没什么好讲的,本来上场打完就差 11 分,这场只要正常发挥就没问题变色,所以也没什么激动,该激动的上次都激动完了,哎哎哎 要说就是这次状态还行,不算差,前面 …

[VIM] reverse multiple lines in VIM

推荐方法: If you’re on a Unix-like system (FreeBSD, Linux, macOS), use :14,19!tac.来自chatgptTo reverse the display order of lines 51 to 54 in Vim, you can use the :g and :tac-style command combinati…

DeviceNet 转 Ethernet/IP:三菱 Q 系列 PLC 与欧姆龙 CJ2M PLC 在食品饮料袋装生产线包装材料余量预警的通讯配置案例

案例背景 DeviceNet 转 Ethernet/IP在食品饮料行业,包装生产线涉及多种设备,如灌装机、贴标机、封口机等。不同设备可能采用不同的工业总线协议,为了实现整个包装生产线的自动化控制和数据共享,需要将采用 Etherne…

【大模型】【扫盲】几种不同的微调方法

四种微调方式Full 对预训练模型的所有参数进行微调,让模型从底层到顶层的所有参数都参与更新,彻底适配下游任务 优点:模型对任务的适配性最强,在数据充足、任务复杂时效果通常最优 缺点:资源消耗极大(千亿参数模…

Tuack 生成比赛题目 PDF 笔记

Part 1. Tuack 的基本介绍 Tuack,是一个由来自 THU 的大佬 Mulab11 开发的,用于造算法竞赛题目的工具。 你可以用它:导出 PDF、Markdown、HTML 等多种不同格式,NOI、CPC 等不同风格的题面。 简单的出题人自评测功能…

在 wrapper 类里实现重载方法

现有包装类 Wrapper 欲覆盖 inner 的方法 g class A{void f(){g();}void g(){} }class Wrapper extends A{A inner;void f(){inner.f() // 不调用 Wrapper.g}void g(){ // override g} }inner 通过 this.g 调用时仍然会…

Vue 项目 AI 文档增量更新工具操作手册

一、工具目标 通过 AI 自动生成 Vue 组件 / JS 工具的工程化解释文档,并支持增量更新(仅处理新增 / 修改的文件),避免重复劳动,提升团队文档效率。 二、环境准备前置条件 已初始化的 Vue 项目(Vue 2 或 Vue 3 均…