【POJ2406】Power Strings(hash/kmp)
题目地址:http://poj.org/problem?id=2406
题目:
求字符串是由多少个重复的子串组成的
解题思路:
kmp解法见:https://blog.csdn.net/Cassie_zkq/article/details/81665153
求出字符串的hash数组,从小到大枚举长度,和原字符串匹配,符合条件就输出。
ac代码:
#include <cmath>
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>
using namespace std;
typedef unsigned long long ll;
const ll maxn = 1000005;
ll p = 233333,len = 0;
char s[maxn];
ll has[maxn], power[maxn];
void init()//预处理p^n
{power[0] = 1;for(int i = 1; i < maxn; i++)power[i] = power[i - 1] * p;
}
bool judge(int st)
{for(int i = st * 2; i <= len; i += st){ll tmp = has[i] - has[i - st] * power[st];if(tmp != has[st]) return false;}return true;
}
int main ()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);init();while(scanf("%s",s+1)){if(s[1] == '.') break;len = strlen(s + 1);has[0] = 0;for(int i = 1; i <= len; i++)has[i] = has[i - 1] * p + (ll)(s[i] - 'a' + 1);for(int i = 1; i <= len ; i++){if(len % i == 0 && judge(i)){printf("%llu\n", len / i);break;}}}return 0;
}
【POJ2406】Power Strings(hash/kmp)相关推荐
- 【POJ2406】Power Strings(KMP)
problem 求每个字符串的最短循环子串,输出循环次数 solution 任何一个字符串的[1,Next[n]]与[n-Next[n],n]一定是匹配的. 那么如果n%(n-Next[n])==0, ...
- 【bzoj1251】序列终结者(伸展树)
[bzoj1251]序列终结者(伸展树) Description 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我 ...
- 【BZOJ4405】【WC2016】挑战NPC(带花树)
[BZOJ4405][WC2016]挑战NPC(带花树) 题面 BZOJ 洛谷 Uoj Description 小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样的题目: 有n个 ...
- luogu P3808 【模板】AC自动机(简单版)
二次联通门 : luogu P3808 [模板]AC自动机(简单版) /*luogu P3808 [模板]AC自动机(简单版)手速越来越快了10分钟一个AC自动机一遍过编译 + 一边AC感觉不错我也就 ...
- 【BZOJ4004】装备购买(线性基)
[BZOJ4004]装备购买(线性基) 题面 BZOJ 洛谷 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am ...
- 【BZOJ5213】[ZJOI2018]迷宫(神仙题)
[BZOJ5213][ZJOI2018]迷宫(神仙题) 题面 BZOJ 洛谷 题解 首先可以很容易的得到一个\(K\)个点的答案. 构建\(K\)个点分别表示\(mod\ K\)的余数.那么点\(i\ ...
- 【matlab】三维曲面(矩形网格---meshgrid)
[matlab]三维曲面(矩形网格-meshgrid) 二维曲线: 先找到x,找到对应的y,绘制点. >> x=1:2*pi; >> y=sin(x); >> pl ...
- 【机器学习】因子分解机(Factorization Machine)原理与java实现
[机器学习]因子分解机(Factorization Machine)原理与java实现 1.因子分解机原理 1.1.分离超平面 1.2.阈值函数 1.3.样本概率 1.4.损失函数 1.5.随机梯度下 ...
- 【音频】削波失真(爆音)问题定位与解决
[音频]削波失真(爆音)问题定位与解决 Why:为什么要解决削波失真问题? What:什么是削波失真,如何定位 用户反馈的现象 音频异常环节定位 音频异常是发生在音频处理的哪个环节? 不同的音频采集方 ...
- 【CF833D】Red-Black Cobweb(点分治)
[CF833D]Red-Black Cobweb(点分治) 题面 CF 有一棵树,每条边有一个颜色(黑白)和一个权值,定义一条路径是好的,当且仅当这条路径上所有边的黑白颜色个数a,b满足2min(a, ...
最新文章
- Centos环境下实现DNS的智能解析
- 华为云查询弹性云服务器规格信息,通用计算型弹性云服务器规格介绍详情-华为云...
- word2vec原理_深入理解Word2Vec底层原理
- 计算机不定时黑屏,联想一体机电脑不定时黑屏是怎么回事?
- 04737 c++ 自学考试2019版 第二章课后程序设计题 3
- 一个表格,一部分允许编辑,有公式的单元格不允许编辑
- 解决百度 ueditor v1.4.3 编辑器上传图片失真的bug?
- Linux中的常用命令
- wpf之通过MVVM绑定MouseEnter
- Hadoop高级培训课程大纲-开发者版
- 目前主流的app制作方法有哪些?
- 小米平板2刷android,小米平板2怎么刷回MIUI 小米平板2刷回MIUI教程
- html的link标签
- 重新排列数组的数,使得负数都排在正数的前面
- C++中关于数据小数点,取整的方法
- AAC音频文件添加ADTS头
- 第一次学习计划(含用pytorch跑通mnist例子)
- 小心!除了植入木马,你的充电宝可能还在窃听你,受害人遍布全国
- JS树结构操作:查找、遍历、筛选、树结构和列表结构相互转换
- 顺顺网页电子表格控件开源下载
热门文章
- 【JavaEE】第一章线程和多线程
- Unity的包体压缩以及音效优化
- 2580 php to yuan,PHP版汉字转拼音类-ASCII版本 | 学步园
- Redlock(redis 分布式锁)原理分析
- linux下修改mysql数据存储_Linux下修改MySQL数据存放目录方法及可能遇到的问题--转...
- 用计算机控制人造卫星和导弹发射,广西成人高校计算机实用基础统考理论试题(...
- 布局篇(1)—If you love css …
- Android Studio第三十六期 - 模块化Activity管理Fragment
- NodeJS stream 一:Buffer
- JavaScript_高程三_01