2025/11/22 NOIP 模拟赛小记

news/2025/11/22 23:35:11/文章来源:https://www.cnblogs.com/P2441M/p/19258888

\(100+100+28+40=268\),T3 好像拿的分过于少了。

不管了,T1、T2 都击杀了,还行。

T1

原题:TopCoder 13061。

题意

\(n\) 种面值的硬币,第 \(i\) 种面值为 \(a_i\),保证 \(a_1=1\)\(\forall 1\leq i<n,a_i\mid a_{i+1}\land a_i<a_{i+1}\)

不同面值的硬币有不同的颜色,且只能通过颜色区分。有一个 ATM 机,你可以做若干次查询,每次查询给出 \(X\),ATM 机会用最少的硬币凑出面值 \(X\)。求最少查询次数以确定每种面值对应的颜色。\(1\leq n\leq 60\)\(1\leq a_i\leq 10^{18}\)

击杀爽。

\(b_i=\lfloor\frac{a_{i+1}}{a_{i}}\rfloor\)

假设询问了 \(k\) 次,可以发现,问题可以抽象成对于每个 \(a_i\),分配一个大小为 \(k\) 的向量 \(\vec{v_i}\),且其每一个分量都应该是 \([0,b_i-1]\) 中的整数。考虑这些向量有什么限制:

  • \(\vec{v_i}\) 应当互不相同,这样才能唯一确定每种面值的颜色。
  • \(\vec{v_i}\neq \vec{0}\)

显然 \(\vec{v_n}\) 没有分量的大小限制,可以直接排除掉。对于 \(1\leq i<n\)\(\vec{v_i}\) 的取值\(([0,b_i-1]\cap\mathbb{Z})^k-\{\vec{0}\}\)。考虑在每种面值的硬币和其能取到的向量之间连边,得到一张二分图,那么我们相当于要找一组完美匹配。使用 Hall 定理做判定,每个左部点 \(i\) 连向的右部点 \(S_i\) 之间必然成包含关系,于是只需要按 \(b_i\) 排序,判定条件即为对于每个 \(j\),都有 \(j\leq b_j^k-1\)。答案显然 \(\leq n\),暴力枚举答案判定即可。时间复杂度为 \(\mathcal{O}(n^2)\)

T2

原题:TopCoder 12464

题意

\(n\) 个点 \((x_i,y_i)\)。有 \(m\) 轮移动,对于每轮移动,每一个点都可以从上下左右四个方向中选择一个,向该方向移动一个单位。要求在 \(m\) 轮移动后,所有点的坐标相同,求满足要求的移动方案数,答案对 \(10^9+7\) 取模。\(1\leq n\leq 50\)\(1\leq m,|x_i|,|y_i|\leq 10^5\)

傻逼题。

\((x_i,y_i)\gets (x_i+y_i,x_i-y_i)\),很难不发现这样两维就独立开了,枚举汇合点组合数计算即可,时间复杂度 \(\mathcal{O}(n(m+V))\)

T3

原题:QOJ 13558。

题意

有三个长度为 \(n\) 的排列 \(p_1,p_2,p_3\)。对于某个排列 \(k\),定义 \(i\) 能打败 \(j\),当且仅当 \(i\)\(p_k\) 中的位置在 \(j\) 之前。现在有 \(n\) 个数 \(1,2,\cdots,n\),你每次可以任选两个不同的数 \(x,y\),再指定一个排列 \(p_k(k\in\{1,2,3\})\),然后 \(x,y\) 中被打败的那个将会被淘汰。

\(q\) 次操作:

  1. 给定 \(k,x,y\),交换 \(p_k\)\(x,y\) 的位置。
  2. 给定 \(x\),查询 \(x\) 是否能成为最终剩下的那个数。

\(1\leq n,q\leq 10^5\)

神秘结论题。

直接给出结论:考虑最小的分界点 \(i\),使得对于每个数 \(x\),其在三个排列中的出现位置要么都 \(\leq i\),要么都 \(>i\)。那么 \(x\) 能成为最终剩下的那个数,当且仅当 \(x\) 在三个排列中的出现位置都 \(\leq i\)

证明

必要性显然,下面证充分性。

