Codeforces Round 984 (Div. 3)-C. Anya and

题意

在这里插入图片描述

输入

在这里插入图片描述

输出

在这里插入图片描述

思路

先预处理包含的1100的个数,然后计算在改变位置改变后对改变前的影响(可以分别计算在改变位置处1100的个数,计算差值),注意遍历的边界范围

示例代码

void solve() {
    string s;
    cin >> s;
    int q;
    cin >> q;
    int cnt = 0;

    fer(i, 0, s.size() - 3){
        if(s.substr(i, 4) == "1100") cnt++;
    }
    while(q--){
        int ind, v;
        cin >> ind >> v;
        ind--;

        int cnt1 = 0, cnt2 = 0;
        // 改变前
        fer(i, max(0, ind - 3), min((int)s.size() - 3, ind + 1)){
            if(s.substr(i, 4) == "1100") cnt1++;
        }
        // 改变后
        s[ind] = char(v + '0');
        fer(i, max(0, ind - 3), min((int)s.size() - 3, ind + 1)){
            if(s.substr(i, 4) == "1100") cnt2++;
        }
        cnt += cnt2 - cnt1;
        if(cnt >= 1) cout << "YES" << '\n';
        else cout << "NO" << '\n';
    }
}
上一篇:02- 模块化编程-006 ADC0808数码显示对比


下一篇:第九周预习报告