1. 程式人生 > >Wannafly挑戰賽13 D-applese的生日

Wannafly挑戰賽13 D-applese的生日

fly 挑戰 思路 -a names spa c++ turn mes

思路:首先要能看出, 對於每個蛋糕,如果分為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的生日