首页 > 其他分享 >[ARC122E] Increasing LCMs

[ARC122E] Increasing LCMs

时间:2023-09-15 17:00:04浏览次数:30  
标签:ARC122E Increasing 数列 gcd 末尾 lcm operatorname LCMs

[ARC122E] Increasing LCMs

Atcoder:[ARC122E] Increasing LCMs

洛谷:[ARC122E] Increasing LCMs

Solution

应该意识到这题的核心思想在于构造,想办法将原问题不断划分为子问题。

此题策略的证明不算太难,但以我目前的水平肯定不可能靠严密的证明做出这道题。

猜,直接把满足条件的数放在末尾,将大小为 \(n\) 的问题划归到大小为 \(n - 1\) 的问题。如果找不到合适的末尾,就输出无解。

对于判断是否能放到末尾,直接求 \(\operatorname{lcm}(a_j)\) 是麻烦的。

把整除的条件写成 \(\gcd(a_i, \operatorname{lcm}(a_j)) < a_i\),即强行套上一个 \(\gcd\)。

考虑利用唯一分解定理,\(\gcd\) 对应次数求 \(\min\),\(\operatorname{lcm}\) 对应次数求 \(\max\),可以进行如下转化:

\[\begin{aligned} & \gcd(a_i, \operatorname{lcm}(a_j)) = \operatorname{lcm}(\gcd(a_i, a_j)) \end{aligned} \]

这就是容易判断的了。

以下是对上述策略的补充说明。

如果数列 \(\{ a_i \}\) 是合法的,并且存在一个元素 \(x = a_p\) 能够放到 \(a\) 数列的末尾,则将 \(x\) 放到末尾后,新数列仍然合法。

对于 \(1 \sim p - 1\) 的数,没有影响。对于 \(p + 1 \sim n\) 的数,\(\operatorname{lcm}(a_j)\) 砍掉了一个 \(x\),因此 \(\gcd(a_i, \operatorname{lcm}(a_j))\) 值不增,这些数仍然合法。

又因为我们钦定了 \(x\) 是能够放到末尾的,所以新数列中的所有位置都是合法的。

假设当前能放到末尾的元素集合为 \(b\),则任取 \(b\) 中的元素放到末尾,均不会影响合法序列的可行性。

根据上一条,如果原数列是合法的,把 \(a_p\) 放到末尾后,剩下的 \(p - 1\) 个数构成的数列也是合法的。

如果原数列是非法的,由于我们的构造是合理的,完全遵循题目要求的规则,因此不可能找到一个合法的数列。

以上。

code ARC122E

标签:ARC122E,Increasing,数列,gcd,末尾,lcm,operatorname,LCMs
From: https://www.cnblogs.com/Schucking-Sattin/p/17705375.html

相关文章

  • Codeforces Round 787 (Div. 3) B. Make It Increasing
    给一个长为\(n\)的数组\(a_1,a_2,\cdots,a_n\quad(0\leqa_i\leq10^9)\)。可以执行以下操作任意次:选择任意一个\(a_i\)并且执行\(a_i=\lfloor\frac{a_i}{2}\rfloor\)。输出最小操作次数,使得数组所有元素变为严格递增。观察:数组一些位置变小,将数组变为严......
  • CF1864A Increasing and Decreasing
    思路首先,给定了一个序列的首项\(a_1\)和末项\(a_n\)以及项数\(n\),要求构造一个严格递增,且差严格递减的序列。因为是构造题,所以可以随便造,考虑差严格递减,所以从后往前构造比较合理。因为严格递增,所以差至少为\(1\),所以\(a_{n-1}\)就构造成\(a_n-1\),\(a_{n-2}\)就构造......
  • [LeetCode][300]longest-increasing-subsequence
    ContentGivenanintegerarraynums,returnthelengthofthelongeststrictlyincreasingsubsequence. Example1:Input:nums=[10,9,2,5,3,7,101,18]Output:4Explanation:Thelongestincreasingsubsequenceis[2,3,7,101],thereforethelengthis4.E......
  • ARC145F Modulo Sum of Increasing Sequences
    为数不多不用多项式科技的单位根反演题。\(A\)不降比较难搞,所以首先令\(B_i=A_i+i-1\),则\(B\)单调递增。转化为对任意的\(k\in[0,\text{MOD}-1]\),求在\([0,N+M-1]\)中选\(N\)个不同的数,总和对\(\text{MOD}\)取模为\(k\)的方案数。记\(p=\text{MOD},n=N+M\)。列出......
  • 950. Reveal Cards In Increasing Order (Medium)
    Description950.RevealCardsInIncreasingOrder(Medium)Youaregivenanintegerarraydeck.Thereisadeckofcardswhereeverycardhasauniqueinteger.Theintegerontheithcardisdeck[i].Youcanorderthedeckinanyorderyouwant.Initially......
  • 【CF1621G】Weighted Increasing Subsequences 题解(优化树状数组)
    CF传送门|LG传送门。优化树状数组+反向处理。Solution发现直接做不好下手。难点主要在求出所有的上升子序列并计算它们分别的贡献。所以需要反向考虑每个单点在什么情况下产生贡献。一个单点会产生多少贡献。一个单点产生贡献的条件很容易得到。一个是在一个上升子序......
  • 「解题报告」CF1621G Weighted Increasing Subsequences
    比较套路的拆贡献题。考虑直接枚举那个\(j\),求有多少包含\(j\)的上升子序列满足这个子序列最后一个数的后面有大于\(a_j\)的数。首先对于\(j\)前面的选择方案是没有影响的,可以直接拿树状数组DP一遍得到。后面的过程我们可以找到从后往前第一个大于\(a_j\)的数的位置......
  • [AGC038C] LCMs
    题目描述给定一个长度为\(N\)的数列\(A_1,A_2,A_3,\ldots,A_N\)。请你求出\(\sum_{i=1}^{N}\sum_{j=i+1}^{N}\mathrm{lcm}(A_i,A_j)\)的值模\(998244353\)的结果。\(1\leqN\leq2\times10^5\),\(1\leqA_i\leq10^6\)。$1\\leq\N\\leq\200......
  • 「题解」ABC292G Count Strictly Increasing Sequences
    没一眼看出来还是拉了。考虑区间dp,\(f_{i,l,r}\)表示\([l,r]\)前\((i-1)\)位都相同,看后面\([i,n]\)位填数使得递增的方案数是多少。这样已经可以做了,但是还不够,要追求一下最简单的写法。想想,发现每次dp是要分为多个儿子乘起来,内部还要搞个dp。但可以改成每次两个儿子......
  • leetcode 674. Longest Continuous Increasing Subsequence
    Givenanunsortedarrayofintegers,findthelengthoflongestcontinuousincreasingsubsequence(subarray).Example1:Input:[1,3,5,4,7]Output:3Explanation:Thelongestcontinuousincreasingsubsequenceis[1,3,5],itslengthis3.Eventhough[1,3,5......