zoukankan      html  css  js  c++  java
  • 学习裴蜀定理

    主要参考:https://www.luogu.org/problemnew/solution/P4549

    题目描述

    给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1X1+...AnXn>0,且S的值最小

    输入格式

    第一行给出数字N,代表有N个数 下面一行给出N个数

    输出格式

    S的最小值

    输入输出样例

    输入 #1
    2
    4059 -1782
    
    输出 #1
    99

    说明/提示

    对于100%的数据,1n20,xi100000


    【题解】:

      其实洛谷题解区已经解释了很清楚了,其实就是ax+by=c,是不是很熟悉呢???

      没错,这个就是拓展欧几里得算法的模式,但是拓欧求解的方向不同,拓欧求解的方向是x,y,

      这个的求解方向是,c。

      裴蜀定理其实讲的就一个式子,

      gcd(a,b) | c   <=> ax + by = c , a b c 均属于 Z+

      然后其实,这个题目,我们可以想到,ax+by,其实就是线性组合成的C,目前我们想要最小化C。

      其实就是 ax + by = gcd(a,b),此时x,y都是变量可以任意取值。

      所以答案就是所有系数gcd一起。


     1 #include<cstdio>
     2 #include<algorithm>
     3 typedef long long ll;
     4 using namespace std;
     5 ll x;
     6 ll ans ;
     7 int n;
     8 ll gcd( ll a,ll b ){
     9     return b == 0 ? a : gcd(b,a%b);
    10 }
    11 int main()
    12 {
    13     scanf("%d",&n);
    14     ll ans = 0;
    15     for(int i=1;i<=n;i++){
    16         scanf("%lld",&x);
    17         if ( x < 0 ) x = -x ;
    18         ans = gcd( x , ans );
    19     }
    20     return printf("%lld
    ",ans)*0;
    21 }
    裴蜀定理
  • 相关阅读:
    面试干货——年底干货大放送,你准备好了吗?(转)
    JavaScript学习 三、变量、作用域和内存
    JavaScript学习 二、基础
    JavaScript学习 一、简介
    从统计看机器学习常见算法
    [zz]unity 性能优化
    游戏统计指标
    [zz]sql优化相关
    [zz]sql语句执行顺序
    unity 链接
  • 原文地址:https://www.cnblogs.com/Osea/p/11279276.html
Copyright © 2011-2022 走看看