考虑建图,若 \(u\) 可能打败 \(v\),则从 \(u\)\(v\) 连有向边。不难看出 \(u\) 能成为最终剩下的数,等价于从它出发 DFS 能遍历到剩下的所有点。在缩点后的 DAG 上,上述条件还等价于点 \(u\) 位于 DAG 中唯一一个零入度点对应的强连通分量中。

\(\leq i\) 部分的点集为 \(S_1\)\(>i\) 部分为 \(S_2\)。显然 \(S_1,S_2\) 之间所有边都是 \(S_1\) 连向 \(S_2\),所以我们只需要证明 \(S_1\) 是一个强连通分量。考虑反证。若 \(S_1\) 不是一个强连通分量,则一定能将其进一步划分成两个** \(P,Q\),使得 \(P,Q\) 间所有边都是 \(P\) 连向 \(Q\)。显然这说明 \(|P|\) 是一个更小的分界点,矛盾。于是得证。\(\Box\)

对于每一种值,设其在三个排列中最早的出现位置为 \(p\),那我们在 \(p\) 上单点 \(+1\),这样相当于找到一个最小的 \(i\) 使得其前缀和 \(s_i\) 恰好为 \(i\)。用线段树维护 \(s_i-i\),这样修改操作就是后缀加减 \(1\),然后维护最小值的最早出现位置即可。时间复杂度 \(\mathcal{O}((n+q)\log{n})\)

T4

原题:TopCoder 12584。

题意

定义一个正整数 \(n\) 为半完全幂,当且仅当其能表示为 \(a\cdot b^c\),其中正整数 \(a,b,c\) 满足 \(a\geq 1,b>1,c>1\)。给定 \(L,R\),求 \([L,R]\) 中半完全幂的数的个数。\(1\leq L\leq R\leq 8\times 10^{16}\)

推式子题,难点在于性质分析。

肯定要差分成前缀查询的。

比较难注意到,所有半完全幂都能化成 \(c\in\{2,3\}\) 的形式。因为对于 \(c>3\),若 \(c\) 为偶数,我们可以构造成 \(a\cdot (b^{\frac{c}{2}})^2\),否则我们可以构造成 \((ab)\cdot(b^{\frac{c-1}{2}})^2\)

考虑分开算两种 case。无论是哪种 case,我们都钦定 \(a\) 是所有表示方法中最小的,即不存在正整数 \(q>1\) 使得 \(q^c\mid a\)

对于 \(c=2\) 的 case,我们直接枚举 \(a\) 算有多少种合法的 \(b\) 即可,方案数为

\[\sum_{a=1}^{n^{\frac{1}{3}}}\mu^2(a)\left(\left\lfloor\sqrt{\frac{n}{a}}\right\rfloor-a\right) \]

对于 \(c=3\) 的 case,考虑如何不重复计入能表示成 \(ab^2\) 的数。对于某个 \(ab^3\),显然我们能构造成 \((ab)\cdot b^2\),但我们钦定了系数要是最小的,于是设 \(k\) 为最大的正整数使得 \(k^2\mid ab\),式子变为 \(\left(\dfrac{ab}{k^2}\right)\cdot (bk)^2\)。要不重复计入,我们应当保证 \(\dfrac{ab}{k^2}\geq bk\),化简得到 \(k^3\leq a\)

接下来就是传统艺能环节。先写出式子:

\[\sum_{a=1}^{n^{\frac{1}{4}}}[\nexists q>1,q^3\mid a]\sum_{k=1}^{a^{\frac{1}{3}}}\sum_{b=a+1}^{\left(\frac{n}{a}\right)^{\frac{1}{3}}}[k^2\mid ab]\mu^2\left(\frac{ab}{k^2}\right) \]

这样直接算是 \(\mathcal{O}(n^{\frac{7}{12}})\) 的,无法接受。

这个 \([k^2\mid ab]\) 比较难受,考虑把它去掉。设 \(d=\gcd(a,k^2),a'=\dfrac{a}{d},k'=\dfrac{k^2}{d}\),那就变成了 \([k'\mid b]\mu^2\left(\dfrac{a'b}{k'}\right)\),然后套路地枚举 \(b=tk'\),于是式子变为

\[\sum_{a=1}^{n^{\frac{1}{4}}}[\nexists q>1,q^3\mid a]\sum_{k=1}^{a^{\frac{1}{3}}}\sum_{b=tk'}\mu^2\left(a't\right) \]

\(\mu(xy)=\mu(x)\mu(y)[\gcd(x,y)=1]\),可以同理得到 \(\mu^2(xy)=\mu^2(x)\mu^2(y)[\gcd(x,y)=1]\),这样后面的式子就化成了 \(\mu^2(a')\mu^2(t)[\gcd(a',t)=1]\)。上莫反:

