news 2026/5/25 16:27:27

打卡信奥刷题(3314)用C++实现信奥题 P9183 [USACO23OPEN] FEB B

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
打卡信奥刷题(3314)用C++实现信奥题 P9183 [USACO23OPEN] FEB B

P9183 [USACO23OPEN] FEB B

题目描述

贝西和埃尔希正在密谋最终推翻他们的主人——农夫约翰!他们通过NNN条短信进行计划。他们的对话可以用一个长度为NNN的字符串SSS来表示。
其中SiS_iSi是字母BE,这意味着第iii条消息分别由贝西或埃尔希发送的。

然而,农夫约翰听说了这个消息,并试图拦截他们的谈话。因此,字符串SSS的一些字母是F,这意味着农夫约翰混淆了信息,发件人未知(贝西、埃尔希都有可能)。
注:约翰没有发送信息!他只是在干扰奶牛间的通话!

未混淆对话的兴奋程度是一只奶牛重复发送信息的次数。也就是说,子串BBEESSS中出现的次数。你想找到原始信息的兴奋程度,但你不知道约翰的信息中哪一条实际上是贝西或埃尔希的。在所有可能的情况下,从小到大输出所有可能的兴奋程度。

输入格式

第一行:一个整数NNN(通话长度)。
第二行:一个字符串SSS(通话内容)。

输出格式

第一行:输出一个整数KKK,为不同兴奋程度的可能数量。
随后KKK行:每行一个整数,为每种兴奋程度。注意按照从小到大的顺序输出。

输入输出样例 #1

输入 #1

4 BEEF

输出 #1

2 1 2

输入输出样例 #2

输入 #2

9 FEBFEBFEB

输出 #2

2 2 3

输入输出样例 #3

输入 #3

10 BFFFFFEBFE

输出 #3

3 2 4 6

说明/提示

1≤N≤2×1051 \le N \le 2 \times 10^51N2×105

  • 测试点 4~8:N≤10N \le 10N10
  • 测试点 9~20:无额外限制。

C++实现

#include<bits/stdc++.h>#definexfirst#defineysecondusingnamespacestd;intn,d=2;string st;intl(){intans=0;string t=st;for(inti=1;i<n;i++)if(t[i]=='F')if(t[i-1]=='B')t[i]='E';elset[i]='B';for(inti=1;i<n;i++)ans+=(t[i-1]==t[i]);returnans;}intr(){intans=0;string t=st;for(inti=1;i<n;i++)if(t[i]=='F')t[i]=t[i-1];for(inti=1;i<n;i++)ans+=(t[i-1]==t[i]);returnans;}intmain(){inti;cin>>n>>st;if(st[0]=='F'||st[n-1]=='F')d=1;if(st[0]!='F'){intx=l(),y=r();cout<<(y-x)/d+1<<endl;for(i=x;i<=y;i+=d)cout<<i<<endl;return0;}st[0]='B';intx=l(),y=r();st[0]='E';x=min(x,l());y=max(y,r());cout<<(y-x)/d+1<<endl;for(i=x;i<=y;i+=d)cout<<i<<endl;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 16:25:17

如何让旧款Mac运行最新系统:OpenCore Legacy Patcher完整指南

如何让旧款Mac运行最新系统&#xff1a;OpenCore Legacy Patcher完整指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 想让你的老旧Mac设备重新焕发活力&a…

作者头像 李华