首页 > 其他分享 >[ARC126C] Maximize GCD

[ARC126C] Maximize GCD

时间:2023-08-15 19:11:12浏览次数:49  
标签:dots GCD max 最大值 ARC126C 枚举 Maximize kx gcd

设 \(a_x\) 为数列 \(a\) 中的最大值。

一般来说,与其处理 \(x | \gcd(A_1,\dots,A_N)\) ,处理 \(x = \gcd(A_1,\dots,A_N)\) 更加容易。这是因为后者能够被分解为各个元素:\(\forall i,x | A_i\)。

因此,我们将解决下面这个问题而不是原来的问题。

寻找 \(x\) 的最大值,这样就有可能在运算后得到 \(x | \gcd(A_1,\dots,A_N)\)。

假设 \(K\) 足够大,能够使得序列中每一个值都加到 \(a_{\max}\),那我们就先把每个值都加到 \(a_{\max}\),剩下的操作数再平均分配到每一个元素。

如果 \(K\) 不能使得序列中每一个值都加到 \(a_{\max}\),我们能够发现,答案的最大值不超过 \(a_{\max}\),也就是不超过 \(3 \times 10^5\)。

这个范围我们完全可以从大到小枚举 \(x\) 的值。

如何枚举 \(x\) 的值?

设 \(k\) 为一个整数,并且计算出对于所有 \(A_i\) 能够满足 \((k - 1)x < A_i \leq kx\) 的操作数。

我们可以计算出一个值域 \(\left(kx - x,kx \right]\) 内 \(A_i\) 的个数和 \(A_i\) 的和。由于是静态的,直接前缀和统计就可以。

这样枚举中找到满足需要的操作次数不大于 \(K\) 的 \(x\) 的最大值。

标签:dots,GCD,max,最大值,ARC126C,枚举,Maximize,kx,gcd
From: https://www.cnblogs.com/baijian0212/p/solution-at-arc126c.html

相关文章

  • [ARC126C] Maximize GCD 题解
    题意给定一个序列\(A\),每次操作可以使\(A_i+1\)(\(i\in\left[1,n\right]\),\(K\)次操作的\(i\)可以不同),最多可以做\(K\)次。问\(\gcd{A_1,A_2,...,A_n}\)的最大值。题解首先,如果\(K\)可以把当前序列中所有的数都加到\(A_{\max}\),那就全部加到\(A_{\max}\),在......
  • 算法学习笔记-exgcd
    前言:\(\operatorname{exgcd}\),顾名思义,是\(\gcd\)的一种扩展。\(\gcd\)是求最大公因数,所用到的是辗转相除法,基于\(\gcd(a,b)=\gcd(b,a\modb)(a>b)\)的原理,在学习\(\operatorname{exgcd}\)前,请确保已掌握\(\gcd\),并懂得一点数学归纳法。如果您已掌握这些前置知识,请开......
  • P2568 GCD
    Question问题P2568GCD\[\sum_{p\inprime}\sum_{i=1}^n\sum_{j=1}^n[\gcd(i,j)==p]\]Analysis分析1(所以肯定有第二种思考的方法,看后面(目前没写))变形\[\sum_{p\inprime}\sum_{i=1}^{\lfloor{\fracnp}\rfloor}\sum_{j=1}^{\lfloor{\fracnp}\rfloor}[\gcd(i,j)......
  • P2257 YY的GCD
    传送门首先得到一个非常显然的柿子\[\sum_{p}\sum_{d}\lfloor\frac{n}{pd}\rfloor\lfloor\frac{m}{pd}\rfloor\]我们可以考虑T=pd,然后转化柿子\[\sum_{T}\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\sum_{p|T}\mu(\frac{T}{p})\]后面这一块可以预处理。......
  • GCD
    GCD洛谷题目描述一张图有\(n\)个节点,编号为\(1,2,3,\dots,n\)。其中\(i\)号节点会向\(j\)号节点连一条边权为\(|i-j|\)的无向边,当且仅当\(\gcd(i,j)=i,\operatorname{lcm}(i,j)=j\)时连边。现询问\(q\)次,每次询问求\(x\)到\(y\)的最短路径。输入格式第一......
  • hdu7319 String and GCD
    StringandGCD首先我们需要用kmp的fail建树,然后需要利用到欧拉反演。\[n=\sum_{d|n}\varphi(d)\]对于这题来说\[(i,j)=\sum_{d|(i,j)}\varphi(d)=\sum_{d|i,d|j}\varphi(d)\]那么我们只需要用一个桶存每个约数从根到当前节点出现了多少次。然后枚举约数也有一个技巧,具体......
  • 【模板】数论基础:exGCD,exCRT,inverse,Lucas,BSGS,primitive root
    7.29数论WIP\(a\equivb\pmodp\Rightarrow\frac{a}{d}\equiv\frac{b}{d}\pmod{\frac{p}{d}},d=\gcd(a,b,p)\)。exGCD若\((a,b)=1\),则\(0\leqx<b\),\(ax\bmodb\)互不相同,有一个是\(1\)。证明:\(ax_1\equivax_2\pmodb\)则\((x_1-x_2)a|b\),因为......
  • 题解 HDU5726【GCD】/ LGT353762【Soso 的最大公约数】
    Problem给你一个长为\(N(1\leqN\leq1\times10^5)\)的整数序列:\(a_{1},\cdots,a_{n}(0<a_{i}\leq1\times10^9)\)。有\(Q(1\leqQ\leq1\times10^5)\)次提问。每次提问有个范围\(l,r\),你需要计算出\(\gcd(a_{l},,a_{l+1},...,a_{r})\),并且统计数对\((l’,r’......
  • [LeetCode] 2024. Maximize the Confusion of an Exam
    Ateacheriswritingatestwith n true/falsequestions,with 'T' denotingtrueand 'F' denotingfalse.Hewantstoconfusethestudentsby maximizing thenumberof consecutive questionswiththe same answer(multipletruesormultiple......
  • 【蓝桥杯_真题演练】第十届C/C++省赛B组_H-等差数列(C++_gcd_数论)
    ProblemProcess在输入的时候先去重,然后进行排序,至于他们的公差p则需要计算每两个相邻数值之间差值的最大公因数,最终的结果应该是Code#include<bits/stdc++.h>usingnamespacestd;#definelllonglongintn,a[100010],cnt;set<int>s;intgcd(inta,intb){ returnb==......