萌新求助全wa
查看原帖
萌新求助全wa
343811
polygon楼主2025/1/21 14:41

rt

拍了几万组都没问题,但是不知道为什么只能过一个点qwq

#include <bits/stdc++.h>

using namespace std;

const int N = 2e5 + 10;
int n, m;
char s[N];
char pre[N];

signed main(){
    cin >> (s + 1) >> m;
    n = strlen(s + 1);
    pre[0] = ' ';
    for(int i = 1; i <= n; ++i){
        if(pre[i - 1] == ' ') pre[i] = s[i];
        else if(pre[i - 1] == 'C'){
            if(s[i] == 'C') pre[i] = ' ';
            if(s[i] == 'O') pre[i] = 'W';
            if(s[i] == 'W') pre[i] = 'O';
        }else if(pre[i - 1] == 'O'){
            if(s[i] == 'c') pre[i] = 'W';
            if(s[i] == 'O') pre[i] = ' ';
            if(s[i] == 'W') pre[i] = 'C';
        }else if(pre[i - 1] == 'W'){
            if(s[i] == 'c') pre[i] = 'O';
            if(s[i] == 'O') pre[i] = 'C';
            if(s[i] == 'W') pre[i] = ' ';
        }
    }
    while(m--){
        int l, r; cin >> l >> r;
        char c1 = pre[l - 1], c2 = pre[r];
        int flag = 0;
        if((c1 == ' ' && c2 == 'C') || (c1 == 'C' && c2 == ' ')) flag = 1;
        if((c1 == 'O' && c2 == 'W') || (c1 == 'W' && c2 == 'O')) flag = 1;
        if(flag) cout << "Y";
        else cout << "N";
    }
    return 0;
}
2025/1/21 14:41
加载中...