NC222466. [USACOJan2020S]BerryPicking
描述
输入描述
The first line of input contains space-separated integers N and K.
The second line contains N space-separated integers B1,B2,…,BN.
输出描述
A single line with the answer.
示例1
输入:
5 4 3 6 8 4 2
输出:
8
说明:
If Bessie fills
then she receives two baskets each with 4 berries, giving her 8 berries in total.
C++(clang++ 11.0.1) 解法, 执行用时: 7ms, 内存消耗: 444K, 提交时间: 2023-06-03 09:06:26
#include<bits/stdc++.h> using namespace std; const int maxN = 1000 + 10; int a[maxN], n, k, d[maxN]; int main(){ cin >> n >> k; k >>= 1; for(int i = 1; i <= n; i++) cin >> a[i]; int ans = 0; for(int i = 1; i <= 1000; i++){ for(int j = 1; j <= i; j++) d[j] = 0; for(int j = 1; j <= n; j++) d[i] += a[j] / i, d[a[j] % i]++; if(d[i] < k) continue; d[i] -= k; int sum = 0, x = k; for(int j = i; x && j; j--) if(x > d[j]) sum += d[j] * j, x -= d[j]; else sum += x * j, x = 0; ans = max(ans, sum); } cout << ans; return 0; }