回文串(palindromes)

【题目描述】

判断是否能将字符串S分成三段非空回文串。

【输入说明】

第一行一个整数T,表示数据组数。

对于每一个组,仅包含一个由小写字母组成的串。

【输出说明】

对于每一组,单行输出"Yes" 或 "No"。

【样例输入】

2

abc

abaadada

【样例输出】

Yes

No

【数据范围】

对于40%的数据,|S|<=100

对于60%的数据,|S|<=1000

对于100%的数据,T<=20,|S|<=20000

 #include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 20010
#define P 29
#define ll long long
using namespace std;
ll T,n,A[maxn],B[maxn],a[maxn],b[maxn],p[maxn],flag;
char s[maxn];
void Get()
{
p[]=;
for(int i=;i<=;i++)
p[i]=p[i-]*P;
}
void Hash1()
{
A[]=;
for(int i=;i<=n;i++)
A[i]=A[i-]*P+s[i];
}
void Hash2()
{
B[]=;
for(int i=;i<=n;i++)
B[i]=B[i-]*P+s[n-i+];
}
ll query2(ll l,ll r)
{
return B[r]-B[l-]*p[r-l+];
}
ll query1(ll l,ll r)
{
return A[r]-A[l-]*p[r-l+];
}
int main()
{
scanf("%d",&T);
Get();
while(T--)
{
scanf("%s",s+);
n=strlen(s+);
a[]=;b[]=;
Hash1();Hash2();flag=;
for(int i=;i<=n;i++)
{
ll x=query1(,i);
ll y=query2(n-i+,n);
if(x==y) a[++a[]]=i;
}
for(int i=n;i>=;i--)
{
ll x=query1(i,n);
ll y=query2(,n-i+);
if(x==y) b[++b[]]=i;
}
for(int i=;i<=a[];i++)
{
for(int j=;j<=b[];j++)
{
if(a[i]+>b[j]-) break;
ll x=query1(a[i]+,b[j]-);
ll y=query2(n-b[j]+,n-a[i]);
if(x==y)
{
flag=;break;
}
}
if(flag) break;
}
if(flag) printf("Yes\n");
else printf("NO\n");
} return ;
}

八十分做法~~~,已跪,求大神解救~~

济南学习 Day5 T3 晚的更多相关文章

  1. 济南学习 Day1 T3 pm

    [问题描述]小 Q 对计算几何有着浓厚的兴趣.他经常对着平面直角坐标系发呆,思考一些有趣的问题.今天,他想到了一个十分有意思的题目:首先,小 Q 会在x轴正半轴和y轴正半轴分别挑选

  2. 济南学习 Day1 T3 am

    凝视[问题描述]背包是个好东西,希望我也有.给你一个二维的背包,它的体积是N*M.现在你有一些大小为1× 2和1×3的物品,每个物品有自己的价值.你希望往背包里面装一些物品,使得它们的价值和最大,问最 ...

  3. Python学习day5作业

    目录 Python学习day5作业 ATM和购物商城 1. 程序说明 2. 基本流程图 3. 程序测试帐号 4. 程序结构: 5. 程序测试 title: Python学习day5作业 tags: p ...

  4. 济南学习 Day 3 T3 pm

    仙人掌(cactus)Time Limit:1000ms Memory Limit:64MB题目描述LYK 在冲刺清华集训(THUSC) !于是它开始研究仙人掌,它想来和你一起分享它最近研究的结果. ...

  5. 济南学习 Day 3 T3 am

    选数字 (select)Time Limit:3000ms Memory Limit:64MB题目描述LYK 找到了一个 n*m 的矩阵,这个矩阵上都填有一些数字,对于第 i 行第 j 列的位置上的数 ...

  6. 济南学习 Day 2 T3 pm

    它[问题描述]N个人坐成一圈,其中第K个人拿着一个球.每次每个人会以一定的概率向左边的人和右边的人传球.当所有人都拿到过球之后,最后一个拿到球的人即为胜者.求第N个人获胜的概率. (所有人按照编号逆时 ...

  7. 济南学习 Day 2 T3 am

    [问题描述]m× m的方阵上有n棵葱,你要修一些栅栏把它们围起来.一个栅栏是一段沿着网格建造的封闭图形(即要围成一圈) .各个栅栏之间应该不相交.不重叠且互相不包含.如果你最多修k个栅栏,那么所有栅栏 ...

  8. 济南学习 Day 5 T2 晚

    等比数列(sequence) [题目描述] 判断一个数列是否为等比数列. 等比数列的定义为能被表示成a,aq,aq^2,aq^3...的数列,其中a和q不等于0. [输入说明] 输入文件的第一行有一个 ...

  9. 济南学习 Day 5 T1 晚

    取模(mod) [题目描述] 有一个整数a和n个整数b_1, …, b_n.在这些数中选出若干个数并重新排列,得到c_1,…, c_r.我们想保证a mod c_1 mod c_2 mod … mod ...

随机推荐

  1. JAVASCRIPT闭包以及原型链

    方法内部还有个方法,实例化父方法后,再次调用父方法,可以运行父方法内部的子方法,这样的程序就叫做闭包 DEMO如下: //function outerFn() { // var outerVar = ...

  2. Android(java)学习笔记139:Android中Menu的使用(静态 和 动态)

    1. 使用xml定义Menu(静态方法) 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用 ...

  3. js获得本季度的开始日期 结束日期

    var now = new Date(); //当前日期var nowMonth = now.getMonth()+1; //当前月var nowYear = now.getFullYear(); / ...

  4. Bootstrap历练实例:链接样式按钮

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

  5. Authentication token manipulation error报错解决办法

    Authentication token manipulation error报错解决办法 #参考http://blog.163.com/junwu_lb/blog/static/1916798920 ...

  6. Codeforces Round #510 #C Array Product

    http://codeforces.com/contest/1042/problem/C 给你一个有n个元素序列,有两个操作:1,选取a[i]和a[j],删除a[i],将$a[i]*a[j]$赋值给a ...

  7. RuntimeError: Failed to init API, possibly an invalid tessdata path: E:\python36\报错

    OCR:光学识别符,tesserocr是python中一个OCR识别库,是对tesseract做的一个python的 API封装,所以它的核心是tesseract 在这里我安装的版本是:tessera ...

  8. Mysql 随机函数 rand()

    rand() 函数主要有两个用处: 1.是产生随机数, 2.是随机排序(在数据较大的时候会变成性能杀手) 实例: 1.产生一个随机数,默认0~1之间的浮点数 SELECT RAND( ) 2.参数指定 ...

  9. 5.电影搜索之 自动填充,也叫autocomplete、搜索建议!

    什么叫自动填充,用过百度的应该都知道!当你输入关键词之后,会有一个下拉的候选列表,都是与你输入的内容相关的,这个就是自动填充的搜索建议.一般的搜索引擎或者站内搜索都会有这个功能. 今天分享下这个功能的 ...

  10. python--FTP 上传视频示例

    # 服务端 import json import socket import struct server = socket.socket() server.bind(('127.0.0.1',8001 ...