[JSOI2009]瓶子和燃料
[JSOI2009]瓶子和燃料
我们观察这个题面
发现
对于两个瓶子,他能够凑成的所有的数字是
\(x - ky\),\(2x - k'y\),\(3x - k''y\)
之后我们发现,这个和裴蜀定理的公式非常相似,而裴蜀定理的内容是
\(ax+by=c\)有解
当且仅当
\((a,b)|c\)
而题目中的火星人会给你最小化,所以对于两个瓶子,你的收益就是\((x,y)\)
我们类比推到\(k\)个瓶子
其实实际上就是讲将\(k\)个瓶子以此两两合并
所以题目转化成了
选出\(k\)个数,使得他们的\(gcd\)最大
这样的话
我们就要暴力枚举因子
用map记录出现次数更新答案就好了
#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
#include<cctype>
#include<vector>
#include<ctime>
#include<map>
#define LL long long
#define pii pair<int,int>
#define mk make_pair
#define fi first
#define se second
using namespace std;
inline int read(){int v = 0,c = 1;char ch = getchar();while(!isdigit(ch)){if(ch == '-') c = -1;ch = getchar();}while(isdigit(ch)){v = v * 10 + ch - 48;ch = getchar();}return v * c;
}
map <int,int> m;
int n,k,ans;
inline int gcd(int x,int y){return y == 0 ? x : gcd(y,x % y);
}
inline void work(int x){for(int i = 1;1ll * i * i <= x;++i)if(x % i == 0){int r1 = x / i;int r2 = i;if(r1 == r2) --m[r1];int x1 = (++m[r1]);int x2 = (++m[r2]);// printf("%d %d %d %d %d\n",x,r1,r2,x1,x2);if(x1 >= k) ans = max(ans,r1);if(x2 >= k) ans = max(ans,r2);}
}
int main(){n = read(),k = read();for(int i = 1;i <= n;++i){int x = read();work(x);}printf("%d\n",ans);return 0;
}
转载于:https://www.cnblogs.com/wyxdrqc/p/11374186.html
[JSOI2009]瓶子和燃料相关推荐
- BZOJ 2257: [Jsoi2009]瓶子和燃料【数论:裴蜀定理】
2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1326 Solved: 815 [Submit][St ...
- bzoj 2257: [Jsoi2009]瓶子和燃料(裴蜀定理)
2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1342 Solved: 823 [Submit][St ...
- bzoj 2257[Jsoi2009]瓶子和燃料 数论/裴蜀定理
题目 Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy 的飞船上共有 N个瓶子(1< ...
- [luogu4571 JSOI2009] 瓶子和燃料 (数论)
传送门 Solution 题目说的很迷,但可以发现两个瓶子互相倒最少是容积的gcd 那么题目就转化为求其中选k个瓶子gcd的最大值,这个可以分解因数,枚举因数得到 Code //By Menteur_ ...
- BZOJ 2257: [Jsoi2009]瓶子和燃料
题目大意: 有n个数,选择k个数,最大化这些数通过加减能得到的最小的正整数. 题解: 这些数通过加减能得到的最小的数为他们的最大公约数. 题目要求n个数字中选择k个使得他们的最大公约数最大. 枚举所有 ...
- [JSOI2009]瓶子和燃料【数论】
Pro QwQ Sol 手推几组数据就可以发现:答案即为k个数的gcd 所以爆搜出k个出,再暴力求gcd可以过部分数据-- 正解好像和裴蜀定理有关:把n个数的因子都求出来,找出满足因子个数大于等于k的 ...
- bzoj2257瓶子与燃料——最大公约数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2257 可以知道最终能够导出的燃料一定是瓶子容量的gcd的倍数,所以此题转化为求n个数中k个数 ...
- (裴蜀定理)ax + by = m 有解,当且仅当 m 是 gcd(a,b) 的倍数
简介:在数论中,裴蜀定理是一个关于最大公约数(或最大公约式)的定理.裴蜀定理得名于法国数学家艾蒂安·裴蜀,说明了对任 何整数a.b和它们的最大公约数d,关于未知数x和y的线性丢 ...
- 2019.4.summary
2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...
- CodeChef DGCD Dynamic GCD
CodeChef题面 Time limit 210 ms Code length Limit //内存限制也不说一下,真是的-- 50000 B OS Linux Language limit C, ...
最新文章
- [IS-IS] IS-IS路由协议的基本知识及配置
- 聊聊数据库和缓存同步机制
- 计算机网络技术中的NAT,计算机网络技术中的NAT-2.ppt
- 利用github搭建个人maven仓库
- Android --- Binary XML file line2 Binary XML file line 2 Error inflating class unknown
- 全球及中国一次性造口袋行业发展前景预测及投资价值分析报告2021-2027年版
- 重构客户注册-基于ActiveMQ实现短信验证码生产者
- java调用c dll,指针参数和结构体参数搞定
- xctf php序列化,xctf一道反序列化题
- Spark面试题梳理
- ip pssql 登录写法_plsql 连接远程服务器数据库无法登录
- PDF怎么转换成长图
- golang 撤回_golang 连接mongoDB的方法示例
- CSS学习笔记7—盒子模型
- C++实现二叉树 前、中、后序遍历(递归与非递归)非递归实现过程最简洁版本
- rfid考勤系统mysql_通过使用Arduino将Python发送RFID数据到MySQL服务器的考勤系统
- python编写一个程序、判断用户输入的数是正数还是负数_java试编写一程序,可由键盘输入一个整数,然后判断该数值是正数还是负数.(if)...
- 2021跨保计算机实录(浙大软院、中山计院)
- sketch(三)--插件
- 疫情之下的企业该如何生存?
热门文章
- No package ‘libmarco-private‘ found
- 文字处理技术:终于明白了压缩要怎么做
- apt install:文件尺寸不符(25294 != 25412)。您使用的镜像正在同步中?
- 全网首发:为什么依赖库编译时加了-fPIC,还是提示依赖库要使用-fPIC?
- 保留正常工作的环境,等自己的搞好后再替换
- cygwin安装之后,可以复制到其他机器使用
- 百叶窗叶片锋利,不安全
- cygwin下载可以用的服务器
- 测试的重要性:蚊子让快递柜的触摸失灵
- iOS 监听锁屏/解锁事件