UVA 11888 - Abnormal 89's

option=com_onlinejudge&Itemid=8&page=show_problem&category=524&problem=2988&mosmsg=Submission+received+with+ID+14075396" target="_blank" style="">题目链接

题意:给定一个字符串。推断类型。一共三种。两个回文拼接成的,一个回文,其他

思路:利用Manachar处理出每一个位置的最长回文,然后扫描一遍去推断就可以

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int N = 200005; int t, p[N * 2], n, len;
char str[N], s[N * 2]; void manachar() {
len = 2;
s[0] = '@'; s[1] = '#';
for (int i = 0; i < n; i++) {
s[len++] = str[i];
s[len++] = '#';
}
s[len] = '\0';
int mx = 0, id;
for (int i = 1; i < len; i++) {
if (mx > i) p[i] = min(p[2 * id - i], mx - i);
else p[i] = 1;
while (s[i + p[i]] == s[i - p[i]]) p[i]++;
if (i + p[i] > mx) {
id = i;
mx = i + p[i];
}
}
} int judge() {
int need = 0;
for (int i = 2; i < len - 1; i++) {
if ((p[i] - 1) / 2 == need) {
int l = i + p[i] - 1;
int r = len - 1;
int mid = (l + r) / 2;
int lneed = need * 2;
if (s[i] != '#') lneed++;
int rneed = n - lneed;
if (rneed && rneed == p[mid] - 1) return 0;
}
if (s[i] != '#') need++;
}
if (p[len / 2] - 1 == n) return 1;
return 2;
} int main() {
scanf("%d", &t);
while (t--) {
scanf("%s", str);
n = strlen(str);
manachar();
if (judge() == 0) printf("alindrome\n");
else if (judge() == 1) printf("palindrome\n");
else printf("simple\n");
}
return 0;
}

最新文章

  1. sql表别名
  2. iOS - OC 异常处理
  3. input 字符限制
  4. 图片放大镜(像淘宝浏览商品一样)JS操作
  5. org.apache.hadoop.filecache-*
  6. AFNetworking源码分析
  7. RecyclerView.Adapter
  8. 51nod1119(除法取模)
  9. 3555: [Ctsc2014]企鹅QQ
  10. Java-Properties用法-入门
  11. HTML5标签总结笔记
  12. 关于一些php规范
  13. docker设置固定ip地址
  14. 201621123043 《Java程序设计》第2周学习总结
  15. Binding介绍
  16. rest_framework之权限源码剖析
  17. 容器化-Docker介绍
  18. 近期Freecodecamp问题总结
  19. wampserver安装
  20. HDU1536 S-Nim(sg函数变换规则)

热门文章

  1. P1260 工程规划 (差分约束)
  2. 使用electron将单页面vue webapp 打包成 PC端应用
  3. Nginx配置https双向认证
  4. POJ3625 Building Roads
  5. vue.js源码学习分享(七)
  6. 批处理命令之Start的详细用法
  7. How to debug Android Native Application with eclipse
  8. 开发使用mysql的一些必备知识点整理(四)与python交互
  9. Lucene.net站内搜索-最简单搜索引擎代码
  10. PHP将emoji表情进行过滤