题目链接:Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)
总结:Bwa两发,C读假题。发挥很一般
A. Diverse Game
fag:签到
B. Fun Game
fag:位运算 + 思维
Description:给定一个两个 01 01 01字符串 s , t s, t s,t,对于 s s s,每次可以选择一个区间 l , r l, r l,r,令 s i ∧ s i − l + 1 s_i \wedge s_{i - l + 1} si∧si−l+1替换 s i , l < = i < = r s_i, l <= i <= r si,l<=i<=r。问能否将
s s s转化为 t t t。
Solution:1与(0, 1)异或会将其改变, 0与任何数异或为0
- 那么假设 s s s串中第一个不同的位置前面有 1 1 1,那么后面的数都可以与这个数异或,从而变得相等。如果没有但是 s i s_i si是
1 1 1,则可以自己变为 0 0 0,或者不行。 - 即看 s , t s,t s,t串中谁先出现 1 1 1,因为后面的数可以依靠的数改变。
Competing:有点慌乱,乱交了两发。难绷
void solve() {
int n;
cin >> n;
string s, t;
cin >> s >> t;
for (int i = 0; i < n; i++) {
if (s[i] == '1') {
cout << "Yes\n";
return;
}
if (t[i]