ZOJ 3818 Pretty Poem 模拟题
这题在比赛的时候WA到写不出来,也有判断ABC子串不一样不过写的很差一直WA
在整理清思路后重写一遍3Y
解题思路如下:
第一种情况:ABABA。 先判断开头的A与结尾的A,得到A的长度,
接着判断ABAB 中的AB与AB是否相同(ABAB的长度一定为偶数)
已经知道了A长度,AB的长度 接着判断下A 与B是否相同
第二种情况:ABABCAB-可先讲AB看成整体即DDCD
若存在一个D满足条件 可得到C的长度和位置再判断A-B是否相同A-C是否相同 B-C是否相同(暴力取A的长度咯)
其中在重写的时候WA的一个原因是这样的:
暴力A子串的长度的时候
for(int lena = 1; lena <= len / 3; ++lena){
这么写会导致WA
如果控制到位,这么写:
for(int lena = 1; lena <= (len - 2) / 3; ++lena){
就不会出现错误。
取D子串的时候也是同理。
看了别人写的代码,漫天飞舞的flag_1,flag_2,flag_3
还不如自己写一遍舒服多了
#include <stdio.h>
#include <string.h> int main(){
int n, i, j, k, t, m;
char array[], a[];
int len;
bool flag_a, flag_b;
scanf("%d",&t);
while(t--){
scanf("%s",array);
len = ;
flag_a = flag_b = false;
for(i = ; i < strlen(array); ++i){
if(array[i] >= 'A' && array[i] <= 'Z' || array[i] >= 'a' && array[i] <= 'z'){
a[len++] = array[i];
}
}
a[len] = '\0';
for(int lena = ; lena <= (len - ) / ; ++lena){
bool flag_1 = false;
for(i = ; i < lena; ++i){
if(a[i] != a[len - lena + i])
flag_1 = true;
}
if(flag_1) continue;
int remain_num = len - lena;
if(remain_num % != ) continue;
remain_num /= ;
for(i = ; i < remain_num; ++i){
if(a[i] != a[i + remain_num])
flag_1 = true;
}
if(flag_1) continue;
int lenb = remain_num - lena;
if(lena == lenb){
for(i = ; i < lena; ++i){
if(a[i] != a[i + lena]){
flag_a = true;
break;
}
}
if(flag_a) break;
} else{
flag_a = true;
break;
}
}
for(int lend = ; lend <= (len - ) / ; ++lend){
bool flag_2 = false;
for(i = ; i < lend; ++i){
if(!(a[i] == a[i + lend] && a[i] == a[len - lend + i]))
flag_2 = true;
}
if(flag_2) continue;
int lenc = len - * lend;
bool a_b = false;
for(int lena = ; lena < lend; ++lena){
if(lena == lend - lena){
for(i = ; i < lena; ++i){
if(a[i] != a[lena + i])
a_b = true;
}
if(!a_b) continue;
}
bool a_c = false;
bool b_c = false;
if(lena != lenc) a_c = true;
else{
for(i = ; i < lena; ++i){
if(a[i] != a[ * lend + i]){
a_c = true;
break;
}
}
}
int lenb = lend - lena;
if(lenb != lenc) b_c = true;
else{
for(i = ; i < lenb; ++i){
if(a[lena + i] != a[ * lend + i]){
b_c = true;
break;
}
}
}
if(a_c && b_c){
flag_b = true;
break;
}
}
if(flag_b){
break;
} } if(flag_a || flag_b){
printf("Yes\n");
} else{
printf("No\n");
}
}
return ;
}
ZOJ 3818 Pretty Poem 模拟题的更多相关文章
- ZOJ 3818 Pretty Poem
		
暴力模拟 细节处理很重要... #include <iostream> #include <cstring> #include <cstdio> using nam ...
 - ZOJ 3790 Consecutive Blocks 模拟题
		
problemCode=3790">Consecutive Blocks 先离散一下,然后模拟,把一种颜色i所在的位置都放入G[i]中.然后枚举一下终点位置,滑动窗体使得起点和终点间花 ...
 - Capture the Flag ZOJ - 3879(模拟题)
		
In computer security, Capture the Flag (CTF) is a computer security competition. CTF contests are us ...
 - poj 1008:Maya Calendar(模拟题,玛雅日历转换)
		
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64795 Accepted: 19978 D ...
 - poj 1888 Crossword Answers 模拟题
		
Crossword Answers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 869 Accepted: 405 D ...
 - CodeForces - 427B (模拟题)
		
Prison Transfer Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Sub ...
 - sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)
		
The Android University ACM Team Selection Contest Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里 ...
 - 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中
		
题目名称 正确答案 序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...
 - UVALive 4222 Dance 模拟题
		
Dance 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...
 
随机推荐
- 13-C语言字符串函数库
			
目录: 一.C语言字符串函数库 二.用命令行输入参数 回到顶部 一.C语言字符串函数库 1 #include <string.h> 2 字符串复制 strcpy(参数1,参数2); 参数1 ...
 - Word2007中如何插入参考文献
			
很多国内的期刊杂志都只能使用word模板,导致插入参考文献成了件麻烦事,这时特别怀念Latex的便捷.于是找到一篇介绍word2007里插入参考文献的好方法,就是利用尾注的方法使文章的参考文献标号可以 ...
 - 扩展ASP.NET MVC HtmlHelper类
			
在这篇帖子中我会使用一个示例演示扩展ASP.NET MVC HtmlHelper类,让它们可以在你的MVC视图中工作.这个示例中我会提供一个简单的方案生成Html表格. HtmlHelper类 Htm ...
 - protel99_拼板详细图解
			
首先打开PCB文档.如图所示,在PCB左下角放置一個坐標為X=0,Y=0的焊盤. 从下图看,为了方便电路板生产厂家的加工和焊接工厂的加工,拼版的方向是向上Y轴方向拼版. 接着为了在拼版过程中好对齐板边 ...
 - Google日历添加农历、节日和天气插件(步骤)
			
Google日历添加农历.节日和天气插件(步骤) Google功能非常多,Google日历只是其中一个,而且支持Exchange账户(iPhone,WP7,诺基亚等)和Google账户登录(andro ...
 - USB VID PID 查询
			
USB VID PID 查询:http://www.linux-usb.org/usb.ids 说明: USB设备中有VID何PID,分别表示此USB设备是哪个厂商的哪种设备. 一个USB的VID对应 ...
 - 百度云世界里的“七种武器”:PCS、BAE、Site App、ScreenX等
			
如果说去年百度世界的关键词是“百度新首页”的话,那么今年在研发者人群中,对百度世界最深的印象就是“七种武器”,即在云的世界里,百度为开发者所提供的包括个人云存储.LBS.移动云测试中心等在内的七种工具 ...
 - C++模板:qsort
			
void qsort(int l,int r){ int i,j,t,mid; mid=b[(l+r)>>1]; i=l; j=r; do{ while (b[i]<mid) i++ ...
 - jQuery.merge 源码阅读
			
jQuery.merge(first,second) 概述 合并两个数组 返回的结果会修改第一个数组的内容——第一个数组的元素后面跟着第二个数组的元素. 参数 first:第一个待处理数组,会改变其中 ...
 - BZOJ 3402: [Usaco2009 Open]Hide and Seek 捉迷藏
			
题目 3402: [Usaco2009 Open]Hide and Seek 捉迷藏 Time Limit: 3 Sec Memory Limit: 128 MB Description 贝 ...