hihocoder-1032
来源:互联网 发布:好用的拼图软件 编辑:程序博客网 时间:2024/04/28 01:04
T了很多次居然卡strlen,strlen是O(n)复杂度的,所以说以后不要经常用了。。。。。。
#include <cstdio>#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <cctype>#include <climits>#include <ctime>#include <iostream>#include <algorithm>#include <map>#include <vector>#include <queue>#include <utility>#include <stack>#include <functional>#define _min(x, y) ((x)<(y)?(x):(y))using namespace std;typedef long long lovelive;const int inf = INT_MAX;const double pai = acos(-1.0);const double gold = (sqrt(5.0) - 1.0) / 2.0;char base_arr[1000117], use_arr[2000117];int rec_arr[2000117];int n, len;void init(){ int i, j, k; memset(base_arr, 0, sizeof(base_arr)); memset(use_arr, 0, sizeof(use_arr)); memset(rec_arr, 0, sizeof(rec_arr));return ;}void input_data(){ int i, j, k; scanf("%s", base_arr); j = 0; len = strlen(base_arr); use_arr[j] = '#'; for(i = 0; i < strlen(base_arr); ++i) { use_arr[j++] = '#'; use_arr[j++] = base_arr[i];// use_arr[2 * i + 1] = base_arr[i];// use_arr[2 * i + 2] = '#'; } use_arr[j] = '#';return ;}void solve(){ int i, j, k; len = len * 2 + 1; int id, mx = 0; for(i = 0; i < len; ++i) { if(mx > i) { rec_arr[i] = _min(rec_arr[id * 2 - i], rec_arr[id] + id - i); } else { rec_arr[i] = 1; } while(use_arr[i - rec_arr[i]] == use_arr[i + rec_arr[i]] && i - rec_arr[i] >= 0 && i + rec_arr[i] < len) { rec_arr[i] += 1; } if(rec_arr[i] + i > mx) { id = i; mx = rec_arr[i] + i; } }return ;}void output_data(){ int i, j, k; k = 1; for(i = 0; i < len; ++i) { if(rec_arr[i] > k) k = rec_arr[i]; } printf("%d\n", k - 1);return ;}int main(int argc, char const *argv[]){#ifndef ONLINE_JUDGE// freopen("in.in", "r", stdin);// freopen("out.out", "w", stdout);#endif // ONLINE_JUDGE int i, j, k; while(scanf("%d", &n) != EOF) { while(n--) { init(); input_data(); solve(); output_data(); } }return 0;}
0 0
- hihocoder-1032
- hihocoder 1032
- hihoCoder 1032
- hihocoder #1032 manacher
- hihocoder 1032(manacher)
- hihocoder:
- hihoCoder
- Hihocoder
- hihocoder
- hihocoder
- hihocoder
- hihocoder
- hihocoder
- HihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- BZOJ 2146 Construct 计算几何
- 【Linux是什么】 Linux的特色
- Piwik统计添加用户ID编号
- 【设计模式】Iterator迭代器设计模式(容器和容器的遍历)
- 失恋阵线同盟
- hihocoder-1032
- 人工智能中的局部搜索算法
- android中ListView控件&&onItemClick事件中获取listView传递的数据
- 人工智能中的常用搜索策略
- STC15F2K60S2系列单片机
- 逐行打印二叉树
- VMware虚拟机中CentOS网络设置
- 使用ColorMatrix将imageview变为灰色
- EL常用表达式