CF2060FG 题解

news/2025/3/10 20:26:12/文章来源:https://www.cnblogs.com/dengstar/p/18763579

CF2060FG 题解

F G

F. Multiplicative Arrays

组合数学,dp

好题。一开始尝试从质因数分解的角度考虑,但并没有找到比较好的刻画方式。

首先观察发现序列中只有至多 \(\lfloor \log_{2} k \rfloor\) 个位置不为 \(1\),所以先考虑不为 \(1\) 的位置,再考虑往序列中加入 \(1\) 对答案的贡献。

我们想要计算当序列长度为 \(i\) 时,序列中元素之积为 \(j\) 的方案数。这个问题可以用 dp 解决(记住:dp 是解决计数问题的有力手段!)。

\(f(i, j)\) 表示长度为 \(i\) 且元素之积为 \(j\) 的序列个数。考虑在序列末尾加入一个新元素 \(d\),得到转移方程为:

\[f(i + 1, j \cdot d) \gets f(i, j) \]

初始化 \(\forall j \ge 2\)\(f(1, j) = 1\)

根据观察,\(i\) 只用枚举到 \(\lfloor \log_{2} k \rfloor\)。对 \(j\) 这一层的转移相当于枚举 \(k\) 以内正整数的所有倍数,根据调和计数的分析,单层转移的时间复杂度为 \(O(k \log k)\),所以总时间复杂度为 \(O(k \log^{2} k)\)

然后考虑怎么统计答案。

对于 \(x\),首先枚举序列长度 \(1 \le m \le n\),然后枚举不为 \(1\) 的元素数量 \(i\)

\[\operatorname{ans}_{x} = \sum_{m = 1}^{n} \sum_{i = 1}^{\lfloor \log_{2} k \rfloor} \dbinom{m}{i} f(i, x) \]

这个式子不太好优化。考虑交换求和顺序

\[\begin{aligned} \operatorname{ans}_{x} &= \sum_{i = 1}^{\lfloor \log_{2} k \rfloor} \sum_{m = 1}^{n} \dbinom{m}{i} f(i, x) \\ &= \sum_{i = 1}^{\lfloor \log_{2} k \rfloor} f(i, x) \sum_{m = 1}^{n} \dbinom{m}{i} \\ &= \sum_{i = 1}^{\lfloor \log_{2} k \rfloor} \dbinom{n + 1}{i + 1} f(i, x) \end{aligned} \]

第二个等式提出了无关 \(m\) 的量 \(f(i, x)\),第三个等式是上指标求和。这样就可以直接计算了。

需要注意的是组合数的计算:\(n\) 太大没法预处理,但可以预处理 \(k\) 以内的阶乘逆元,然后组合数用下降幂算。

AC 记录

G. Bugged Sort

神题。

这种乍一看没什么思路的题还是要多发掘操作的性质。本题中可以观察到以下结论(证明见 官方题解):

  1. 对每个 \(i\)\((a_{i}, b_{i})\) 都不会解绑。所以一次对 \((i, j)\) 的操作实际上可以看作:交换两个数对,然后分别翻转两个数对。(翻转数对 \(i\) 代表交换 \(a_{i}\)\(b_{i}\)。)
  2. 可以在不翻转的情况下交换两个数对。
  3. 可以在不改变位置的情况下翻转两个数对。
  4. 可以在不改变位置的情况下翻转一个数对。

根据性质 \(2\),可以先把所有数对按某种方式排序。可以证明如果序列最终有序,则 \(\min(a_{i}, b_{i}) < \min(a_{i + 1}, b_{i + 1})\),所以就按这种大小关系排序。之后要判断的就是:每次选择两个数对翻转,最终能否使两个序列都有序。

还是用 dp 解决。

\(f(i, 1/0, 1/0)\) 表示对于前 \(i\) 个数对,在翻转/不翻转 \(i\),且翻转数对的总数为奇数/偶数的情况下,能否使前 \(i\) 个数对满足。枚举翻转数对的奇偶性 \(o \in \{0, 1\}\),然后分类讨论是否翻转 \(i\),是否翻转 \(i + 1\),得到 4 个转移方程(为了方便,下文中 \(a \gets b\) 表示 \(a \gets a \or b\)):

  1. 不翻转 \(i\) 也不翻转 \(i + 1\)\(f(i + 1, 0, o) \gets f(i, 0, o) \and (a_{i + 1} > a_{i}) \and (b_{i + 1} > b_{i})\)
  2. 其它三种情况类似。