\[\begin{align*} &\sum_{a=1}^{n^{\frac{1}{4}}}[\nexists q>1,q^3\mid a]\mu^2(a')\sum_{k=1}^{a^{\frac{1}{3}}}\sum_{b=tk'}\mu^2(t)[\gcd(a',t)=1]\\ =&\sum_{a=1}^{n^{\frac{1}{4}}}[\nexists q>1,q^3\mid a]\mu^2(a')\sum_{k=1}^{a^{\frac{1}{3}}}\sum_{b=tk'}\mu^2(t)\sum_{p\mid\gcd(a',t)}\mu(p)\\ =&\sum_{a=1}^{n^{\frac{1}{4}}}[\nexists q>1,q^3\mid a]\mu^2(a')\sum_{k=1}^{a^{\frac{1}{3}}}\sum_{p\mid a'}\mu(p)\sum_{t=t'p}\mu^2(t'p) \end{align*} \]

其中由于 \(b\) 的取值范围为 \([a+1,\left(\frac{n}{a}\right)^{\frac{1}{3}}]\),所以 \(t'=\dfrac{b}{k'p}\) 的取值范围为 \([\dfrac{a+1}{k'p},\dfrac{\left(\frac{n}{a}\right)^{\frac{1}{3}}}{k'p}]\)

