Cyclic Nacklace HDU
来源:互联网 发布:python 键盘输入 超时 编辑:程序博客网 时间:2024/06/05 07:16
题目传送门
题意:给你个字符串,问你最少添加几个字符可以让这个字符串至少循环两次。
思路:直接找最小覆盖子串,然后特判一下就可以了。
#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>#include <queue>#include <set>#include <stack>#include <string>#include <vector>#define MAXN 100010#define MAXE 100#define INF 1000000000#define MOD 10001#define LL long long#define ULL unsigned long long#define pi 3.14159using namespace std;int nex[MAXN];string str;void get_nex() { memset(nex, 0, sizeof(nex)); for (int i = 1, j = 0; i < str.length(); ++i) { while (j && str[i] != str[j]) { j = nex[j]; } if (str[i] == str[j]) { j++; } nex[i + 1] = j; }}int main() { std::ios::sync_with_stdio(false); int T; cin >> T; for (int kase = 1; kase <= T; ++kase) { cin >> str; get_nex(); int n = (int) str.length(); if (nex[n] == 0) { cout << n << endl; } else { int m = 0; if (n % (n - nex[n]) == 0) { m = n - nex[n]; } else { m = n % (n - nex[n]); } cout << n - nex[n] - m << endl; } } return 0;}
阅读全文
0 0
- HDU-3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- HDU-Cyclic Nacklace-3746
- hdu 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- VS一次性配置OpenCV教程
- [转] 深入理解Java中的String
- 排序详解:简单选择排序
- POJ 3694 Network 边双联通+缩点+LCA+统计桥
- 归并排序
- Cyclic Nacklace HDU
- Qt 学习之路 2(67):访问网络(3)
- Sklearn学习(二)——数据预处理(Normalization)
- 如何把本地文件上传至github?
- InputStreamReader读取文件中文乱码问题
- A value is trying to be set on a copy of a slice from a DataFrame
- [caioj 1114]多叉苹果树---树形dp+01背包
- 10月5日 c语言 将一个二维数组行和列的元素互换,存到另一个二维数组中
- POJ 2376 浅谈一类区间覆盖问题的贪心解法