题解:P16569 [ICPC 2026 APC] Time Display Stickers
whisper_free_Evil · · 题解
P16569 [ICPC 2026 APC] Time Display Stickers
题意
给 HH:MM(HH 为
思路
二分答案
拼
由此得到两个充要条件:
-
- 小数字够用:
2mid+b\le S_{05} 。
满足这两条即合法。剩余位置无限制,总数字数
代码
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int t, n;
string s;
void solve() {
cin >> n >> s;
vector<int> cnt(10);
for (char c : s) {
cnt[c - '0']++;
}
int S05 = 0;
for (int i = 0; i <= 5; i++) {
S05 += cnt[i];
}
int l = 0, r = n / 4;
while (l < r) {
int mid = l + r + 1 >> 1;
if (mid > cnt[0] + cnt[1] / 2) {
r = mid - 1;
continue;
}
int b = max(0, mid - cnt[0]);
if (2 * mid + b <= S05) {
l = mid;
} else {
r = mid - 1;
}
}
cout << l << "\n";
}
int main() {
ios::sync_with_stdio(0), cin.tie(0);
cin >> t;
while (t--) {
solve();
}
return 0;
}