B题
思路:统计出所有不满足回文字符的个数n.如"abc"其中第一个'a'和最后一个'c'不相同不满足回文串则统计个数n+2,判断每次更改操作后是否将不满足会问串的字符全部改完了,即n==0;如果n==0则返回true,否则返回false;同时每次更改操作后更新n,如果将不相等的改为相等的n-=2,将相等的改为不相等的n+=2,如果更改的是奇数长度字符串的中间位置,则不会改变n的个数。
AC代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define MAX 100000
int n, l;
int falsenum = 0;
void solve()
{
    string s;
    char c;
    cin >> s;
    cin >> n;
    bool ans = false;
    int from = 0, end = s.size() - 1;
    while (from < end)
    {
        if (s[from] != s[end])
        {
            ans = false;
            falsenum += 2;
        }
        from++, end--;
    }
    int sn = s.size();
    for (int i = 0; i < n; i++)
    {
        cin >> l;
        cin >> c;
        if ((sn % 2 == 1) && ((l * 2) == sn + 1))
        {
            s[l - 1] = c;
            if (falsenum != 0)
                cout << "No" << endl;
            else
                cout << "Yes" << endl;
            continue;
        }
        else if (s[sn - l] != s[l - 1])
        {
            if (s[sn - l] == c)
            {
                falsenum -= 2;
            }
        }
        else
        {
            if (s[sn - l] != c)
            {
                falsenum += 2;
            }
        }
        s[l - 1] = c;
        if (falsenum != 0)
            cout << "No" << endl;
        else
            cout << "Yes" << endl;
    }
}
int main()
{
    int n__ = 1;
    // cin>>n__;
    while (n__--)
    {
        solve();
    }
    return 0;
}