#include <bits/stdc++.h> using namespace std; const int SIZE=5e4+4; const int MOD=998244353; int sum[SIZE][6]; int dp[SIZE]; string s; int calculate(){ int N=s.size()-1; for(int i=1;i<=N;i++){ for(int j=0;j<6;j++){sum[i][j]=sum[i-1][j];} sum[i][s[i]-97]++; dp[i]=(dp[i-1]*2+ ( (sum[i-1][s[i]-97]) ? (sum[i-1][s[i]-97]+1):0) )%MOD; } return dp[N]; } int main(){ int N,q,a; char Z; cin>>N>>q>>s; s='0'+s; cout<<calculate()<<'\n'; for(int i=0;i<q;i++){ cin>>a>>Z; s[a]=Z; cout<<calculate()<<'\n'; } return 0;}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <bits/stdc++.h> using namespace std; const int SIZE=5e4+4; const int MOD=998244353; int sum[SIZE][6]; int dp[SIZE]; string s; int calculate(){ int N=s.size()-1; for(int i=1;i<=N;i++){ for(int j=0;j<6;j++){sum[i][j]=sum[i-1][j];} sum[i][s[i]-97]++; dp[i]=(dp[i-1]*2+ ( (sum[i-1][s[i]-97]) ? (sum[i-1][s[i]-97]+1):0) )%MOD; } return dp[N]; } int main(){ int N,q,a; char Z; cin>>N>>q>>s; s='0'+s; cout<<calculate()<<'\n'; for(int i=0;i<q;i++){ cin>>a>>Z; s[a]=Z; cout<<calculate()<<'\n'; } return 0;} |