[BZOJ1441&BZOJ2257&BZOJ2299]裴蜀定理
裴蜀定理
对于整系数方程ax+by=m,设d =(a,b)
方程有整数解当且仅当d|m
这个定理实际上在之前学习拓展欧几里得解不定方程的时候就已经运用到
拓展到多元的方程一样适用
BZOJ1441 给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1*X1+...An*Xn>0,且S的值最小
该方程有解当且仅当gcd(A1...AN)|s
要求s的值最小,那么答案就是gcd(A1..AN)
BZOJ2257 jyy就一直想着尽快回地球,可惜他飞船的燃料不够了。
有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换。jyy
的飞船上共有 N个瓶子(1<=N<=1000) ,经过协商,火星人只要其中的K 个 。 jyy
将 K个瓶子交给火星人之后,火星人用它们装一些燃料给 jyy。所有的瓶子都没有刻度,只
在瓶口标注了容量,第i个瓶子的容量为Vi(Vi 为整数,并且满足1<=Vi<=1000000000 ) 。
火星人比较吝啬,他们并不会把所有的瓶子都装满燃料。他们拿到瓶子后,会跑到燃料
库里鼓捣一通,弄出一小点燃料来交差。jyy当然知道他们会来这一手,于是事先了解了火
星人鼓捣的具体内容。火星人在燃料库里只会做如下的3种操作:1、将某个瓶子装满燃料;
2、将某个瓶子中的燃料全部倒回燃料库;3、将燃料从瓶子a倒向瓶子b,直到瓶子b满
或者瓶子a空。燃料倾倒过程中的损耗可以忽略。火星人拿出的燃料,当然是这些操作能
得到的最小正体积。
jyy知道,对于不同的瓶子组合,火星人可能会被迫给出不同体积的燃料。jyy希望找
到最优的瓶子组合,使得火星人给出尽量多的燃料。
我们思考两个瓶子,设它们的容量为x,y,d=(x,y)
很容易看出不管怎么倒它们中的容量都是d的倍数
再思考两个容量互质的瓶子,设它们的容量为a,b
由于玩过某个CHL推荐的“高智商倒水游戏”...然后可以发现不论如何都可以倒到1
容量gcd为d的状态可以看做每滴水的重量为d,然后看做两个容量互质的瓶子,这样最后剩下d的水
猜想可以拓展到n的情况,也就是火星人倒的水应该是k个瓶子容量的最小公约数
然后就在n个数里挑k个数使得它们的最小公约数最大
把所有数的因子挑出来,从大到小一旦出现的次数超过k次就可以直接输出
看做可以做无限次的加减2a,2b(x和y中都可以),和不超过1次的(x+a,y+b)(x+b,y+a)操作
为什么不是减?其实加减一样因为都可以通过前面的2a,2b操作得到
然后就可以直接裴蜀定理判定啦
END.
15 Apr.