HDU4193 Least common multiple

题目描述:戳这里
题解:
这题中对于一个子集,它的最小公倍数一定是 2max(a[i])3max(b[i]) 2 m a x ( a [ i ] ) ∗ 3 m a x ( b [ i ] )
那么一个子集的LCM只取决于它之中a[i]最大的元素和b[i]最大的元素。
那么对于每一个点对(a[i],b[i])我们可以排序一维,使它的a有序。
那么考虑排序后的第i个元素,我们只考虑它和前面的数组成的集合。
如果只和所有b[j] < b[i]的数组成集合,max(a)=a[i],max(b)=b[i]
否则我们就要求 b[j]>b[i]2a[i]3b[j] ∑ b [ j ] > b [ i ] 2 a [ i ] ∗ 3 b [ j ]
那么我们就可以用线段树维护一下从id[b[i]]+1 ~ n这一段离散后 3b[j] 3 b [ j ] 的加和。
i做完之后将i也加进线段树,update一下就好了。

代码如下:

我是代码(可能以后会有真的代码。。。)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值