ZOJ - 3818 字符串
思路:对于“ABABA”可以先枚举“AB”,然后检查下一个串是否等于“AB”,剩下的串就是A,最后检查A和B是否相等;对于“ABABCAB”,同样枚举“AB”,然后匹配剩下两个“AB”,剩下的就是C,注意判断A、B、C三者是否相等。写这题一定要细心,容易写错。
AC代码
- #include <cstdio>
- #include <cmath>
- #include<cctype>
- #include <algorithm>
- #include <cstring>
- #include <utility>
- #include <string>
- #include <iostream>
- #include <map>
- #include <set>
- #include <vector>
- #include <queue>
- #include <stack>
- using namespace std;
- #pragma comment(linker, "/STACK:1024000000,1024000000")
- #define eps 1e-10
- #define inf 0x3f3f3f3f
- #define PI pair<int, int>
- typedef long long LL;
- typedef vector<char> v;
- const int maxn = 200 + 5;
- char a[maxn];
- bool is_same(int st1, int st2, int n) {
- int flag = 1;
- for(int i = st1, j = st2; i < st1+n; ++i, ++j) {
- if(a[i] != a[j]) {
- flag = 0;
- break;
- }
- }
- if(flag) return true;
- return false;
- }
- int main() {
- int T;
- scanf("%d", &T);
- while(T--) {
- scanf("%s", a);
- int n = 0;
- for(int i = 0; a[i] != '\0'; ++i) {
- if(isalpha(a[i])) {
- a[n++] = a[i];
- }
- }
- int flag = 0;
- //ABABA
- if(n >= 5) for(int i = 2; i <= n/2; ++i) { //枚举AB
- if(i*2 == n || i <= n - 2*i) continue;
- int ok = 1;
- for(int j = i, k = 0; k < i; ++j, ++k) {
- if(a[k] != a[j]) {
- ok = 0;
- break;
- }
- }
- if(ok) {
- for(int j = i*2, k = 0; j < n; ++j, ++k) {
- if(a[j] != a[k]) {
- ok = 0;
- break;
- }
- }
- }
- if(ok && n-2*i == i - (n-2*i)) {
- ok = !(is_same(0, n-2*i, n-2*i));
- }
- if(ok) {
- flag = 1;
- break;
- }
- }
- //ABABCAB
- if(!flag && n >= 7) {
- for(int i = 2; i <= n/3; ++i) {
- if(i*3 == n) continue;
- int ok = 1;
- if(!is_same(0, i, i)) ok = 0;
- if(ok) {
- if(!is_same(0, n-i, i)) ok = 0;
- }
- //判断A,B,C是否相等
- int c = n - 3*i;
- if(ok) for(int j = 1; j < i; ++j) { //枚举A的长度
- ok = 0;
- if(j == i-j && is_same(0, j, j)) continue;
- if(c == j && is_same(0, 2*i, j)) continue;
- if(c == i-j && is_same(j, 2*i, c)) continue;
- ok = 1;
- break;
- }
- if(ok) {
- flag = 1;
- break;
- }
- }
- }
- if(flag) printf("Yes\n");
- else printf("No\n");
- }
- return 0;
- }
如有不当之处欢迎指出!
ZOJ - 3818 字符串的更多相关文章
- 题目1006:ZOJ问题(字符串处理)
问题来源 http://ac.jobdu.com/problem.php?pid=1006 问题描述 输入一个只包含'z','o','j'三种字符的字符串,判断是否符合要求. 问题分析 分析AC的三个 ...
- D - D ZOJ - 1151 (字符串操作)
For each list of words, output a line with each word reversed without changing the order of the word ...
- ZOJ 3818 Pretty Poem
暴力模拟 细节处理很重要... #include <iostream> #include <cstring> #include <cstdio> using nam ...
- ZOJ 3818 Pretty Poem 模拟题
这题在比赛的时候WA到写不出来,也有判断ABC子串不一样不过写的很差一直WA 在整理清思路后重写一遍3Y 解题思路如下: 第一种情况:ABABA. 先判断开头的A与结尾的A,得到A的长度, 接着判断A ...
- ZOJ 3603字符串操作
解题思路:找到公共子串然后升序输出 坑的地方就在于输入是存在相同字母的 #include <stdio.h> #include <algorithm> #include < ...
- ZOJ 1115 Digital Roots(简单,字符串与数)
题目 //好一道水水题,可是我居然也错了那么多次,后来百度来发现是因为数据数位可能很长很长,要用字符串数组... //简单 //有坑啊——数据可能很大很大,要用字符串表示! #include<s ...
- zoj 1962 How Many Fibs?(字符串化为数字处理)
事实证明还是,题目拿到手之后,还是还是好好动手划一下比较好,不然直接想打哪!打到哪!很容易乱掉的.将数字倒着弄成字符串比较好处理. #include<stdio.h> #include&l ...
- ZOJ 3490 String Successor 字符串处理
一道模拟题,来模拟进位 暴力的从右往左扫描,按规则求后继就好了.除了Sample已给出的,还有一些需要注意的地方: 9的后继是10,而不是00: (z)的后继是(aa),而不是a(a): 输入虽然最长 ...
- ZOJ 3985 - String of CCPC - [字符串处理]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3985 题意: 给出一个长度为n的字符串,全部由'C'和'P'组成 ...
随机推荐
- Windows挂钩注入DLL
注入DLL实现源码:HINSTANCE g_hInstDll = NULL; HHOOK g_hHook = NULL; DWORD g_dwThreadId = 0; #ifdef _MANAGED ...
- centos7安装python3.6
安装python3.6可能使用的依赖 # yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sql ...
- linkin大话面向对象--java关键字
java中的关键字有以下几个,他们不能作任何其它的用途. 发现没,java中的关键字全是小写,java是严格区分大小写的. abstract default null synchronized ...
- mysql主从配置主主配置
一. 概述 MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步.主从模式.互相备份模式的功能.本文档主要阐述了如何在linux系 ...
- html的标签
<a>:anchor 定义锚 <abbr>:abbreviation 定义缩写 <acronym>: 定义只取消首字母的缩写 <address>:定义地 ...
- 深入浅出Hadoop之HDFS
hadoop生态系统一直是大数据灵域的热点,其中包括今天要聊的HDFS,和计划以后想聊的yarn, mapreduce, spark, hive, hbase, 已经聊过的zookeeper,等等. ...
- Tensorflow ActiveFunction激活函数解析
Active Function 激活函数 原创文章,请勿转载哦~!! 觉得有用的话,欢迎一起讨论相互学习~Follow Me Tensorflow提供了多种激活函数,在CNN中,人们主要是用tf.nn ...
- 解决苹果电脑(mac)管理员账户变成了普通用户后不能解锁用户与群组的问题
亲们,我先说说前因,然后再说一下解决方法. 前因 今天不知怎么就想把苹果电脑原来的名字给改一下,于是就做了下面的操作(你们不要这样做) 1.系统偏好设置→用户与组群→当前管理员用户→(右键)高级选项 ...
- HTTP协议篇(一):多工、数据流
管道机制.多工 管道机制(Pipelining) HTTP 1.1 引入了管道机制(Pipelining),即客户端可通过同一个TCP连接同时发送多个请求.如果客户端需要请求两个资源,以前的做法是在同 ...
- IO模型浅析
IO模型 同步.异步.阻塞.非阻塞 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.也就是必须一件一件事做,等前一件做完了才能做下一件事. 例如普通B/S模式(同步): ...