首页 > 其他 > 详细

[组合计数题单]整除!整除!

时间:2021-02-15 23:05:46      阅读:30      评论:0      收藏:0      [点我收藏+]

真就举觞白眼望青天了呗,什么都不知道......

壹、题目

给出 \(n\) 个正整数 \(a_i\),要求分别选出 \(n\) 个正整数 \(b_i\)\(d_i\),并且要满足 \(b_i\mid a_i\),且 \(d_i\mid b_i\),求多少种选法满足 \(\prod_{i=1}^nd_i^2>\prod_{i=1}^nb_i\).

贰、题解

题解妙啊~~

注意到 \(\prod_{i=1}^nd_i^2>\prod_{i=1}^nb_i\)\(\prod_{i=1}^nd_i^2<\prod_{i=1}^nb_i\) 是一一对应的,即如果令 \(d_i={b_i\over d_i}\),那么大于小于号就反过来了。

唯一比较特别的就是 \(\prod_{i=1}^nd_i^2=\prod_{i=1}^nb_i\) 的情况,如果我们从所有方案种去除这种情况,那么我们要求的选法数量就是剩下方案数量的 \(1\over 2\) 了。

从质因子的角度考虑,满足 \(\prod_{i=1}^nd_i^2=\prod_{i=1}^nb_i\)\(d_i\) 中每个质因子恰好是所有 \(b_i\) 这个质因子的 \(\frac{1}{2}\),而由于每个质因子是独立的,考虑每个质因子单独做一遍背包,定义 \(f_{i,j}\) 为前 \(i\) 个数,选了质因子的数量 - 没选的质因子的数量的值为 \(j\) 的情况的方案数,具体说明一下,有这样一种情况:

技术分享图片

对于一个质因子,\(a_i\) 的数量是最多的,其次是 \(b_i\),最后是 \(d_i\),如果我们最终要让 \(\prod b_i=\prod d_i^2\),也就是要让每个质因子,\(b_i\)\(d_i\) 的两倍,即对于所有 \(i\),图中红色框框与蓝色框框的数值之和相同,定义这个状态之后,做一个背包就可以了,我们最后要的就是 \(f_{n,0}\).

如果要去掉负数情况,可以考虑使用 \(\tt map\),或者整体平移。

叁、用到の小 \(\tt trick\)

对于一个数 \(a|b\),可以考虑 \(a\)\(\frac{b}{a}\) 之间的关系,例如 \(a,{b\over a}\)\(\sqrt b\) 之间的大小关系是反过来的,没见过

整除、累乘之类的东西,可以尝试往质因子个数方向,而这个 "个数" 通常和背包之类的东西挂钩。

[组合计数题单]整除!整除!

原文:https://www.cnblogs.com/Arextre/p/14403479.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!