[AHOI2018初中组] 球球的排列

news/2025/1/5 23:33:34/文章来源:https://www.cnblogs.com/YzaCsp/p/18652130

前言

紫题, 启动!

思路

转化题意

对于 \(n\) 个物品, 每个物品拥有特征值 \(a_i\) , 其编号为 \(i\)
一个合法的排列定义为 : \(\forall i \in [1, n) , a_{p_i} \cdot a_{p_i + 1}\) 不是一个完全平方数
求合法排列的数量

这个题听别人讲过, 一如既往地忘掉了

怎么做呢?
看了下 \(\rm{TJ}\) 赤了 \(10\) 分钟的石

考虑根据完全平方数的性质进行一个处理 : 对于 \(a\) 数组中的每一个数字, 将其的所有质因数的偶次消掉, 那么对于现在的 \(a\) 数组, 只有相等的数对才满足原数对乘起来是一个完全平方数

那么你发现数组变成了一个多重集, 我们要计算的是所有多重集排列中, 满足相邻数字不等的方案数

这个问题其实很典啊, 考虑正难则反算不满足条件的方案数, 令 \(f(k)\) 表示「至少」有 \(k\) 对相邻且相等的数对的方案数, 然后常见转化秒了
如何计算 \(f(k)\) ? 我们考虑「钦定」\(k\) 对相邻且相等的数对, 其他的直接乱搞


然后就不会做了, 然后去 讨论区 问, 然后被金钩爷震撼到了


与 某篇题解 一样, 我们考虑先用柿子表示
定义 \(m\) 为颜色总数, \(x_i\) 表示颜色为 \(i\) 的元素数量, \(y_i\) 表示对于颜色 \(i\) , 「钦定」\(y_i\) 个相邻对存在
对于一组确定的 \(y\) , 方案数为:

\[\frac{n - \sum_{i = 1}^{m} y_i}{\prod_{j = 1}^{m} (x_i - y_i)! } \prod_{i = 1}^{m} {x_i - 1 \choose y_i} n! \]

解释一下,

  • \(\displaystyle \prod_{i = 1}^{m} {x_i - 1 \choose y_i}\) : 你发现把一个相同且相邻的对看做一条无向边, 连一条边相当于把一个点加进一个连通块使得这个图不存在环, 同颜色元素个数为 \(x_i\) , 那么最多可以加 \(x_i - 1\) 条边, 组合数选一下即可, 肯定也是不区分顺序的任意选择

  • \(\displaystyle \frac{n - \sum_{i = 1}^{m} y_i}{\prod_{j = 1}^{m} (x_i - y_i)! }\) : 你发现把一个相同且相邻的对看做一条无向边, 连一条边相当于把一个点加进一个连通块使得总的元素数量 \(-1\), 所以「钦定」\(y_i\) 个相邻且相同的对一定会留下 \(x_i - y_i\)\(i\) 颜色的元素, 做一个多重集排列即可

  • \(\displaystyle n!\) : 本题中的本质不同定义为编号不同, 显然的把按照上面规则搞出来的方案全排列一下仍然符合要求


然后你就可以根据这个计算出 \(f(k)\) , 从而推出 \(g(k)\)

具体的, 你可以搞一个 \(\rm{dp}\) 做一下就可以了, 复杂度 \(\And\) 证明在 这篇题解 中有提到, 是 \(\mathcal{O} (n^2)\)

总结

善于利用特殊性质转化问题
本题中利用了完全平方数的性质, 将其转化成常见的多重集, 奇偶次的特性也是完全平方数常见的考点

不好做的问题, 先推柿子

一类相邻对的问题考虑连边之后在图上理解

\(\rm{dp}\)\(f\) 其实很常见的 (哎好像不是第一次说这个了)
特别的是一类按照元素种类作为 \(\rm{dp}\) 状态而非按照位置的 \(\rm{dp}\)
从某种意义上来讲我们可以将其理解成一个特殊的推柿子方式

紫题的含金量还是很高的, 比 [BZOJ4665] 小 w 的喜糖 多了整整 \(1\) 个转化

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

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

