HDU4193 Least common multiple

版权声明:原创文章,转载要注明作者哦 https://blog.csdn.net/DYT_B/article/details/81489880

题目描述:戳这里
题解:
这题中对于一个子集,它的最小公倍数一定是 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 ] 2 a [ i ] 3 b [ j ]
那么我们就可以用线段树维护一下从id[b[i]]+1 ~ n这一段离散后 3 b [ j ] 的加和。
i做完之后将i也加进线段树,update一下就好了。

代码如下:

我是代码(可能以后会有真的代码。。。)

猜你喜欢

转载自blog.csdn.net/DYT_B/article/details/81489880