首页 > 其他分享 >裴蜀定理学习记录

裴蜀定理学习记录

时间:2024-07-26 23:39:22浏览次数:11  
标签:记录 ai 定理 aj a1 int a3 裴蜀

1477A - Nezzar and Board

观察到2x-y可以拆成x+(x-y),现在模拟一下这个过程

 

 发现得到的数可以看成从某个点xj出发,加上若干个两数之间的差的形式。

再考虑一下2x-y的几何意义,发现相当于在数轴上做x关于y的对称点,并且和数的分布位置有关,和具体数值是无关的

接下来有一个不太好想的key point:

设S为无限次操作后能得到的数的集合

如果存在0 ∈ S,那么如果x ∈ S,则 nx ∈ S     .........①

又因为可以平移,我们先让所有ai和k一起减去a[1](这里a[1]为a中其他值都一样,只是为了凑出0)

则得到 a1-a1( =0 ),a2-a1,a3-a1...... an-a1,令新得到的数组为a'。

现在问题变成从0出发,每次可以加任意两数的差的绝对值,问是否能得到k-a1。

如果直接暴力处理出所有两数的差,数量是O(n^2)的

但是发现做完差分( a2'-a1',a3'-a2',a4'-a3',a5'-a4' ...)之后,任意两数的差ai'-aj'都可以由(ai'-ai-1')+(ai-1'-ai-2')+...(aj+1'-aj')得到

中间那部分可以消掉,写成 ai'+(-ai-1'+ai-1')+(-ai-2'+ai-2')...(-aj+1'+aj+1')-aj'=ai'-aj'

这是i>j的情况,而i<j的情况可以直接乘个-1,依据是①

也就是我们用O(n)级别的两数差表达了O(n^2)的情况,根据裴蜀定理,问题转化成 k-a1 | gcd( a2'-a1',a3'-a2',a4'-a3',a5'-a4' ...)能否成立 

注:裴蜀定理指的是ax+by=k若有解要求k | gcd(a,b),可以推广到任意多项,证明见:裴蜀定理 - OI Wiki (oi-wiki.org)

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int N = 2e5+5;
int a[N];
void solve(){
    int n,k;cin>>n>>k;
    for(int i=1;i<=n;i++) cin>>a[i];
    k-=a[1];
    for(int i=2;i<=n;i++) a[i]-=a[1];
    a[1]-=a[1];
    int g=0;
    for(int i=2;i<=n;i++){
        g=__gcd(g,abs(a[i]-a[i-1]));
    }
    if(k%g==0){
        cout<<"YES"<<"\n";
    }
    else cout<<"NO"<<"\n";
}
signed main(){
    int t;cin>>t;
    while(t--){
        //TODO
        solve();
    }
}

510D - Fox And Jumping

问题转化为挑出若干个li使得它们的值为gcd(根据裴蜀定理,它们可以线性组合出所有整数),且 Σci 最小

经典背包,dp[i][j] 表示当前考虑到第i个物品,选出来的 li 的gcd值为mp[j]的最小代价

n<=300,所以它们的gcd组合数目不会很多,但又可能很大,解决办法是开一个unordered_map存储,mp[i]表示第i个gcd的值

转移就是经典背包

 

标签:记录,ai,定理,aj,a1,int,a3,裴蜀
From: https://www.cnblogs.com/liyishui2003/p/18326468

相关文章

  • 记录midjourney动漫角色设计提示词
    文章目录前言一、风格测试,不同的风格在同一个词组下的体验二部分提示词使用说明三附加一组设计好之后的动漫角色图片总结前言最近从研究comfyUI到midjourney生图,一并研究了一下对应的角色生成提示词语,从不同的学习途径了解到midjourney生成的动漫角色设计确实不......
  • 关于多项式的做题记录及整理
    最近被多项式制裁了,故开此贴记录一些做过的多项式题及多项式trick。HDU多校Day31004求\((a_{2}x^{2}+a_{1}x+a_{0})^t\)的各项系数,\(t\le10^7\)。Solution设\(F(x)=a_{2}x^{2}+a_{1}x+a_{0}\),\(G(x)=F^t(x)\),那么对\(G(x)\)求导得\[G'(x)=tF'(x)F^{t-1}(x)\]\[G'(x)......
  • DP选讲做题记录 by 付乙淼
    DP选讲P5074EattheTrees最简单的插头DP,轮廓线和插头可以很轻松存储状态和转移。P4719【模板】"动态DP"&动态树分治P5024[NOIP2018提高组]保卫王国动态DP一般就是简单的DP带单点修改,而且给你放到树上,这样你就不得不写树剖,写树剖就需要维护重链,我们就要写出也就是......
  • 裴蜀定理
    裴蜀定理Definition设d=(a,b)则存在两个整数x,y,满足:\[ax+by=d\]Solution首先带入下数据(随便两个整数)例:1410不难看出,gcd(14,10)=2辗转相除法:(a,b)=(b,amodb)\(\cfrac{14}{10}=1...4\)\(\cfrac{10}4=2...2\)\(\cfrac42=2...0\)当(amodb)=0时,结束,取最后一次的商......
  • 【小白记录深度学习】——物理信息神经网络(PINNs)
    本文的内容基于论文解读,解读的论文为Physics-InformedNeuralNetworksforShellStructures和RecentAdvancesandApplicationsofMachineLearninginExperimentalSolidMechanics:AReview什么是物理信息神经网络PINNs(Physics-informedNeuralNetworks,物理信息神......
  • 【和为 K 的子数组】python刷题记录
    这就到前缀和了。classSolution:defsubarraySum(self,nums:List[int],k:int)->int:#连续不能sortnum=len(nums)i=0j=i+1sm=0ret=0#j可以=是因为后面切片不包括jwhilej<=num:......
  • JAVA集中学习第二周学习记录(四)
    系列文章目录第一章JAVA集中学习第一周学习记录(一)第二章JAVA集中学习第一周项目实践第三章JAVA集中学习第一周学习记录(二)第四章JAVA集中学习第一周课后习题第五章JAVA集中学习第二周学习记录(一)第六章JAVA集中学习第二周项目实践第七章JAVA集中学习第二......
  • 基础数论 欧拉定理与exgcd
    欧拉定理:若正整数\(a,n\)互质,则\(a^{\varphi(p)}\equiv1(\bmodp)\)推论(扩展欧拉定理):\[a^b\equiv\begin{cases}a^{b\\bmod\\varphi(p)}\\\\\\\\\\gcd(a,p)=1\\a^b\\\\\\\\\\\\\\\\\\\\\\gcd(a,p)!......
  • 记录一种反编译开源软件Dhidra(基多拉)
    反编译软件Ghidra安装及使用一、安装JDK前往JDK官网下载对应平台的JDK安装包(windows可下载x64MSIInstaller),不建议下载最新版本。双击安装包进行安装。配置环境变量,添加名称JAVA_HOME,路径为电脑安装JDK的文件夹目录D:\JDK。添加名称CLASSPATH,内容为:.;%JAVA_HOME%\lib\dt.jar......
  • 【MySQL进阶之路 | 高级篇】行锁之记录锁和间隙锁
    1.InnoDB的行锁行锁(rowlock)也称为记录锁。顾名思义,就是锁住某一行(某个记录row)。需要注意的是,MySQL服务层并没有行锁机制,行级锁只在存储引擎层实现。优点:锁定力度小,发生锁冲突概率低,可以实现的并发度高。缺点:对于锁的开销比较大,加锁会比较慢,容易出现死锁的情况。InnoDB与M......