CF710F String Set Queries题目描述你需要对一个字符串集合D DD处理m mm个查询。每个查询有三种类型之一向集合D DD中添加一个字符串s ss。保证字符串s ss之前没有被添加过。从集合D DD中删除一个字符串s ss。保证字符串s ss当前在集合D DD中。给定字符串s ss求集合D DD中所有字符串在s ss中出现的次数总和。如果集合D DD中的某个字符串p pp在s ss中出现了多次则应计入所有出现次数。请注意你需要以在线模式online解决此问题。这意味着你不能一次读取所有输入。你只能在输出上一个三类查询的答案后读取下一个查询。在你的程序中你需要在每次输出后调用 C 的 fflush 或 Java 的 BufferedWriter.flush 函数。输入格式第一行包含一个整数m mm1 ≤ m ≤ 3 ⋅ 10 5 1 \leq m \leq 3 \cdot 10^{5}1≤m≤3⋅105表示查询的数量。接下来的m mm行每行包含一个整数t tt1 ≤ t ≤ 3 1\leq t \leq 31≤t≤3和一个非空字符串s ss表示查询的类型以及需要处理的字符串。所有字符串仅包含小写英文字母。输入中所有字符串总长度不超过3 ⋅ 10 5 3 \cdot 10^{5}3⋅105。输出格式对于每个三类查询输出一个整数c cc表示集合D DD中所有字符串在s ss中出现的次数之和。输入输出样例 #1输入 #15 1 abc 3 abcabc 2 abc 1 aba 3 abababc输出 #12 2输入输出样例 #2输入 #210 1 abc 1 bcd 1 abcd 3 abcd 2 abcd 3 abcd 2 bcd 3 abcd 2 abc 3 abcd输出 #23 2 1 0说明/提示由 ChatGPT 5 翻译思路分块即可。代码#includebits/stdc.husingnamespacestd;constlonglongmod1e933,mod21000099721;constlonglongwc131,wc2133;longlongm,t,op10,op20,p1[300005],p2[300005],oj0,wu[300005],wd[300005],wd20,wds[300005],wds20,os1[300005],os2[300005],md0,op0;string s;mappairlonglong,longlong,longlongmp;intmain(){p1[0]1;for(inti1;i300000;i){p1[i]p1[i-1]*wc%mod;}p2[0]1;for(inti1;i300000;i){p2[i]p2[i-1]*wc2%mod2;}mdsqrt(300000);cinm;for(inti1;im;i){cints;if(t1){op10;for(intj0;js.size()-1;j){op1(op1*wc(longlong)s[j])%mod;}op20;for(intj0;js.size()-1;j){op2(op2*wc2(longlong)s[j])%mod2;}mp[{op1,op2}];wd[s.size()];wu[s.size()];if(s.size()md1wu[s.size()]1){wds[wds2]s.size();}}elseif(t2){op10;for(intj0;js.size()-1;j){op1(op1*wc(longlong)s[j])%mod;}op20;for(intj0;js.size()-1;j){op2(op2*wc2(longlong)s[j])%mod2;}mp[{op1,op2}]--;wd[s.size()]--;}else{op0;op10;for(intj0;js.size()-1;j){op1(op1*wc(longlong)s[j])%mod;os1[j1]op1;}op20;for(intj0;js.size()-1;j){op2(op2*wc2(longlong)s[j])%mod2;os2[j1]op2;}for(intj1;jmdjs.size();j){if(wd[j]!0){for(intl1;lj-1s.size();l){opmp[{(os1[lj-1]-os1[l-1]*p1[j]%modmod)%mod,(os2[lj-1]-os2[l-1]*p2[j]%mod2mod2)%mod2}];}}}for(intj1;jwds2;j){if(wds[j]s.size()){for(intl1;lwds[j]-1s.size();l){opmp[{(os1[lwds[j]-1]-os1[l-1]*p1[wds[j]]%modmod)%mod,(os2[lwds[j]-1]-os2[l-1]*p2[wds[j]]%mod2mod2)%mod2}];}}}coutopendl;cout.flush();}}return0;//}