2025-8-2
2025-8-2
codeforces-div2-512-B
题意描述
给定n桶\(v_i\)升的油, 恰好取出k升,最大化剩余油的最小值。
取不出k升输出-1.
思路分析
- 贪心
- 考虑最平均的情况且\(v_i\)较大,我们可以先取到全部相等,然后一个个取。
- 答案为ans =\(\lfloor \frac{{\sum v_i }- k}{n} \rfloor\)
- 当\(v_i < ans\)时更新答案为\(v_i\).
解题代码
void solve()
{
int n;ll k;
cin >> n >> k;
vector<int> a(n);
for(int& x : a)cin >> x;
ll s = accumulate(all(a), 0ll);
if(s < k){
cout << -1 << nl;
return;
}
int ans = (s - k) / n;
ans = min(ans, *min_element(all(a)));
cout << ans << nl;
}
- 时间复杂度o(n)

浙公网安备 33010602011771号