manacher+dp.其实理解manacher就可以解了,大水题,dp就是dp[i]=dp[i>>1]+1如何满足k-palindrome条件。

 /* 7D */
#include <iostream>
#include <string>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <vector>
#include <deque>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <ctime>
#include <cstring>
#include <climits>
#include <cctype>
#include <cassert>
#include <functional>
#include <iterator>
#include <iomanip>
using namespace std;
//#pragma comment(linker,"/STACK:102400000,1024000") #define sti set<int>
#define stpii set<pair<int, int> >
#define mpii map<int,int>
#define vi vector<int>
#define pii pair<int,int>
#define vpii vector<pair<int,int> >
#define rep(i, a, n) for (int i=a;i<n;++i)
#define per(i, a, n) for (int i=n-1;i>=a;--i)
#define clr clear
#define pb push_back
#define mp make_pair
#define fir first
#define sec second
#define all(x) (x).begin(),(x).end()
#define SZ(x) ((int)(x).size())
#define lson l, mid, rt<<1
#define rson mid+1, r, rt<<1|1 const int maxn = 5e6+;
int dp[maxn];
int Len[maxn*];
char s[maxn];
char d[maxn*]; void init() {
int slen = strlen(s);
int j = ; d[j++] = '$';
d[j++] = '#';
rep(i, , slen) {
d[j++] = s[i];
d[j++] = '#';
}
} void manacher() {
int dlen = strlen(d);
int p = , p0 = ; rep(i, , dlen) {
if (p > i)
Len[i] = min(p-i, Len[*p0-i]);
else
Len[i] = ;
while (d[i+Len[i]] == d[i-Len[i]])
++Len[i];
if (i + Len[i] > p) {
p = i + Len[i];
p0 = i;
}
}
} void solve() {
init();
manacher(); int slen = strlen(s);
int ans = ; dp[] = ;
rep(i, , slen+) {
if (Len[i+] >= i+) {
dp[i] = dp[i>>] + ;
}
ans += dp[i];
} printf("%d\n", ans);
} int main() {
ios::sync_with_stdio(false);
#ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
freopen("data.out", "w", stdout);
#endif scanf("%s", s);
solve(); #ifndef ONLINE_JUDGE
printf("time = %d.\n", (int)clock());
#endif return ;
}

最新文章

  1. 基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
  2. 【Beta】七天屠蛟记
  3. java项目中build path的设置
  4. 《Effective Java》—— 创建与销毁对象
  5. (IOS)BaiduFM 程序分析
  6. make -e install ,,,make命令的-e选项!
  7. MySQL STRAIGHT_JOIN
  8. 主机设置ss代理,虚拟机共享代理
  9. Halcon算子翻译——assign
  10. Spring Boot分布式系统实践【基础模块构建3.3】注解轻松实现操作日志记录
  11. 20165223 《信息安全系统设计基础》 实现mypwd
  12. nmon安装与使用
  13. fineui排序问题
  14. OS + Windows 10 / office excel vlookup / CredSSP
  15. 【Android】Android 设置Activity窗体 不显示标题和全屏显示
  16. nginx配置指南
  17. jmeter属性与变量
  18. 【BZOJ2300】【SCOI2011】糖果
  19. oslo_service服务
  20. Android—将Bitmap图片保存到SD卡目录下或者指定目录

热门文章

  1. 如何搭建javaweb 开发环境
  2. WCF学习系列一_创建第一个WCF服务
  3. php导出execl
  4. Oracle start with.connect by prior子句实现递归查询
  5. Unity中使用RequireComponent,没有添加上组件
  6. java新手笔记3 运算符&amp;循环
  7. 安卓模拟器还是&quot;genymotion&quot;最靠谱.
  8. JavaWeb网上商城的反思
  9. 设计模式之开篇(C#语法)
  10. linux运维工程师,必须掌握以下几个工具