最后一个 \(\sum\)\(a'\) 的约数**都可以 \(\mathcal{O}(n^{\frac{1}{3}}\ln{n})\) 调和级数预处理,这也是时间复杂度瓶颈。

总体时间复杂度为 \(\mathcal{O}(n^{\frac{1}{3}}\ln{n})\)

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

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

相关文章

icmp for linux

在 Linux 系统中,ping 命令是用于测试网络连通性的一种工具,它使用的是 ICMP(Internet Control Message Protocol) 协议。ping 命令可以用来检查本地主机与远程主机之间的网络连接是否正常。一、ping 命令的基本用…

iceberg sql能查啥

Iceberg SQL 是一个用于查询 Apache Iceberg 表的 SQL 查询引擎。Apache Iceberg 是一个开源项目,它为大数据处理提供了一个表格式和一组处理工具。Iceberg 的主要特点包括支持 ACID 事务、高效的元数据处理、支持复杂…

iceberg sql能实现啥

Apache Iceberg是一个开源表格式,旨在解决大数据分析中的数据存储和管理挑战。它通过提供高性能的表格式、ACID事务支持、模式演化、分区演化等功能,使得数据湖更加灵活和高效。以下是Iceberg SQL的主要功能:高性能…

iceberg sql能做什么

Apache Iceberg是一个开源的数据表格格式和查询引擎,旨在提供更强大的数据管理和分析功能。它支持ACID事务操作、数据版本控制、架构演化、跨平台兼容性、数据分层和分区、兼容现有工具和生态系统等功能。以下是Icebe…

南昌航空大学-软件学院-余思莹-第一次blog作业

目录一、前言二、设计与分析2.1 OOP1-NCHU_单部电梯调度程序2.1.1 题目2.1.2 设计与分析2.2 OOP2-NCHU_单部电梯调度程序2.2.1 题目2.2.2 设计与分析2.3 OOP3-NCHU_单部电梯调度程序2.3.1 题目2.3.2 设计与分析三、踩坑…

java电梯调度三次作业总结

前言: 本次PTA的单部电梯调度程序设计分为三次迭代完成,因此,第一次作业的实现质量对整个项目至关重要,初期最大的挑战在于理解电梯的运行逻辑,本题采用的LOOK算法变种与日常生活中常见的电梯运行方式有所不同,在…

[数据压缩] LZ4 压缩算法

0 序续接: [数据压缩/数据归档] 压缩算法综述 - 博客园/千千寰宇,展开研究 LZ4 压缩算法与压缩格式。1 概述: LZ4 压缩算法LZ4 是一种无损数据压缩算法,专注于极致的压缩和解压速度,同时保持合理的压缩比。它由 Ya…

什么是oracle的for engineered system版本

今天想着看看Oracle最新26ai的版本,奈何官网没有企业版,最新还是21c,于是去edelivery找。只发现了23.5,也行,算很新了,但是发现了个for engineered system版,没有看到企业版。如下:经查,for Engineered Syste…

CAN通信数据帧与远程帧,标准格式与远程格式的区分

礼貌借图,这是B站up主TrojanGeneric发布视频里他自己总结的对比。 在学习概念的时候确实被这里混乱的编码规则给硬控了一下,我的学习资料中关于每一位含义的介绍似乎有些问题。通过与 AI 的交互,感觉自己对这里清晰…

NumPy 从零开始:轻松掌握 Python 科学计算的“魔法”

NumPy 从零开始:轻松掌握 Python 科学计算的“魔法”你是否曾为处理大量数据而烦恼? 用 Python 写循环计算 100 万条数据,结果等了 5 分钟? 用 NumPy,同样的计算 5 秒搞定! 这不是魔法,是 NumPy 的“向量化”魔…

Windows 内网部署共享Neko浏览器

外网电脑 1.下载安装Docker 官网:https://docs.docker.com/desktop/install/windows-install/2.拉取 Neko 的 Chrome 浏览器镜像 docker pull docker.m.daocloud.io/m1k1o/neko:google-chrome3.将拉取的镜像导出为.ta…

iceberg sql怎样运用

Iceberg SQL 是一个用于处理 Apache Iceberg 表的 SQL 查询接口。Apache Iceberg 是一个开源项目,它为大数据处理提供了一个统一的数据格式和数据管理工具。Iceberg 提供了高效的元数据处理能力,支持 ACID 事务,并且…

Premium Multidiag TCS CDP+ V2021: Car Truck Diagnostic Tool with Bluetooth + Free Keygen

The Diagnostic Challenge: Pain Points for Mechanics and Car Owners In the world of automotive repair, time is money—and frustration often arises from outdated tools, limited compatibility, and the str…

iceberg sql怎样使用

Iceberg SQL 是一个用于与 Apache Iceberg 交互的接口。Apache Iceberg 是一个开源项目,提供了一种存储和处理大数据集的方法,特别适用于 Spark、Presto 和 Trino 等大数据处理引擎。以下是使用 Iceberg SQL 的一些基…

iceberg sql怎样优化

Iceberg SQL 优化可以从多个方面进行,以下是一些建议:使用合适的文件格式:Iceberg 支持多种文件格式,如 Parquet、ORC 等。选择合适的文件格式可以提高查询性能。例如,Parquet 格式支持列式存储和压缩,可以有效地…

oracle的free版是什么版本?

许久不见,oracle官网下载现在多了个free版,而且是默认下载选项,经查相关信息,现在的oracle free版就是以前的oracle xe,并非企业版、标准版的开发者版本。 Oracle 23c Free is the replacement for what would ha…

`squares_np = x * x` 是不是向量的叉乘?

这三个问题核心围绕「NumPy 数组运算的本质」「* 与 ** 的区别」「向量叉乘的定义」,下面用通俗+严谨的方式逐一解答,结合代码示例帮你彻底理清: 一、squares_np = x * x 可以改成 squares_np = x ** 2 吗? 完全可…

AcWing 905. 区间选点

AcWing 905. 区间选点 一、题目描述 给定 ( N ) 个闭区间 ([a_i, b_i]),请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第…

2025年11月热泵、电锅炉、中央空调推荐榜:商用、养殖、工建场景源头厂家选择指南

2025最新电锅炉品牌TOP5评测:引领供暖设备新标杆 2025-11-22 15:56蝙蝠汽车 随着清洁能源转型加速,电锅炉作为高效环保的供暖设备,市场需求持续攀升。本榜单基于技术创新度、区域覆盖力、节能效能三大维度,结合行业…

语音解耦技术推动语音AI多样性与包容性

本文介绍如何通过语音解耦技术分离语音中的语言、口音、年龄、性别和情感等特征,利用机器学习方法调整语调、措辞、语速和表达方式,为语音助手创建多样化的语音响应,提升产品的包容性和用户体验。语音解耦技术推动语…