CF7D-Palindrome Degree【字符串hash,dp】
正题
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=1nfi
然后字符串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】相关推荐
- CodeForces 7D Palindrome Degree 字符串hash
题目链接:点击打开链接 #include<stdio.h> #include<iostream> #include<string.h> #include<se ...
- codeforces7D Palindrome Degree(manacheramp;dp或Hshamp;dp)
D. Palindrome Degree time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Palindrome Degree(hash的思想题)
个人心得:这题就是要确定是否为回文串,朴素算法会超时,所以想到用哈希,哈希从左到右和从右到左的key值一样就一定是回文串, 那么问题来了,正向还能保证一遍遍历,逆向呢,卡住我了,后面发现网上大神的秦九 ...
- codeforces7D Palindrome Degree(manacherdp或Hshdp)
D. Palindrome Degree time limit per test 1 second memory limit per test 256 megabytes input standard ...
- cf244D. Match amp; Catch 字符串hash (模板)或 后缀数组。。。
D. Match & Catch 能够用各种方法做.字符串hash.后缀数组,dp.拓展kmp,字典树.. . 字符串hash(模板) http://blog.csdn.net/gdujian ...
- 深圳神牛python培训_请教神牛_字符串hash
针对字符串hash 我早就听闻可以暴力的干一些事情. 比如 可以... 很多很多 实现O(n)求出 模式串在文本串出现的次数. 但是我不会这什么hash. 我会自然溢出字符串hash 嘿嘿 unsig ...
- hdu4821 字符串hash
参考博客:点击打开链接 字符串hash典例. 这里用的是bkdrhash 法.也是最常用的冲突最少的一种.原理:把字符串和数值对应.这里用base=31(一般用质数), 先是扫一遍,处理处每个位子到结 ...
- hdu4821 字符串hash(有多少(M*L长的,M个不相同)子串))
题意这英语..反正我是读不懂== 题意:给定一个串,有多少M*L的子串,其中子串的M个子串不相同= (注:某一位不相同即为不相同) 很明显要On的扫,但是似乎前一个与后一个没有关系?是的,前第x个(x ...
- 字符串Hash的原理与应用
字符串Hash无论是在ACM竞赛中还是在工程中都有着广泛的应用,所以很有必要掌握好它的用法.主要分为两个部 分:Hash映射和冲突处理.而本文主要来详细讲解Hash映射的方法及应用,下篇文章将会介绍如 ...
最新文章
- 英国JIC院士组3.8万英镑招博后-植物代谢物与微生物组-截止6月27日
- 差分能量分析介绍(五)
- 发现一个好工具RenderDoc
- 蛋白质合成有关的分子生物学知识问答
- js字符串替换_浅析Vue的生命周期以及JS异步
- 粗读《构建之法》后的思考和收获
- 浙大计算机专硕培养方案,浙江大学硕士研究生培养方案
- 云计算将会让数据中心消失?
- Python常见的17个错误
- 《深入浅出MFC》第三章 MFC六大关键技术之仿真
- python selenium下载图片_selenium下载图片(原图)
- qt引入txt文件_QT 读取txt文件的几种方法
- vue emoji编辑器
- 带键盘的java模拟器_虚拟键盘实现!JAVA模拟器PSPKVM v0.3.2推出
- java 股票数据抓取_慢牛系列一:如何抓取股票数据
- 手机微信中的文档存放位置
- matlab emd imf波形,emd分解后画出IMF的波形
- 淘宝api接口系列,获取sku详细信息
- 最常用的5个网页自动化点击工具
- FPGA数字系统设计(9)——信号产生
热门文章
- Java秘技之Json数据解析与转换 -- Java使用示例
- mysql数据库熟悉表空间数据文件_Oracle表空间和数据文件
- python 中文编码差异_Python 编码为什么那么蛋疼?
- java基础输入输出语句
- linux cpu load 值,理解Linux系统中的load average(图文版)转
- php冒泡程序讲解,PHP冒泡排序程序代码与源代码
- sas sql中有类似mysql的 g_SAS中的SQL
- 允许服务与桌面交互_在后全面屏时代 手机需要什么样的人机交互?
- word List 10
- 邻值查找—算法进阶指南