打卡信奥刷题(3314)用C++实现信奥题 P9183 [USACO23OPEN] FEB B P9183 [USACO23OPEN] FEB B题目描述贝西和埃尔希正在密谋最终推翻他们的主人——农夫约翰他们通过NNN条短信进行计划。他们的对话可以用一个长度为NNN的字符串SSS来表示。其中SiS_iSi​是字母B或E这意味着第iii条消息分别由贝西或埃尔希发送的。然而农夫约翰听说了这个消息并试图拦截他们的谈话。因此字符串SSS的一些字母是F这意味着农夫约翰混淆了信息发件人未知贝西、埃尔希都有可能。注约翰没有发送信息他只是在干扰奶牛间的通话未混淆对话的兴奋程度是一只奶牛重复发送信息的次数。也就是说子串BB或EE在SSS中出现的次数。你想找到原始信息的兴奋程度但你不知道约翰的信息中哪一条实际上是贝西或埃尔希的。在所有可能的情况下从小到大输出所有可能的兴奋程度。输入格式第一行一个整数NNN通话长度。第二行一个字符串SSS通话内容。输出格式第一行输出一个整数KKK为不同兴奋程度的可能数量。随后KKK行每行一个整数为每种兴奋程度。注意按照从小到大的顺序输出。输入输出样例 #1输入 #14 BEEF输出 #12 1 2输入输出样例 #2输入 #29 FEBFEBFEB输出 #22 2 3输入输出样例 #3输入 #310 BFFFFFEBFE输出 #33 2 4 6说明/提示1≤N≤2×1051 \le N \le 2 \times 10^51≤N≤2×105。测试点 4~8N≤10N \le 10N≤10测试点 9~20无额外限制。C实现#includebits/stdc.h#definexfirst#defineysecondusingnamespacestd;intn,d2;string st;intl(){intans0;string tst;for(inti1;in;i)if(t[i]F)if(t[i-1]B)t[i]E;elset[i]B;for(inti1;in;i)ans(t[i-1]t[i]);returnans;}intr(){intans0;string tst;for(inti1;in;i)if(t[i]F)t[i]t[i-1];for(inti1;in;i)ans(t[i-1]t[i]);returnans;}intmain(){inti;cinnst;if(st[0]F||st[n-1]F)d1;if(st[0]!F){intxl(),yr();cout(y-x)/d1endl;for(ix;iy;id)coutiendl;return0;}st[0]B;intxl(),yr();st[0]E;xmin(x,l());ymax(y,r());cout(y-x)/d1endl;for(ix;iy;id)coutiendl;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容