相关文章

机房轶事_2

机房轶事_2 之前 机房某同学的Luogu账号被另一个同学破解了密码,并且把头像改成了遗照(配花环)。 更过分的是,他居然将封面改成了教练的照片。

20241403《计算机基础与程序设计》课程总结

20241403《计算机基础与程序设计》课程总结 每周作业链接汇总 第一周作业: 【内容概要】课程概论第二周作业: 【内容概要】①数字化 ②信息安全 ③自学教材第三周作业: 【内容概要】①掌握门和电路 ②学习计算机部件 ③了解冯诺依曼体系结构 ④学习C语言基础知识,第四周作业…

AutoGeaconC2:一款一键读取Profile自动化生成geacon实现跨平台上线CobaltStrike

CobaltStrike是渗透测试中常用的一款基于C2框架的攻击工具。生成Windows payload也很方便。 但在CobaltStrike中如何上线Linux设备呢❓ AutoGeaconC2是一款一键读取Profile自动化生成geacon实现跨平台上线CobaltStrike。目前仅支持Linux amd64上线。 使用 首先下载releases中的…

Nginx-克隆备份虚拟机

克隆备份虚拟机 选中要备份的虚拟机 - 管理 - 克隆 开机状态下 没有办法克隆关机 init 0下一页克隆当前状态选择 创建链接克隆克隆名称 位置完成克隆

activiti6.0.0 二次开发兼容达梦数据库(亲测有效)

一、 前因 最近公司做数据库国产化,数据从MySql数据库中迁移到达梦(DM8),在迁移过程中,当迁移工作流(Activiti6.0.0)时,提换达梦(DM8)数据库驱动后启动过程报错: Caused by: org.activiti.engine.ActivitiException: couldnt deduct database type from database pr…

MYSQL中Join的用法.240430

1、笛卡尔积(没有加筛选条件的内连接) 两表关联,把左表的列和右表的列通过笛卡尔积的形式表达出来。 mysql> select * from t1 join t2;或者 mysql> select * from t1 inner join t2;或者 mysql> select * from t1, t2;2、左连接 两表关联,左表全部保留,右表关联不…

idea左上角project一片绿的解决方法.240712

idea突然project底色一片绿,真的心里慌得一批。。解决方法: 打开File-Settings,按图示找到地方,关闭FileColor,即可。.zstitle { width: 280px; text-align: center; font-size: 26px } .zsimgweixin { width: 280px } .zsimgali { width: 280px; padding: 0px 0px 50px 0…

PCS7 笔记

400H和410H400H系统属于老版本CPU,在售的越来愈少。410H作为400H的替代和更新产品出现。冗余机制同步周期同步 事件同步:在西门子400H/410H cpu中,两个CPU内部的数据,必须保持高度统一,属于西门子冗余PLC的专利,西门子冗余均为事件同步。在西门子400H/410H冗余PLC中,不推…

2024-2025-1 20241411王思棋《计算机基础与程序设计》课程总结

每周作业链接汇总 第一周作业:基于VirtualBox安装Ubuntu,从而安装Linux系统。快速浏览一遍教材计算机科学概论(第七版),课本每章提出至少一个自己不懂的或最想解决的问题并在期末回答这些问题第二周作业:数字化、信息安全第三周作业:数字分类与计数法、位置计数法、进制…

Verilog2_硬件描述语言

Verilog内容总结2_硬件描述语言一、硬件描述语言概述 1.主要的硬件描述语言VHDL(VHSIC HDL): 天然支持并发描述,允许在同一个文件中定义多个并发执行的进程;可读性和可维护性较好,适合于大型项目和团队合作;支持用户定义的数据类型;可以使用抽象类型为系统建模 Verilog…

Nginx-CentOS设置网卡配置固定IP地址

一、未设置网卡前 唔怕ping通网络二、ip addr 查看网络配置 ip addr三、修改 ifcfg-ens33 配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 四、ONBOOT = no 改为 yes (启动操作系统后一并启动网卡)五、重启网卡 systemctl restart network 此时再去ping qq.com的话…