ABC C题不知道哪错了
  • 板块学术版
  • 楼主Slient_QwQ
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/9/21 21:49
  • 上次更新2024/9/21 22:37:46
查看原帖
ABC C题不知道哪错了
963247
Slient_QwQ楼主2024/9/21 21:49

rt,思路是考虑修改后造成的影响,发现情况很少,于是枚举所有情况,但是 WA 了

/*Code By Manipula*/
#include <bits/stdc++.h>
#define endl '\n'
#define Inf 0x3f3f3f3f
#define ft first
#define sd second
#define lb lower_bound

#define YES printf("YES\n")
#define Yes printf("Yes\n")
#define NO printf("NO\n")
#define No printf("No\n")

#define debug(...) fprintf(stderr, __VA_ARGS__)
#define BUG puts("BUG!")

#define int long long

typedef long long ll;
typedef __int128 _int;

template <typename T> void ckmax(T &x, T y) { x = x > y ? x : y; }
template <typename T> void ckmin(T &x, T y) { x = x < y ? x : y; }
template <typename T> void ckadd(T &x, T A, T p) { x = (x + A) % p; }
template <typename T> void ckmul(T &x, T A, T p) { x = (x * A) % p; }
template <typename T> T max(T x, T y) { return x > y ? x : y; }
template <typename T> T min(T x, T y) { return x < y ? x : y; }

const int N = 2e5 + 7;

char s[N], t[7] = " ABC";

int n, q, ans;

signed main() {
  // freopen(".in", "r", stdin);
  // freopen(".out", "w", stdout);
  
  scanf("%lld%lld%s", &n, &q, s + 1);
  
  for (int i = 1, l = 1; i <= n; i ++) {
    if (s[i] == t[l]) l ++;
    else l = 1;
    
    if (l == 4) l = 1, ans ++;
  }
  
  while (q --) {
    int pos; char ch;
    std::cin >> pos >> ch;
    
    if (ch != 'C' && 3 <= pos && s[pos - 2] == 'A' && s[pos - 1] == 'B' && s[pos] == 'C')
      ans --;
    if (ch != 'B' && 2 <= pos && pos + 1 <= n && s[pos - 1] == 'A' && s[pos + 1] == 'C' && s[pos] == 'B')
      ans --;
    if (ch != 'A' && pos + 2 <= n && s[pos + 1] == 'B' && s[pos + 2] == 'C' && s[pos] == 'A')
       ans --;
    if (ch == 'C' && 3 <= pos && s[pos - 2] == 'A' && s[pos - 1] == 'B' && s[pos] != 'C')
      ans ++;
    if (ch == 'B' && 2 <= pos && pos + 1 <= n && s[pos - 1] == 'A' && s[pos + 1] == 'C' && s[pos] != 'B')
      ans ++;
    if (ch == 'A' && pos + 2 <= n && s[pos + 1] == 'B' && s[pos + 2] == 'C' && s[pos] != 'A')
      ans ++;
    
    s[pos] = ch;
    
    printf("%lld\n", ans);
  }
  
  return 0;
}
2024/9/21 21:49
加载中...