F. Battery
题面:
中文题意:
给你一堆不同容量的电池和一堆任务的耗电情况。
每个任务最多只能用一节电池。
问最多完成几个任务。
知错了,猪鼻了,谢谢大家不断评论勉励我重打一遍呜呜。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll cnt[40], a[40];
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int n, m;
cin >> n >> m;
ll x;
for (int i = 1; i <= n; i++) {
cin >> x;
for (int j = 0; j <= 30; j++)
if (x & (1ll << j)) cnt[j]++;
}
for (int i = 1; i <= m; i++) {
cin >> x;
for (int j = 0; j <= 30; j++)
if (x & (1ll << j)) a[j]++;
}
int ans = 0;
for (int i = 0; i <= 30; ++i) {
ll tt = cnt[i] << i;
for (int j = 0; j <= i; ++j) {
if (tt < a[j]) {
a[j] -= tt;
ans += tt;
break;
}
tt -= a[j];
ans += a[j];
a[j] = 0ll;
tt >>= 1ll;
}
}
cout << ans << endl;
}