首页 > 其他分享 >CF571E Geometric Progressions

CF571E Geometric Progressions

时间:2023-12-13 19:13:29浏览次数:21  
标签:le CF571E 合并 AB Progressions Geometric

CF571E Geometric Progressions

洛谷:CF571E Geometric Progressions

Codeforces:CF571E Geometric Progressions

Problem

  • 给定 \(n\) 以及 \(n\) 个正整数对 \(a_i, b_i\)。
  • 第 \(i\) 对 \(a_i, b_i\) 确定了一个序列 \(\{a_i, a_i b_i, a_i b_i^2, a_i b_i^3, \ldots \}\)。
  • 询问最小的在 \(n\) 个序列中都有出现的数,或者判断不存在。
  • \(n \le 100\),\(a_i, b_i \le {10}^9\),答案对 \({10}^9 + 7\) 取模。

Solution

首先特判掉答案为某个 \(a_{i}\)。

否则,记 \(S(A)\) 表示 \(A\) 的本质不同质因数集合。

若 \(\exists 1 \le i < j \le n, S(a_{i}) \cup S(b_{i}) \neq S(a_{j}) \cup S(b_{j})\),则无解。下记 \(P = S(a_{i}) \cup S(b_{i})\)。

假设最终答案的形式在每一组序列中表述为 \(a_{i}b_{i}^{k_{i}}\)。

从前往后合并每一组 \(a_{i}b_{i}^{k_{i}}\) 形式的限制,将合并完前若干组后的可行答案写成 最小表示 \(AB^{K}\)。

假设当前考察将 \(AB^{K}\) 与 \(a_{i}b_{i}^{k_{i}}\) 进行合并。

对每个 \(p \in P\) 分别考虑,记 \(c_{p}(A)\) 表示 \(A\) 唯一分解后包含的质因数 \(p\) 的个数。则可以列出 \(|P|\) 个方程:

\[\begin{aligned} c_{p}(a_{i}) + k_{i}c_{p}(b_{i}) = c_{p}(A) + Kc_{p}(B) \\ \end{aligned} \]

合并这 \(|P|\) 个方程,会出现如下结果:

  • 在合并过程中判断无解。

  • 可以直接解出 \(K\),确定唯一的可行解,退出循环,并判断它是否能作为最后的答案。

  • 否则最后只留下一个有效的不定方程 \(uK + vk_{i} = w\),可以用扩展欧几里得算法算出最小可行 \(K\)(或最小可行 \(k_{i}\)。本质是取最小 \(W = AB^{K} = a_{i}b_{i}^{k_{i}}\)),使得 \(AB^{K} = a_{i}b_{i}^{k_{i}}\)。

    然后考虑合并完后的答案表示为 \(A^{'}{B^{'}}^{K^{'}}\)。需有 \(A^{'}{B^{'}}^{K^{'}} = AB^{K}\times B^{x} = a_{i}b_{i}^{k_{i}} \times b_{i}^{y}\)。

    取 \(A^{'} = AB^{K} = a_{i}b_{i}^{k_{i}}\),\(B^{'} = \prod\limits_{p \in P}p^{\operatorname{lcm}(c_{p}(B), c_{p}(b_{i}))}\),进行下一次合并。

肯定不能直接存下 \(A, B\),要手写一个类型存每种质因数的个数以及各种运算。次数会爆 int,但不会爆 long long

简直可以称为 “扩展ExCRT”。实现可以参考 xht

code CF571E

标签:le,CF571E,合并,AB,Progressions,Geometric
From: https://www.cnblogs.com/Schucking-Sattin/p/17899737.html

相关文章

  • import torch_geometric报错Could not find module '...\torch_sparse\_convert_cpu
    按照官网步骤安装完torch-scatter、torch-sparse、torch-cluster和torch-spline-conv等依赖项,也成功安装了torch_geometric,但在导入的时候还是报错: 原因是没有C++环境,在该网址中https://visualstudio.microsoft.com/visual-cpp-build-tools/下载并安装C/C++DLL动态链接库,即可......
  • 使用Pytorch Geometric 进行链接预测代码示例
    PyTorchGeometric(PyG)是构建图神经网络模型和实验各种图卷积的主要工具。在本文中我们将通过链接预测来对其进行介绍。链接预测答了一个问题:哪两个节点应该相互链接?我们将通过执行“转换分割”,为建模准备数据。为批处理准备专用的图数据加载器。在TorchGeometric中构建一个......
  • CF1661D Progressions Covering 题解
    最详细的题解题目传送门:ProgressionsCovering阅读前人题解时,限于个人能力有限,有一些地方想了好一会儿才懂。发现很多题解都是在@SDLTF_凌亭风等作者基础上延伸,但详细程度依旧有限,尽管这篇题解亦是站在他们基础上延伸的,这篇题解更为详细的点明了很多地方。本人第一次写题解,......
  • 1、pytorch_geometric基本使用
    工具包安装方法:¶一定参考其GITHUB:https://github.com/pyg-team/pytorch_geometric(千万不要pip直接安装,肯定不行的)   In [1]:%matplotlibinlineimporttorchimportnetworkxasnximportmatplotlib.pyplotaspltdefvisualize_gra......
  • GeometricProgression
    [ZJOI2008]骑士如果是一棵树,那么等价于没有上司的舞会。为了方便进行DP,我们将边的方向进行反转。然后我们可以考虑对于每一棵基环树,由于存在环的限制,我们可以断掉基环树上的一条边\((u,j)\),然后分类讨论:\(j\)不选,那么断掉之后\(u\)随意,直接树形DP。\(j\)选,在DP时......
  • Probabilistic and Geometric Depth: Detecting Objects in Perspective(1)
    作者认为单目3D目标检测可以简化为深度估计问题,深度估计不准确限制了检测的性能.已有的算法直接使用孤立实例或者像素估计深度,没有考虑目标之间的集合关系,因此提出了构建预测的目标之间的几何关系图,来促进深度预测.将深度值划分成若干个区间,然后通过分布的期望来计算深度值......
  • 类GeometricShapeFactory-JTS几何图形绘制API
    org.locationtech.jts.util类GeometricShapeFactoryjava.lang.Objectorg.locationtech.jts.util.GeometricShapeFactory直接已知子类:正弦之星工厂公共类GeometricShapeFactory扩展Object计算各种常见的几何形状。提供各种方法来指定所生成形状的位置,范围和旋转,以及用于形成它们......
  • E - Geometric Progression
    E-GeometricProgressionhttps://atcoder.jp/contests/abc293/tasks/abc293_e 思路根据矩阵递推式找出转移矩阵的幂形式。利用矩阵快速幂计算。     ......
  • 题解 ABC293E【Geometric Progression】
    由于模数不一定是大质数,我们不能直接套等比数列求和公式。换一种思路,数列\(\langle1,A,A^2,\cdots,A^{X-1}\rangle\)可以看做线性递推,因此设计矩阵:\[\boldsymbolT=\b......
  • [ABC293E] Geometric Progression 题解
    [ABC293E]GeometricProgression题解神中神数论题目描述给定整数\(A,X,M\),求\[\sum_{i=0}^{X-1}A^i\bmodM\]\(1\leA,M\le10^9\)\(1\leX\le10^......