bzoj2257瓶子和燃料
2024-09-30 03:52:41
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2257
以两个瓶子为例,可以倒出它们的差,这是它们容量的gcd的倍数。
k个瓶子就可以倒出它们容量的gcd的倍数。
由裴蜀定理得可以倒出它们的gcd。所以找出k个数使它们的gcd最大。
一个很妙的方法:把每个容量因数分解,从大到小排序,第一个个数>=k的因数(最大的 >=k个容量拥有它的)就是答案。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int N=1e8+;
priority_queue<int> q;
int n,k,x;
int main()
{
scanf("%d%d",&n,&k);
while(n--)
{
scanf("%d",&x);
for(int i=;i*i<=x;i++)
if(x%i==)q.push(i),q.push(x/i);
}
while()
{
x=q.top();q.pop();int cnt=;
while(q.top()==x&&q.size())q.pop(),cnt++;
if(cnt>=k)
{
printf("%d",x);return ;
}
}
}
最新文章
- cryptkeeper的使用
- Linux C/C++的编译
- APU平台DirectX 12性能测试:超级大惊喜!
- Exchange Server简介与搭建
- 六、saltstack的module组件
- 5事件DOM零级事件跟DOM二级事件
- mongodb的地理空间索引常见的问题
- python调win32api调整屏幕分辨率
- hdu 4107当卡段树
- LeetCode Weekly Contest 47
- 关于python2.7从数据库读取中文显示乱码的问题解决
- iOS - Swift Enumerations or how to annoy Tom
- MySQL学习6 - 完整性约束
- PHP实现类似题库抽题效果
- 最短路径(给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。)
- ADT下载地址(申明:来源于网络)
- go基础知识之变量,类型,常量,函数
- SQL Server复制入门(二)----复制的几种模式 (转载)
- Jmeter发送某个request时而成功,时而失败(处理办法:失败的时候尝试重新发送这个HTTP request)
- Paper Reading - Im2Text: Describing Images Using 1 Million Captioned Photographs ( NIPS 2011 )