正题

luogu链接:https://www.luogu.org/problemnew/show/CF7D


题目大意

定义kkk级回文串为一个字符串的(1,⌊n/2⌋)(1,\lfloor n/2 \rfloor)(1,⌊n/2⌋)和(n−⌊n/2⌋,n)(n-\lfloor n/2 \rfloor,n)(n−⌊n/2⌋,n)都是k−1k-1k−1级回文串。

求这个字符的所有前缀的回文串等级和。


解题思路

其实挺简单的,如果一个前缀是回文串,那么fi=f⌊i/2⌋+1f_i=f_{\lfloor i/2\rfloor}+1fi​=f⌊i/2⌋​+1
然后答案就是∑i=1nfi\sum_{i=1}^nf_i∑i=1n​fi​
然后字符串hashhashhash判断回文串就好了


codecodecode

#include<cstdio>
#include<algorithm>
#include<cstring>
#define ull unsigned long long
using namespace std;
const int N=5e6+10;
const ull p=233;
int n,f[N],ans;
char s[N];
ull ha[N],pows[N],fha[N];
ull ask(int l,int r)
{return ha[r]-ha[l-1]*pows[r-l+1];}
ull fask(int l,int r)
{return fha[l]-fha[r+1]*pows[r-l+1];}
int main()
{scanf("%s",s+1);n=strlen(s+1);pows[0]=1;for(int i=1;i<=n;i++){pows[i]=pows[i-1]*p;ha[i]=ha[i-1]*p+(s[i]-'a');}for(int i=n;i>=1;i--)fha[i]=fha[i+1]*p+(s[i]-'a');ans=f[1]=1;for(int i=2;i<=n;i++)if(ask(1,i/2)==fask((i+1)/2+1,i))f[i]=f[i/2]+1,ans+=f[i];printf("%d",ans);
}

CF7D-Palindrome Degree【字符串hash,dp】相关推荐

  1. CodeForces 7D Palindrome Degree 字符串hash

    题目链接:点击打开链接 #include<stdio.h> #include<iostream> #include<string.h> #include<se ...

  2. codeforces7D Palindrome Degree(manacheramp;dp或Hshamp;dp)

    D. Palindrome Degree time limit per test 1 second memory limit per test 256 megabytes input standard ...

  3. Palindrome Degree(hash的思想题)

    个人心得:这题就是要确定是否为回文串,朴素算法会超时,所以想到用哈希,哈希从左到右和从右到左的key值一样就一定是回文串, 那么问题来了,正向还能保证一遍遍历,逆向呢,卡住我了,后面发现网上大神的秦九 ...

  4. codeforces7D Palindrome Degree(manacherdp或Hshdp)

    D. Palindrome Degree time limit per test 1 second memory limit per test 256 megabytes input standard ...

  5. cf244D. Match amp; Catch 字符串hash (模板)或 后缀数组。。。

    D. Match & Catch 能够用各种方法做.字符串hash.后缀数组,dp.拓展kmp,字典树.. . 字符串hash(模板) http://blog.csdn.net/gdujian ...

  6. 深圳神牛python培训_请教神牛_字符串hash

    针对字符串hash 我早就听闻可以暴力的干一些事情. 比如 可以... 很多很多 实现O(n)求出 模式串在文本串出现的次数. 但是我不会这什么hash. 我会自然溢出字符串hash 嘿嘿 unsig ...

  7. hdu4821 字符串hash

    参考博客:点击打开链接 字符串hash典例. 这里用的是bkdrhash 法.也是最常用的冲突最少的一种.原理:把字符串和数值对应.这里用base=31(一般用质数), 先是扫一遍,处理处每个位子到结 ...

  8. hdu4821 字符串hash(有多少(M*L长的,M个不相同)子串))

    题意这英语..反正我是读不懂== 题意:给定一个串,有多少M*L的子串,其中子串的M个子串不相同= (注:某一位不相同即为不相同) 很明显要On的扫,但是似乎前一个与后一个没有关系?是的,前第x个(x ...

  9. 字符串Hash的原理与应用

    字符串Hash无论是在ACM竞赛中还是在工程中都有着广泛的应用,所以很有必要掌握好它的用法.主要分为两个部 分:Hash映射和冲突处理.而本文主要来详细讲解Hash映射的方法及应用,下篇文章将会介绍如 ...

最新文章

  1. 英国JIC院士组3.8万英镑招博后-植物代谢物与微生物组-截止6月27日
  2. 差分能量分析介绍(五)
  3. 发现一个好工具RenderDoc
  4. 蛋白质合成有关的分子生物学知识问答
  5. js字符串替换_浅析Vue的生命周期以及JS异步
  6. 粗读《构建之法》后的思考和收获
  7. 浙大计算机专硕培养方案,浙江大学硕士研究生培养方案
  8. 云计算将会让数据中心消失?
  9. Python常见的17个错误
  10. 《深入浅出MFC》第三章 MFC六大关键技术之仿真
  11. python selenium下载图片_selenium下载图片(原图)
  12. qt引入txt文件_QT 读取txt文件的几种方法
  13. vue emoji编辑器
  14. 带键盘的java模拟器_虚拟键盘实现!JAVA模拟器PSPKVM v0.3.2推出
  15. java 股票数据抓取_慢牛系列一:如何抓取股票数据
  16. 手机微信中的文档存放位置
  17. matlab emd imf波形,emd分解后画出IMF的波形
  18. 淘宝api接口系列,获取sku详细信息
  19. 最常用的5个网页自动化点击工具
  20. FPGA数字系统设计(9)——信号产生

热门文章

  1. Java秘技之Json数据解析与转换 -- Java使用示例
  2. mysql数据库熟悉表空间数据文件_Oracle表空间和数据文件
  3. python 中文编码差异_Python 编码为什么那么蛋疼?
  4. java基础输入输出语句
  5. linux cpu load 值,理解Linux系统中的load average(图文版)转
  6. php冒泡程序讲解,PHP冒泡排序程序代码与源代码
  7. sas sql中有类似mysql的 g_SAS中的SQL
  8. 允许服务与桌面交互_在后全面屏时代 手机需要什么样的人机交互?
  9. word List 10
  10. 邻值查找—算法进阶指南