Wannafly挑戰賽13 D-applese的生日
阿新 • • 發佈:2018-04-08
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的生日