题解:P13212 [GCJ 2015 Qualification] Infinite House of Pancakes
AC代码:
#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
int solve(vector<int>& plates) {
int max_p = *max_element(plates.begin(), plates.end());
if (max_p <= 1) {
return max_p;
}
int res = max_p;
for (int k = 2; k <= max_p; ++k) {
int total_moves = 0;
for (int p : plates) {
total_moves += (p - 1) / k;
}
res = min(res, total_moves + k);
}
return res;
}
int main() {
int T;
cin >> T;
for (int t = 1; t <= T; ++t) {
int D;
cin >> D;
vector<int> plates(D);
for (int i = 0; i < D; ++i) {
cin >> plates[i];
}
int ans = solve(plates);
cout << "Case #" << t << ": " << ans << endl;
}
return 0;
}