码迷,mamicode.com
首页 > 移动开发 > 详细

Wannafly挑战赛13 D-applese的生日

时间:2018-04-08 18:10:50      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:priority   pac   empty   return   cpp   operator   tor   strong   queue   

思路:首先要能看出, 对于每个蛋糕,如果分为k份,一定是平均分的;然后记录一下最小重量, 直接把这些蛋糕加到优先队列中,每次判断队列第一个蛋糕与最小值的比是否满足条件即可

Code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5+10;
const ll mod = 998244353;
int n, m;
double T, k, mn;

struct D {
    double a, b;
    int num;
    D() {}
    D(double a, double b, int num) : a(a), b(b), num(num) {}
    bool operator < (const D &t) const {
        return b < t.b;
    }
};

int main() {
    while(~scanf("%lf %d", &T, &n)) {
        priority_queue<D> q;
        int ans = 0;
        mn = mod;
        for(int i = 0; i < n; i++) {
            scanf("%lf", &k);
            q.push(D(k, k, 1));
            mn = min(mn, k);
        }
        while(!q.empty()) {
            D d = q.top(); q.pop();
            if(mn / d.b >= T) break;
            d.num++;
            d.b = d.a / d.num;
            mn = min(d.b, mn);
            ans++;
            q.push(d);
        }
        printf("%d\n", ans);
    }
    return 0;
}

Wannafly挑战赛13 D-applese的生日

标签:priority   pac   empty   return   cpp   operator   tor   strong   queue   

原文地址:https://www.cnblogs.com/0xfff/p/8745974.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!