首页 > 其他分享 >CF1656H Equal LCM Subsets

CF1656H Equal LCM Subsets

时间:2023-08-16 19:13:43浏览次数:42  
标签:CF1656H log 删掉 Equal 因子 次大值 LCM gcd

题面传送门

首先有一个暴力的想法:依次查看左边每个数,对于左边每个数,计算右边未被删除的点与这个点的 \(\gcd\) 的 \(LCM\),如果这个 \(LCM\) 等于当前这个数,说明这个点可以被左边的 \(LCM\) 整除,否则说明这个点不能整除,需要删掉。对于右边同理。这样暴力删除复杂度是 \(O(n^3\log A)\) 的。

考虑删除一个数的时候对这半边的影响,这只会让某些质因子的幂次从最大值变成次大值。考虑两个数 \(a,b\),\(\frac{a}{\gcd(a,b)}\) 中的质因子是 \(a\) 严格幂次大于 \(b\) 的质因子,可以提取出这些质因子,就得到了 \(a\) 对于 \(LCM\) 的贡献。将这些贡献换成次大值之后遍历右边每个数,如果这个数除掉次大值之后仍然和原来的最大值 \(\gcd>1\),则右边的这样的数都需要删掉。因此我们可以以 \(O(n\log A)\) 的代价删掉一个数,总复杂度 \(O(n^2\log A)\)。

因为 \(A\) 特别大,并且取 \(\gcd\) 的次数有点多,跑得很慢。submission

标签:CF1656H,log,删掉,Equal,因子,次大值,LCM,gcd
From: https://www.cnblogs.com/275307894a/p/17635973.html

相关文章

  • CF1188D Make Equal 题解
    题意给定\(n\)个数\(a_1,a_2,\cdots,a_n\),每次操作可以给其中的一个数加上\(2\)的非负整数次幂。求最小的操作次数,使得这\(n\)个数相等。题解首先考虑如何计算操作次数,设\(maxa=\max\limits_{i=1}^{n}a_i\),如果我们把这\(n\)个数操作成了数\(x\)(\(x\gemax......
  • CF1188D Make Equal
    题目大意给出\(n\)个数字\(a_1,a_2,\dots,a_n\),每次操作可以给其中一个数加上\(2\)的非负整数次幂。求最少的操作次数,使得这\(n\)个数相等。思路记\(b_i=\max\limits_{1\leqk\leqn}{a_k}-a_i\),这道题的目的是求一个值\(x\)使得\[\sum_{i=1}^n\operatorname......
  • 服务器数据恢复-EqualLogic存储RAID5硬盘坏道导致存储崩溃的数据恢复案例
    服务器数据恢复环境:一台DELLEqualLogic存储中有一组由16块SAS硬盘组建的RAID5阵列。存储存放虚拟机文件,采用VMFS文件系统,划分了4个lun。服务器故障&检测&分析:存储设备上有两个硬盘指示灯显示黄色,存储不可用。存储设备已经过保。对故障存储中的16块硬盘做硬件故障检测,发现其中......
  • How to compare two linked lists are equal in Python All In One
    HowtocomparetwolinkedlistsareequalinPythonAllInOne在Python中如何比较两个链表是否相等#Definitionforsingly-linkedlist.fromtypingimportOptionalclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=......
  • Django 标签未注册解决办法 Invalid block tag on line 9: 'ifequal'. Did you forget
     这是一个常见问题,但不要担心!一旦您了解了导致模板标记错误的原因,无论是拼写错误、语法还是忘记加载库,就可以轻松修复它。Django中的标签是什么?Django中的标签为Django模板添加了特殊功能,允许您在模板中执行操作。例如,使用标签,您可以以特定格式显示数据、循环访问上下文......
  • LCM Sum[数论+树状数组]
    Problem-E2-Codeforces给一个区间[L,R],询问有多少三元组(i,j,k)满足L=<i<j<k<=r且lcm(i,j,k)>=i+j+k.正难则反。我们可以考虑它的补集。lcm<i+j+k,然后是i+j+k<3*k所以lcm<3k,又因为k是lcm的因数,所以lcm=k或者2k。那么答案变成了求L,R里lcm=k和2k的三元组的数目如果lcm=......
  • == 和 equals 比较的区别?
    让我看下面一个例子:char[]chs={'a','b','c'};Strings1=newString(chs);Strings2=newString(chs);System.out.println(s1==s2);System.out.println(s1.equals(s2));我们定义了一个数组,众所周知,数组是new出来的一个对象,当我们执行第一行代码时,就已经把他放到了堆内存中,......
  • Atcoder ABC307_G-Approximate Equalization 序列dp
    AT_ABC307_G-ApproximateEqualization没想到还有ApproximateEqualizationII!!:AT_ABC313_CDescription:给定一个长度为\(N\)的数列:\(A=(A_1,A_2,···,A_N)\),有两种操作可以以任意顺序进行任意多次(可以为0):\(A[i]-\)=\(1\)且\(A[i+1]+\)=\(1\),\((1\leqi\leqN-1)......
  • Make Equal 题解
    MakeEqual题目大意给出\(n\)个数字\(a_1,a_2,a_3,......,a_n\),每次操作可以给其中一个数加上\(2\)的非负整数次幂。求最少的操作次数,使得这\(n\)个数相等。思路模拟赛看到这道题然后直接打的暴力拿了40分。暴力思路就是你需要找到一个大于等于\(a_{max}\)的\(m\)......
  • P9498 「RiOI-2」equals题解
    题目传送门:P9498「RiOI-2」equals-洛谷|计算机科学教育新生态(luogu.com.cn)这是洛谷月赛Div.2T3,由于我比较菜,只能赛场上切到T3(T4是黑。),开题我们很容易就看出这道题首先需要初始化每个点到根节点的最短路,而且边权都为1,所以我们先无脑打一个堆优化的dijkstra,剩下的就是处......