BZOJ-2257 瓶子和燃料 分解因数+数论方面乱搞(裴蜀定理)
一开始真没想出解法。。。后来发现那么水。。。。
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) ,经过协商,火星人只要其中的K 个 。 jyy
将 K个瓶子交给火星人之后,火星人用它们装一些燃料给 jyy。所有的瓶子都没有刻度,只
在瓶口标注了容量,第i个瓶子的容量为Vi(Vi 为整数,并且满足1<=Vi<=1000000000 ) 。
火星人比较吝啬,他们并不会把所有的瓶子都装满燃料。他们拿到瓶子后,会跑到燃料
库里鼓捣一通,弄出一小点燃料来交差。jyy当然知道他们会来这一手,于是事先了解了火
星人鼓捣的具体内容。火星人在燃料库里只会做如下的3种操作:1、将某个瓶子装满燃料;
2、将某个瓶子中的燃料全部倒回燃料库;3、将燃料从瓶子a倒向瓶子b,直到瓶子b满
或者瓶子a空。燃料倾倒过程中的损耗可以忽略。火星人拿出的燃料,当然是这些操作能
得到的最小正体积。
jyy知道,对于不同的瓶子组合,火星人可能会被迫给出不同体积的燃料。jyy希望找
到最优的瓶子组合,使得火星人给出尽量多的燃料。
Input
第1行:2个整数N,K,
第2..N 行:每行1个整数,第i+1 行的整数为Vi
Output
仅1行,一个整数,表示火星人给出燃料的最大值。
Sample Input
3 2
3
4
4
Sample Output
4
HINT
选择第2 个瓶子和第 个瓶子,火星人被迫会给出4 体积的容量。
Source
首先是裴蜀定理:
若a,b是整数,且(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。
所以结果一定是gcd。那么分解因数,扫描一遍找到最大的,且数量>=k(m)的因数,即为答案
代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int read()
{int x=0,f=1;char ch=getchar();while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}return x*f;
}int n,m;
int yz[10000010];
int cnt=0,num;void work(int x)
{for (int i=1; i<=sqrt(x); i++)if (x%i==0) {yz[++cnt]=i;if (i!=x/i) yz[++cnt]=x/i;}
}int main()
{n=read(),m=read();for (int i=1; i<=n; i++) {int x=read();work(x);}sort(yz+1,yz+cnt+1);num=1;for (int i=cnt; i>=1; i--){if (yz[i]==yz[i+1]) {num++;if (num==m) {printf("%d\n",yz[i+1]);break;}}else num=1;}return 0;
}
转载于:https://www.cnblogs.com/DaD3zZ-Beyonder/p/5346193.html
BZOJ-2257 瓶子和燃料 分解因数+数论方面乱搞(裴蜀定理)相关推荐
- BZOJ 2257: [Jsoi2009]瓶子和燃料【数论:裴蜀定理】
2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1326 Solved: 815 [Submit][St ...
- bzoj 2257[Jsoi2009]瓶子和燃料 数论/裴蜀定理
题目 Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy 的飞船上共有 N个瓶子(1< ...
- bzoj 2257: [Jsoi2009]瓶子和燃料(裴蜀定理)
2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1342 Solved: 823 [Submit][St ...
- 【裴蜀定理】BZOJ 1441 MIN
P4549 [模板]裴蜀定理 这是一道bzoj的权限题,同时又是一道luogu的模板题 在标题上写模板不是很好, 决定放bzoj的名字来撑撑场面 bzoj: 裴蜀定理:dalao题解 显然就很优秀ov ...
- 裴蜀定理详解+例题: BZOJ 1441 MIN
在数论中,裴蜀定理是一个关于最大公约数(或最大公约式)的定理 在数论中,裴蜀定理是一个关于最大公约数(或最大公约式)的定理.裴蜀定理得名于法国数学家艾蒂安·裴蜀,说明了对任何整数a.b和它们的最大公约 ...
- bzoj 1441: Min 裴蜀定理
题目: 给出\(n\)个数\((A_1, ... ,A_n)\)现求一组整数序列\((X_1, ... X_n)\)使得\(S=A_1*X_1+ ...+ A_n*X_n > 0\),且\(S\ ...
- [BZOJ 1441]Min(裴蜀定理)
Description 给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1*X1+...An*Xn>0,且S的值最小 Solution 裴蜀定理: 显然gcd(a,b)| ...
- 【ZOJ - 2955】Interesting Dart Game(背包,结论,裴蜀定理,数论)
题干: Recently, Dearboy buys a dart for his dormitory, but neither Dearboy nor his roommate knows how ...
- Bzoj 1926: [Sdoi2010]粟粟的书架(二分答案+乱搞+主席树)
1926: [Sdoi2010]粟粟的书架 Time Limit: 30 Sec Memory Limit: 552 MB Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱 ...
- ACM数论 裴蜀定理(贝祖定理)
一.内容定义 「裴蜀定理」,又称贝祖定理(Bézout's lemma).是一个关于最大公约数的定理.其内容定义为:对于不全为零的任意整数 a 和 b,记二者的最大公约数为 g 即 gcd(a,b) ...
最新文章
- python编的游戏可以直接玩吗_怎么用python开发游戏?
- Linux下自动检测USB热插拔
- 清华大学刘知远教授新作,图神经网络最佳解锁方式 | 送书福利
- SAP Leonardo平台机器学习API的一些错误处理机制
- html标记ruby,html5 ruby标签的定义及使用方法详解(内有实例介绍)
- SIP应答代码【ZT】
- 微信群接口(开发思路)
- 3-JS-数据类型-数组
- pathinfo 伪静态 详细解析PATH_INFO 和 ORIG_PATH_INFO技术分享
- kerberos的 kdc_设置Kerberos版本5 KDC以使用AES加密
- linux第一周总结
- 我的世界局域网游戏环境搭建
- 逆向某视频直播软件,破解收费观看
- nutch java_Nutch:用Java调用,而不是命令行?
- 手把手教你音乐服务器搭建
- 基于C语言的可靠数据传输协议的设计与实现
- 基础题库:6 打印ASCII码
- CV实战项目--人脸考勤
- 已知方位角和仰角求(单位)方向向量
- P2P--如何让下载的人越多速度越快