【发布时间】:2021-03-08 04:13:00
【问题描述】:
教育 Codeforces 第 105 轮的问题 A(第 2 部分的评级)。 Um_nik 用这种蛮力方法解决了这个问题,我并不完全理解。 我知道什么是位掩码,但我对 if ((mask >> (int)(s[i] - 'A')) & 1) 和 ok &= bal >= 0 感到困惑。 问题的链接是:https://codeforces.com/contest/1494/problem/A
cin >> s;
int n = (int)s.length();
//cout << s << endl;
for (int mask = 0; mask < (1 << 3); mask++) {
int bal = 0;
bool ok = true;
for (int i = 0; i < n; i++) {
if ((mask >> (int)(s[i] - 'A')) & 1)
bal++;
else
bal--;
ok &= bal >= 0;
}
ok &= bal == 0;
if (ok) {
printf("YES\n");
return;
}
}
printf("NO\n");
【问题讨论】:
-
ok &= bal >= 0->ok = ok & bal >= 0->if (bal < 0) ok = false
标签: c++ algorithm brute-force bitmask