zoukankan      html  css  js  c++  java
  • bzoj2257瓶子与燃料——最大公约数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2257

    可以知道最终能够导出的燃料一定是瓶子容量的gcd的倍数,所以此题转化为求n个数中k个数的最大gcd;

    暴力枚举一下,放进优先队列里,取最大的、个数>=k个的因数即可。

    代码如下:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    using namespace std;
    priority_queue<int>q;
    int n,v[1005],k;
    int main()
    {
        scanf("%d%d",&n,&k);
        for(int i=1,x;i<=n;i++)
        {
            scanf("%d",&x);
            for(int j=1;j*j<=x;j++)
                if(x%j==0)q.push(j),q.push(x/j);
        }
        while(q.size())
        {
            int t=1;
            int x=q.top();q.pop();
            while(x==q.top()&&q.size())
            {
                t++;q.pop();
            }
            if(t>=k)
            {
                printf("%d",x);return 0;
            }
        }
        printf("1");
        return 0;
    }
  • 相关阅读:
    CF1208C
    CF1208B
    CF1208A
    CF1206A
    wqy的C题
    wqy的B题
    [POI2005]SAM-Toy Cars
    Gym
    操作系统学习---进程
    C++多线程(POSIX)
  • 原文地址:https://www.cnblogs.com/Zinn/p/8982101.html
Copyright © 2011-2022 走看看