[每日 D] Multiplicative Arrays

news/2025/1/20 16:46:51/文章来源:https://www.cnblogs.com/YzaCsp/p/18681883

前言

不求晓得这什么难度, 姑且假定是 \(\textrm{div 2 D}\)

思路

初步观察

你发现我们可以看做求这样一组 \(x_i\) 表示一个数字出现的次数, 使得

\[\begin{align} & \prod_{i = 1}^{k} i^{x_i} = C \\ & \sum_{i = 1}^{k} x_i = n \\ \end{align} \]

然后这样一组 \(x_i\) 对答案的贡献是一个多重集排列

\[\frac{n!}{\prod_{i = 1}^{k} x_i!} \]

显然你可以对 \(x_i\) \(\rm{dp}\) , 计算答案即可

具体一点
\(dp_{i, j, p}\) 表示考虑到数 \(i\) , 前面的乘积为 \(j\) , 和为 \(p\) 的方案数

这样子开都开不下无法转移, 但是你有一个观察

  • \(n\) 比较大的时候, 一定会有很大一部分都是 \(1\) , \(p\) 有用的部分只有 \(\log k\) 大小

\(\rm{dp}\) 计算分组

所以考虑转移, 这个时候我们从 \(i = 2\) 开始考虑

也就是说, 我们把问题修改成:
求一组 \(x_i, i \in [2, k]\)

\[\begin{align*} & \prod_{i = 2}^{k} i^{x_i} = C \\ & x_1 = n - \sum_{i = 2}^{k} x_i \\ \end{align*} \]

贡献还是

\[\begin{align*} &\frac{n!}{\prod_{i = 1}^{k} x_i!} \\ = & \frac{(x_1 + 1) \times (x_1 + 2) \times (x_1 + 3) \times \cdots n}{\prod_{i = 2}^{k} x_i!} \end{align*}\]

转移, 初始化 \(dp_{1, 1, 0} = 1\)

\[dp_{i, i^{x_i}j, p + x_i} \gets \sum_{x_i}^{i^{x_i}j \leq C, k + x_i \leq \log n} \frac{dp_{i - 1, j, p}}{x_i!} \]

容易发现枚举 \(x_i\)\(\log k\) 的, 枚举 \(p\)\(\log k\)
枚举 \(j\) 比较特殊, 对于一个确定的 \(x_i\) , 复杂度是 \(\frac{k}{i^{x_i}}\)
总复杂度只能证明是 \(k \log k \sim k^2\) 的, 不过感性理解是不大的


推的很乱, 整理一下

目标是找到一组分配 \(x\) , 使其满足

\[\begin{align*} & \prod_{i = 2}^{k} i^{x_i} = C \\ & x_1 = n - \sum_{i = 2}^{k} x_i \\ \end{align*} \]

然后计算方法
转移, 初始化 \(dp_{1, 1, 0} = 1\)

\[dp_{i, i^{x_i}j, p + x_i} \gets \sum_{x_i}^{i^{x_i}j \leq C, k + x_i \leq \log n} \frac{dp_{i - 1, j, p}}{x_i!} \]

计算答案

考虑答案计算

\[\begin{align*} ans_{x} \gets & \sum_{L = 1}^{n} \sum_{i = 1}^{\min (\log k, L)} dp_{k, x, i} \times [(L - i + 1) \times (L - i + 2) \times (L - i + 3) \times \cdots \times L] \\ = & \sum_{i = 1}^{\log k} dp_{k, x, i} \times \left\{\sum_{L = i}^{n} [(L - i + 1) \times (L - i + 2) \times (L - i + 3) \times \cdots \times L]\right\} \\ = & \sum_{i = 1}^{\log k} dp_{k, x, i} \times \left\{\sum_{L = i}^{n} \frac{L!}{(L - i)!}\right\} \\ = & \sum_{i = 1}^{\log k} dp_{k, x, i} \times \left\{\sum_{L = i}^{n} \frac{L!}{(L - i)!i!}\right\} \times i! \\ = & \sum_{i = 1}^{\log k} dp_{k, x, i} \times \left\{\sum_{L = i}^{n} {L \choose i}\right\} \times i! \\ = & \sum_{i = 1}^{\log k} dp_{k, x, i} \times \left\{\sum_{L = 1}^{n} {L \choose i}\right\} \times i! \\ = & \sum_{i = 1}^{\log k} dp_{k, x, i} \times \left\{{n + 1 \choose i + 1}\right\} \times i! \\ \end{align*}\]

主要问题是 \(\displaystyle {n + 1 \choose i + 1}\) 怎么计算

你发现拆开之后

\[\begin{align*} & {n + 1 \choose i + 1} \\ = & \frac{(n - i + 1) \times (n - i + 2) \times \cdots \times (n + 1)} {(i + 1)!} \end{align*}\]

\((i + 1)!\) 逆元预处理, 上面的暴力计算即可

总结

多重集排列魅力时刻

一类常见的 \(\rm{dp}\) 方式
属于套路吧