初始化 \(f(1, 0, 0) = f(1, 1, 1) = 1\),答案为 \(f(n, 0, 0) \or f(n, 1, 0)\)

AC 记录

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

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

相关文章

掌握这些 UI 交互设计原则,提升产品易用性

在当今数字化时代,用户对于产品的体验要求越来越高,UI 交互设计成为决定产品成败的关键因素之一。一个易用的产品能够让用户轻松、高效地完成各种操作,而实现这一目标的核心在于遵循一系列科学合理的 UI 交互设计原则。本文将详细阐述简洁性、一致性、反馈、可访问性以及用户…

C++ this

今天开始进入C++学习了,之前的这周末复习下 侧重与底层原理 当把函数放到结构体里面,编译器会帮我们传递一个参数:结构体的地址this指针本质就是对象地址

【由技及道】镜像星门开启:Harbor镜像推送的量子跃迁艺术【人工智障AI2077的开发日志010】

当构建产物需要穿越多维宇宙时,当Docker镜像要同时存在于72个平行世界——这就是镜像推送的量子艺术。本文记录一个未来AI如何通过Harbor建立镜像星门,让每个构建产物都能瞬间抵达所有维度。![量子镜像跃迁示意图]( 摘要:当构建产物需要穿越多维宇宙时,当Docker镜像要同时存…

构造矩形

构造矩形 题目描述 现有 \(n\) 条长度为 \(m\) 的线段,垂直于 x 轴分布,且互不重合。第 \(i\) 条线段的两个端点均为整数点,分别为 \((a_i, 0)\) 和 \((a_i, m)\)。每条线段上有 \(m+1\) 个整数点,纵坐标分别为 \(0, 1, 2, …, m\)。 现在,你需要选择两条不同的线段,并在…

Llama 4 即将发布,引入语音能力;AI 智能运动眼镜 BleeqUp:实时对讲、AI 自动成片等功能丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看点的 活动 」,但内容仅代表编辑…

BigDecimal类--java进阶day05

1.BigDecimal出现的原因2.BigDecimal的创建不推荐第一种形式,会有误差第二种方式创建对象第三种方式调用方法2.BigDecimal常用方法除法的特殊事项 如果有除不尽的情况,常规的除法会出现问题divide的另一种方法 divide还有一个重载方法,可以解决除不尽的问题舍入模式中,进一…

3.10 学习记录

实现了员工页面的前端代码实现点击查看代码 <script setup> import { ref, onMounted } from vue import axios from axiosconst searchEmp = ref({name: ,gender: ,job: , })onMounted(() => {search(); })const search = async () => {const url = `https://web-…

transformer 中的掩码类型

知识是我们已知的也是我们未知的基于已有的知识之上我们去发现未知的由此,知识得到扩充我们获得的知识越多未知的知识就会更多因而,知识扩充永无止境

如何设计、维护和推广 API:专业人士的实用指南

API 在今天的数字化环境中扮演着至关重要的角色,它们作为系统和应用程序之间的连接纽带。对于公司而言,打造用户喜爱的 API、有效地维护它们并成功地在内部和外部推广,不仅能提高数字价值,还能带来巨大的业务收益。 API 设计是创建一个标准化、易于理解且稳定的应用程序接口…

springboot引入nacos

springboot引入nacos 一、 环境准备(windows为例)安装nacos(github镜像网址:Releases alibaba/nacos) 推荐下载发行版启动nacos本地服务 下载完毕,建议解压到没有中文路径的文件夹,在bin目录下打开cmd对话框输入下面命令启动nacos startup.cmd -m standalone启动成功出现以…

95%开发者不知道的调试黑科技:Apipost让WebSocket开发效率翻倍的秘密

在现代 Web 开发中,Websocket 作为一种常见的 Web 协议,与 Restful API 有着本质的不同。Restful API是基于请求-响应模式的单向通信,而 WebSocket 提供全双工通信渠道,允许客户端和服务器之间进行实时双向数据传输。这种特性使得它在需要实时交互的场景中大放异彩,比如 I…

题解:P9221 「TAOI-1」Pentiment

P9221 解题报告 一眼线段树优化 dp,但是调了7h。 首先考虑朴素 dp,设 \(dp_{i,j}\) 表示走到第 \(i\) 行第 \(j\) 列的方案数,转移: \[dp_{i,j}=\sum dp_{i-1,k} \]其中 \(k\) 表示第 \(i\) 行可以走到 \(j\) 的列。 比如如果第 \(i\) 行是下面这种情况:当 \(j=3\) 时,\(…