Codeforces1527B1
生活随笔
收集整理的這篇文章主要介紹了
Codeforces1527B1
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
- 游戲題,給一個只有000和111的回文串,對每一個人有兩種操作:1、將這個串中任意的000變成111。2、如果當前串是非回文狀態,可以將000和111排序。
- 問最后誰會贏這場比賽。
思路分析
- 由于一開始就是回文串,那么對于Alice來說,只要她選了任意的一個000變成111,那么Bob來說,總能找到和她選的000對稱的000,所以Bob必勝,因為Bob可以在最后一回合選擇第二種操作。
- 然后就是特殊情況,比如只有一個000,那么肯定是Bob贏。奇數個000,那么就證明這個000是在中心位置,Alice一開始就把這個中心位置變成111,就和上面一個點一樣了,所以是Alice勝。
- 總結一下,如果只有偶數個000,那么Bob必勝,奇數個000(除111個以外)是Alice贏。
代碼如下
#include <bits/stdc++.h> using namespace std; int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;cin >> t;while (t--){int n;cin >> n;string s;cin >> s;int cnt = 0;for (int i = 0; i < n; i++){if (s[i] == '0')cnt++;}if (cnt % 2){if (cnt > 1){cout << "ALICE" << endl;}elsecout << "BOB" << endl;}elsecout << "BOB" << endl;}return 0; }總結
以上是生活随笔為你收集整理的Codeforces1527B1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高速PCB常见问题
- 下一篇: ios百度地图更改罗盘指南针位置