博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【CF】7 Beta Round D. Palindrome Degree
阅读量:5840 次
发布时间:2019-06-18

本文共 2069 字,大约阅读时间需要 6 分钟。

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

1 /* 7D */  2 #include 
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 #include
15 #include
16 #include
17 #include
18 #include
19 #include
20 #include
21 using namespace std; 22 //#pragma comment(linker,"/STACK:102400000,1024000") 23 24 #define sti set
25 #define stpii set
> 26 #define mpii map
27 #define vi vector
28 #define pii pair
29 #define vpii vector
> 30 #define rep(i, a, n) for (int i=a;i
=a;--i) 32 #define clr clear 33 #define pb push_back 34 #define mp make_pair 35 #define fir first 36 #define sec second 37 #define all(x) (x).begin(),(x).end() 38 #define SZ(x) ((int)(x).size()) 39 #define lson l, mid, rt<<1 40 #define rson mid+1, r, rt<<1|1 41 42 const int maxn = 5e6+5; 43 int dp[maxn]; 44 int Len[maxn*2]; 45 char s[maxn]; 46 char d[maxn*2]; 47 48 void init() { 49 int slen = strlen(s); 50 int j = 0; 51 52 d[j++] = '$'; 53 d[j++] = '#'; 54 rep(i, 0, slen) { 55 d[j++] = s[i]; 56 d[j++] = '#'; 57 } 58 } 59 60 void manacher() { 61 int dlen = strlen(d); 62 int p = 0, p0 = 0; 63 64 rep(i, 1, dlen) { 65 if (p > i) 66 Len[i] = min(p-i, Len[2*p0-i]); 67 else 68 Len[i] = 1; 69 while (d[i+Len[i]] == d[i-Len[i]]) 70 ++Len[i]; 71 if (i + Len[i] > p) { 72 p = i + Len[i]; 73 p0 = i; 74 } 75 } 76 } 77 78 void solve() { 79 init(); 80 manacher(); 81 82 int slen = strlen(s); 83 int ans = 1; 84 85 dp[1] = 1; 86 rep(i, 2, slen+1) { 87 if (Len[i+1] >= i+1) { 88 dp[i] = dp[i>>1] + 1; 89 } 90 ans += dp[i]; 91 } 92 93 printf("%d\n", ans); 94 } 95 96 int main() { 97 ios::sync_with_stdio(false); 98 #ifndef ONLINE_JUDGE 99 freopen("data.in", "r", stdin);100 freopen("data.out", "w", stdout);101 #endif102 103 scanf("%s", s);104 solve();105 106 #ifndef ONLINE_JUDGE107 printf("time = %d.\n", (int)clock());108 #endif109 110 return 0;111 }

 

转载于:https://www.cnblogs.com/bombe1013/p/4852322.html

你可能感兴趣的文章
Javascript学习总结
查看>>
php 用正则替换中文字符一系列问题解决
查看>>
ActiveMQ应用笔记一:基本概念&安装
查看>>
大话数据结构之四(串)
查看>>
加热炉简是新来的整个系统的板
查看>>
Mockito使用注意事项
查看>>
[LeetCode] Palindrome Linked List 回文链表
查看>>
UVA - 825Walking on the Safe Side(dp)
查看>>
android大概是通过logcat拦截Log
查看>>
关于codeMirror插件使用的一个坑
查看>>
评论:人才流失强力折射出现实畸形人才观
查看>>
git服务器gitlab之搭建和使用--灰常好的git服务器【转】
查看>>
基于机器学习的web异常检测——基于HMM的状态序列建模,将原始数据转化为状态机表示,然后求解概率判断异常与否...
查看>>
分享一种需求评审的方案
查看>>
虚拟运营商10月或大面积放号 哭穷背后仍有赢家
查看>>
Server2016开发环境配置
查看>>
分布式光伏发电建设中的逆变器及其选型
查看>>
增强网络安全防御 推动物联网走向应用
查看>>
UML中关联,组合与聚合等关系的辨析
查看>>
《大数据管理概论》一3.2 大数据存储与管理方法
查看>>