题意
有n种扑克牌,每种有ci个。还有m张王牌。可以代替其中任一张。最多可以造出几个套牌(每副牌只能用一次)。
solution
典型的二分答案,每副牌只能使用一次,所以限制使用的王牌数为 ,每种牌不够
张需要王牌补,计算使用的王牌数为
判断是否满足条件即可。
Code
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, m, a[105];
bool check(ll x) {
ll cnt = min(m, x);
for (ll i = 1; i <= n; i++) cnt -= max(x - a[i], 0LL);
return cnt >= 0;
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> a[i];
ll l = 0, r = 1e9, mid;
while (l + 1 < r) {
mid = l + r >> 1;
if (check(mid))
l = mid;
else
r = mid;
}
cout << l << '\n';
return 0;
}
京公网安备 11010502036488号