zoukankan      html  css  js  c++  java
  • 牛客网 applese的生日 (优先队列)

    链接:https://www.nowcoder.com/acm/contest/80/D
    来源:牛客网

    applese的生日

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 262144K,其他语言524288K
     64bit IO Format: %lld


    题目描述


        最可爱的applese生日啦,他准备了许多个质量不同的蛋糕,想请一些同学来参加他的派对为他庆生,为了不让一部分同学感到不爽,他决定把每个蛋糕都分割成几份(也可以不分割),使得最小的蛋糕的质量与最大的蛋糕的质量的比值不小于一个值。但是applese的刀功并不是很好,所以他希望切尽量少的刀数使得所得到的蛋糕满足条件。由于applese为了保证每一块蛋糕的质量和期望的没有偏差,所以他一刀只能切下一块蛋糕,即将一块蛋糕分成两块,同时,他不能一刀同时切两块蛋糕,也就是说,applese一次只能将一块蛋糕分割成两块指定质量的蛋糕,这两块蛋糕的质量和应等于切割前的蛋糕的质量。Applese还急着准备各种派对用的饰品呢,于是他把这个问题交给了你,请你告诉他至少要切割几次蛋糕
    输入描述:
    第一行包括两个数T,n,表示有n个蛋糕,最小的蛋糕的质量与最大的蛋糕的质量的比值不小于T接下来n行,每行一个数wi,表示n个蛋糕的质量
    输出描述:
    输出包括一行,为最小切割的刀数数据保证切割次数不超过500

    示例1

    输入

    0.99 3
    2000 3000 4000

    输出

    6


    备注:
    0.5 < T < 11 <= n <= 10001 <= wi <= 1000000

    分析:对于每一块蛋糕,在切割的时候,一定是平均分成相同的质量。

               因为让质量更加集中,肯定是更优秀的。

              由于题目最多不超过500刀,所以我们可以一刀一刀的枚举,每次一定是切当前质量最大的蛋糕

              直到符合要求为止,为了维护当前质量最大的蛋糕,可以使用优先队列。

    代码如下:

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #include <queue>
    using namespace std;
    typedef long long LL;
    struct node
    {
        double x;  //切割前的质量
        int num;  //切割的刀数
        double now; //目前切割情况下的质量
    }a[1010];
    struct Cmp
    {
        bool operator()(const node &x,const node  &y){
            return x.now<y.now;
        }
    };
    priority_queue<node,vector<node>,Cmp> Q;
    int main()
    {
        ios::sync_with_stdio(false);
        double T,maxx,minn;
        int n,ans;
        ans=0;
        cin>>T>>n;
        minn=1e10;
        for(int i=1;i<=n;i++)
       {
          cin>>a[i].x;
          a[i].now=a[i].x;
          a[i].num=0;
          minn=min(minn,a[i].x);
          Q.push(a[i]);
       }
        while(1)
        {
           node k=Q.top();
           if(k.now*T<=minn)
           break;
           ans++;
           Q.pop();
           k.num++;
           k.now=k.x/(k.num+1);
           minn=min(k.now,minn);
           Q.push(k);
        }
        cout<<ans<<endl;
       return 0;
    }
  • 相关阅读:
    Hibernate 总结
    Mybatis 总结
    Mybatis原生DataSource源码解析
    Spring Cloud 服务安全
    Mybatis原生源码解析
    最好的Http客户端--Feign 源码分析
    Zuul整合Hystrix断路器
    Zuul核心-预定义Filter
    Feign性能优化
    Feign整合Ribbon负载均衡
  • 原文地址:https://www.cnblogs.com/a249189046/p/8758533.html
Copyright © 2011-2022 走看看