string+模拟——小A和小C
来源:互联网 发布:最好的win10优化工具 编辑:程序博客网 时间:2024/05/21 10:09
题目来源
DBSDFZOJ小A和小C
http://218.62.22.209:8080/problem.php?cid=1485&pid=0
题目描述
小A和小C是好朋友。
有一天,他们获得了一个字符串,这个字符串中只可能出现大写英文字母。
小A喜欢AC,小C喜欢CA,所以小A希望从这个字符串里找到一个AC然后挖走,小C也希望从这个字符串里找到一个CA然后挖走。任何一个人挖走一个字符串后,他们都会用BB填充原来的位置。
举个例子:如果原串为CACA,小A挖走了中间的AC,那么这个串就会变成CBBA。
他们找到了正在准备NOIP的你,希望你来告诉他们,他们的愿望能否同时得到满足?
样例输入
ACA
CABFAC
样例输出
NO
YES
数据范围
对于30%的数据,保证n<=1000。
对于100%的数据,保证n<=10^5,数据组数不超过10。这里的N表示的是单个字符串的长度。
思路
模拟
第一次询问 查询字符串内是否有“AC” 如果有 删去“AC” 置为“BB”
查询是否有“CA” 如果有 符合条件
如果第一次询问不符合条件 进行第二次询问
查询字符串内是否有“CA” 如果有 删去“CA” 置为“BB”
查询是否有“AC” 如果有 符合条件
如果两次都不符合条件 输出“NO”
否则 输出“YES”
代码(C++)
#include <cstdio>#include <iostream>using namespace std;int pos,w;string s;void ask1(string s);void ask2(string s);int main(){while(cin>>s){w=0;ask1(s);if(w==0)ask2(s);if(w==0)printf("NO\n");elseprintf("YES\n");}return 0;}void ask1(string s){pos=s.find("AC");if(pos==-1)return ;s.erase(pos,2);s.insert(pos,"BB",2);pos=s.find("CA");if(pos==-1)return ;w=1;return ;}void ask2(string s){pos=s.find("CA");if(pos==-1)return ;s.erase(pos,2);s.insert(pos,"BB",2);pos=s.find("AC");if(pos==-1)return ;w=1;return ;}
阅读全文
0 0
- string+模拟——小A和小C
- 小C的英语——初级模拟
- C/C++:string和stringstream的小例子
- 【NOIP2012模拟11.5】小A 的作业
- 【NOIP模拟】小a的强迫症
- a^b%c 小技巧
- Pascal & C++——NOIP模拟题——小X分砖块
- Pascal & C++——NOIP模拟题——小X学游泳
- NYOJ-255C小加之随机数【模拟】
- [NOIP模拟][BZOJ4264]小c找朋友
- [NOIP2017模拟][bzoj4264]小c找朋友
- (前缀和排序)NOIP2017提高组模拟 Day1P1 小A的数学
- C#string类的一点小细节
- C實踐項目4.2—分離整數和小數部分
- String小练习1-模拟一个trim方法
- C#模拟超人和小怪兽赛跑——多线程学习之(二)牛刀小试
- HDU2096——小明A+B
- C语言小用——端口查询小程序
- 高级SQL
- Debug断点调试
- 20191001考试总结
- CentOS7,MySQL主从配置和读写分离
- libphenom 学习笔记
- string+模拟——小A和小C
- 异步编程中的最佳做法
- Visual Studio 2012 创建一个控制台应用程序 01
- 389. Find the Difference
- COMPUTE 和 GROUP BY
- Crossword Answers 模拟 字符串
- opencv 霍夫变换检测直线中pt1、pt2点的确定
- C语言学习内容总结 2017/10/17
- Go, 互联网时代的C语言