HDOJ3746 Cyclic Nacklace(kmp)
来源:互联网 发布:mac快捷键向上箭头 编辑:程序博客网 时间:2024/04/29 21:38
题目链接:点击打开链接
给你一个字符串,问你最少添加几个字符可以使字符串有循环节。
利用nxt数组的性质,len - nxt[len]即为字符串的最小循环节,且如果len % (len - nxt[len]) == 0,那么当前字符串就是有循环节的,且
最小循环节为len / (len - nxt[len])。
AC代码:
#include "iostream"#include "cstdio"#include "cstring"#include "algorithm"using namespace std;const int MAXN = 1e5 + 5;char s[MAXN];int nxt[MAXN], len;void get_nxt(){nxt[1] = 0;int j = 0;for(int i = 2; i <= len; ++i) {while(j > 0 && s[j + 1] != s[i])j = nxt[j];if(s[j + 1] == s[i]) j++;nxt[i] = j;}}int main(int argc, char const *argv[]){int t;scanf("%d", &t);while(t--) {memset(nxt, 0, sizeof(nxt));scanf("%s", s + 1);len = strlen(s + 1);get_nxt();int ans = len - nxt[len];if(ans == len) printf("%d\n", len);else if(len % ans == 0) printf("0\n");else printf("%d\n", ans - len % ans);}return 0;}
1 0
- HDOJ3746 Cyclic Nacklace(kmp)
- 【KMP】 hdu3746 Cyclic Nacklace
- HDU3746-Cyclic Nacklace(KMP)
- HDU3746 Cyclic Nacklace 【KMP】
- hdu3746 Cyclic Nacklace(KMP)
- HDU_3746 Cyclic Nacklace(KMP)
- hdu3746 Cyclic Nacklace--KMP
- hdu Cyclic Nacklace kmp
- HDU3746 Cyclic Nacklace(KMP)
- HDU3746--Cyclic Nacklace (Kmp)
- HDU3746 Cyclic Nacklace (KMP)
- KMP hdu-3746-Cyclic Nacklace
- HDU 3746 Cyclic Nacklace(KMP)
- HDU 3746 Cyclic Nacklace KMP
- HDU 3746 Cyclic Nacklace KMP
- HDU 3746 Cyclic Nacklace KMP
- hdu 3746 Cyclic Nacklace(KMP)
- HDU 3746 Cyclic Nacklace KMP
- 规律+DFS Codeforces Round div2 D. Equivalent Strings
- [笨鸟先飞] 结构体初始化
- hdu 1001 Java大数简单方法
- 冒泡排序
- SQL.Cookbook学习笔记一(使用字符串)
- HDOJ3746 Cyclic Nacklace(kmp)
- ckeditor使用教程及开放图片上传接口
- 201510.6北斗笔记1
- C语言中的多维数组
- 退出键盘 IBAction,IBOutlet
- Ubuntu用超级管理员root帐户登录
- 1002. A+B for Polynomials
- Supermarket
- oAuth