题解:CF2030C A TRUE Battle

Describe

给一个长度为 n 的二进制序列,Alice 和 Bob 在相邻两个0/1中间分别orand 操作,优先级满足 and>or

Alice 希望最后运算的值为 1,Bob 希望它为 0

若双方进行最优操作,问最后值为 0YES)还是 1NO)。

Solution

Hits 1: 观察首尾性质

注意到当序列首是 1 的时候,只要 Alice 在后面加个 or,整个序列的值一定1

同理当序列尾是 1 的时候,值也为 1

另外,当序列出现了 11 的时候,Alice 一定可以构造出 or11or 或者 1or1or 的形式使得整个序列为 1

判断即可。

Code

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int N = 1e5 + 10;

void solve() {
	int n; cin >> n;
	string s; cin >> s;
	if ((s.back() == '1' || s.front() == '1') || s.find("11") != s.npos) {
		cout << "YES\n";
	}else {
		cout << "NO\n";
	}
}

int main() {
	ios::sync_with_stdio(false); cin.tie(0), cout.tie(0);
	
	int T; cin >> T; while (T --) solve();
	return 0;
}
posted @   lyfandlzf  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示