bzoj2257】的更多相关文章

[BZOJ2257][JSOI2009]瓶子和燃料(数论) 题面 BZOJ 洛谷 题解 很明显就是从\(n\)个数里面选\(K\)个数让他们的\(gcd\)最大. 暴力找所有数的因数,拿个什么东西存一下就好了. #include<iostream> #include<cstdio> #include<map> using namespace std; #define ll long long #define MAX 1010 inline int read() { in…
题目链接 BZOJ2257 题解 由裴蜀定理我们知道,若干的瓶子如此倾倒最小能凑出的是其\(gcd\) 现在我们需要求出\(n\)个瓶子中选出\(K\)个使\(gcd\)最大 每个数求出因数排序即可 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<map> #define Redge(u…
裴蜀定理 对于整系数方程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就一直想着尽快回地球,可惜他飞船的燃料不够了.有一天他又去向…
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2257 分析: 1.先考虑确定的瓶子下的最小体积是多少 ①假设只有两个瓶子v1,v2,易得最小体积是它们的最大公约数 ②同理可推得,n个瓶子的最小体积就是这n个瓶子的最大公约数 2.于是题目就变成了在n个数字中选取k个数字,使得这k个数字的最大公约数最大 至于这个可以从大到小枚举所有的因数,知道枚举到第一个因数使得这个因数出现的次数>=k…
一开始真没想出解法...后来发现那么水.... 2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 970 Solved: 577 [Submit][Status][Discuss] Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy 的飞船上共有 N个瓶子(1<=N<=1000) ,经过协商,火星人…
不难发现其实这个捣鼓过程就是一个辗转相减所以最小燃料是瓶容量的最小公约数然后穷举约数即可 ..] of longint; n,k,x,i,m,j,t:longint; procedure sort(l,r: longint); var i,j,x,y:longint; begin i:=l; j:=r; x:=a[(l+r) shr ]; repeat while a[i]<x do inc(i); while x<a[j] do dec(j); if not(i>j) then beg…
[Jsoi2009]瓶子和燃料 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1449  Solved: 889[Submit][Status][Discuss] Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy的飞船上共有 N个瓶子(1<=N<=1000) ,经过协商,火星人只要其中的K 个 . jyy将 K个瓶子交给火星人之后,火星…
2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec  Memory Limit: 128 MB Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy的飞船上共有 N个瓶子(1<=N<=1000) ,经过协商,火星人只要其中的K 个 . jyy将 K个瓶子交给火星人之后,火星人用它们装一些燃料给 jyy.所有的瓶子都没有刻度,只在瓶口标注了容量,第i个瓶子的容量…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2257 以两个瓶子为例,可以倒出它们的差,这是它们容量的gcd的倍数. k个瓶子就可以倒出它们容量的gcd的倍数. 由裴蜀定理得可以倒出它们的gcd.所以找出k个数使它们的gcd最大. 一个很妙的方法:把每个容量因数分解,从大到小排序,第一个个数>=k的因数(最大的 >=k个容量拥有它的)就是答案. #include<iostream> #include<cstdio&g…
题目描述 给出 $n$ 个瓶子和无限的水,每个瓶子有一定的容量.每次你可以将一个瓶子装满水,或将A瓶子内的水倒入B瓶子中直到A倒空或B倒满.从中选出 $k$ 个瓶子,使得能够通过这 $k$ 个瓶子凑出的最小体积最大.求这个体积. 输入 第1行:2个整数N,K,  第2..N 行:每行1个整数,第i+1 行的整数为Vi 输出 仅1行,一个整数,表示火星人给出燃料的最大值. 样例输入 3 2 3 4 4 样例输出 4 题解 扩展裴蜀定理+STL-map 显然通过容量为 $v_1,v_2,...,v_…