遇到长得像组合数形式的考虑配成组合数形式

永远要相信自己, 心态要冷静, 耐心一点
时间分配还需要更冷静一点

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

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

相关文章

2025/1/20

今天继续学习Android Studio,学习了布局,有LinearLayout、相对布局、FrameLayout的布局方式,学习了各个组件内部的小组件,以及TextView 和View的基础控件,用手机usb进行调试,突发奇想,想整一个简单的app,调试成功后,关闭电脑程序,手机端app会卡退,了解到需要apk的知…

manim边做边学--交替变换

今天,我们将介绍 Manim 中两个用于交替变换的动画类:CyclicReplace 和 Swap。 无论是在展示数学概念的动态变化,还是在图形设计中呈现元素的巧妙交互,这两个动画类都扮演着重要角色。 它们以各自独特的方式,为我们提供了丰富的创意表达空间。CyclicReplace:循环替换一组对…

认识西门子ET 200SP分布式I/O系统的接口模块

文章来源:认识西门子ET 200SP分布式I/O系统的接口模块西门子ET 200SP分布式I/O系统由接口模块和信号模块组成,信号模块插接在底板上,通过底板与接口模块相连接。一个接口模块可以连接多个信号模块,具体的数量与接口模块的类型有关。今天这篇文章,我们来介绍下接口模块。 接…

【DingTalk】JsApi 地理位置相关

最近接手同事新开的半成品项目,钉钉嵌入的地图API测试中出现了BUG 钉钉API文档见此: https://open.dingtalk.com/document/orgapp/obtain-current-geographic-location-information-single-positioning一、IOS位置获取组件无法打开 安卓手机是可以不需要JSAPI授权配置的,这点…

“国产双系统”出炉!复旦微FMQL20SM非对称AMP:Linux + 裸机

“非对称AMP”双系统是什么 AMP(Asymmetric Multi-Processing),即非对称多处理架构。“非对称AMP”双系统是指多个核心相对独立运行不同的操作系统或裸机应用程序,如Linux + RTOS/裸机,但需一个主核心来控制整个系统以及其它从核心。每个处理器核心相互隔离,拥有属于自己的…

CudaSPONGE与PySAGES初步性能测试

接前一篇关于PySAGES结合CudaSPONGE使用方法的文章,本文主要还是使用了一样的测试案例。仅通过不同的测试步长,来定性的分析PySAGES的MetaDynamics实现方案结合MD软件之后的性能数据。技术背景 在前面的一篇博客中,我们介绍过CudaSPONGE的基础使用方法、CudaSPONGE调用Pytho…

记一次移动光猫(GM219-S)安全测试

前言 过个年,WiFi密码忘记了…光猫管理密码也忘记了(这个光猫也不支持物理按钮重置设置),但是手机还连着WiFi,正规操作找回不了密码,那就用咱们测试的思维来试试PWN掉这个路由器。 过程 未授权获取WiFi连接密码 还好之前没闲着,发现管理的几个未授权访问的接口如下: 获取…

Web安全测试学习手册-业务逻辑测试

首先感谢朋友倾璇的邀请 ,参与了的相关撰写,目前负责业务逻辑测试这一块的撰写,目前初步已经成型,先发出来让大家看看,欢迎点评,也可以加入我们一起来撰写~ 业务逻辑测试 介绍:这里对Web应用业务逻辑方面的安全缺陷进行介绍和常见案例讲解。 任意用户密码重置 常见的缺陷…

串口、COM口、UART口 ;TTL、 RS-232、 RS-485

串口、COM口、UART口TTL、RS-232、RS-485区别首先 串口、COM口、UART口一般指的是硬件接口。而TTL、RS-232、RS-485则是逻辑电平0和1的不同表示标准 它们区别如下:1)和RS232相比,由于RS485采用了差分传输的方式,因此抗干扰能力强很多。TTL抗干扰能力最差。2)像STM32这类单…

ML.NET 图像分类

参考文档:https://www.cnblogs.com/mq0036/p/18302572using MLNET_Image; using static MLNET_Image.MLModel1;namespace MLNET.Image {public partial class MainForm : Form{public MainForm(){InitializeComponent();}private void btnSelectImage_Click(object sender, Ev…

【医疗行业】2024中国网络安全产业势能榜优能企业「医疗行业」典型案例展示

医疗行业涉及大量敏感数据,包括患者的健康信息和医疗记录。因此,医疗数据的保护一直是行业中的重中之重。随着电子病历、远程医疗等新技术的应用,医疗行业面临着更多的网络安全威胁。在本期,我们将展示医疗行业的一些典型案例,探讨如何加强医疗数据保护,保障患者隐私和数…

海康web3.0插件开发,登录成功预览失败

做个记录,使用官方的demo,发现有登录成功,预览和回放失败,代码1000,未知错误,我遇到的情况是获取端口信息错误导致的这个是硬盘录像机原始的配置,虽然配置显示没有启用UPnP,但是插件中的默认获取的端口信息是按照这张表中的外部端口获取的,但是如果你没有启用端口映射…