Wannafly挑战赛11 D 题 字符串hash + 卡常
题目链接
https://ac.nowcoder.com/acm/contest/73#question
map与order_map
https://blog.csdn.net/BillCYJ/article/details/78985895
解析 先把T串的所有状态的hash值存在order_map里面 然后对于每一个模式串计算其每一个长度为len(T)的子串的hash值 若在order_map里面则ans++
这道题1e7的数据查找比较多map(O(log(n)) 查找会比 order_map( O(1) )慢 然后再卡卡常就可以了。。。正解是ex_kmp
AC代码
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int maxn=2e6+;
const int base=; //base,基数 char s1[maxn],s2[maxn];
ull Hash[maxn],temp[maxn],power=; //记录主串哈希值的数组 int main()
{
scanf("%s",s1+); //从第一位开始输入
int n=strlen(s1+);
Hash[]=;
for(int i=;i<=n;i++)
{
s1[i+n]=s1[i];
power*=base;
Hash[i]=Hash[i-]*base+(ull)s1[i];
}
unordered_map<ull,int> ma;
for(int i=n+;i<=n+n;i++)
{
Hash[i]=Hash[i-]*base+(ull)s1[i];
ma[Hash[i]-Hash[i-n]*power]=;
}
int k;
scanf("%d",&k);
while(k--)
{
int ans=;
scanf("%s",s2+);
int m=strlen(s2+);
if(m<n)
{
printf("0\n");
continue;
}
temp[]=;
for(int i=;i<=m;i++)
{
temp[i]=temp[i-]*base+(ull)s2[i];
if(i>=n&&ma[temp[i]-temp[i-n]*power])
ans++;
}
printf("%d\n",ans);
}
return ;
}
Wannafly挑战赛11 D 题 字符串hash + 卡常的更多相关文章
- 牛客网 Wannafly挑战赛11 B.白兔的式子-组合数阶乘逆元快速幂
链接:https://www.nowcoder.com/acm/contest/73/B来源:牛客网 B.白兔的式子 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K, ...
- 牛客网 Wannafly挑战赛11 A.白兔的分身术
水一水博客. 链接:https://www.nowcoder.com/acm/contest/73/A来源:牛客网 A.白兔的分身术 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...
- wannafly 练习赛11 B 假的字符串(字典树+建边找环)
链接:https://www.nowcoder.com/acm/contest/59/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit ...
- Wannafly挑战赛5 补题
A 珂朵莉与宇宙 题目链接: https://www.nowcoder.com/acm/contest/36/A 思路: 科学暴力:枚举前缀和,同时计算前缀和里面可能出现的完全平方数,匹配前缀和 与完 ...
- hihoCoder #1165 : 益智游戏 (挑战赛11 B题)
题意:在一个序列中找到两个数a和b,使得a*b的因子个数最多,输出最多的因子个数. 思路:数据较多,处理会很慢.对序列中每个数字进行质数分解求因子个数,然后按照因子个数降序排列,对前50个因子最多的数 ...
- Wannafly挑战赛11
就做了两个数学题 链接:https://www.nowcoder.com/acm/contest/73/A来源:牛客网 白兔的分身术 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2 ...
- hdu 4821 字符串hash+map判重 String (长春市赛区I题)
http://acm.hdu.edu.cn/showproblem.php?pid=4821 昨晚卡了非常久,開始TLE,然后优化了之后,由于几个地方变量写混.一直狂WA.搞得我昨晚都失眠了,,. 这 ...
- 洛谷P3234 抄卡组 [HNOI2014] 字符串hash
正解:字符串hash 解题报告: 传送门! 字符串hash是字符串匹配中很常见的一个方法,原理也很好懂,这里就不做太多阐述辣有时间放到hash笔记里面去QAQ 题意不说了挺好理解的,自带一句话概括好评 ...
- leecode刷题(11)-- 反转字符串
leecode刷题(11)-- 反转字符串 反转字符串 描述: 编写一个函数,其作用是将输入的字符串反转过来. 示例 1: 输入: "hello" 输出: "olleh& ...
随机推荐
- PAT (Advanced Level) Practise - 1096. Consecutive Factors (20)
http://www.patest.cn/contests/pat-a-practise/1096 Among all the factors of a positive integer N, the ...
- ios之UIPopoverController
UIPopoverController是iPad上的iOS开发会常用到的一个组件(在iPhone设备上不允许使用),这个组件上手很简单,因为他的显示方法很少,而且参数简单,但我在使用过程中还常碰到各种 ...
- js的工厂模式
工厂模式: 什么叫工厂模式,工厂就是大家大脑里想的那样,一个流水线作业的一个东西,只需要满足刚需就可以了,一个人,只干一件事,最后串起来,就是一个事件. 首先需要说一下工厂模式.工厂模式根据抽象程度的 ...
- c++ 读取一行的2个数
#include <iostream> using namespace std; double harmonicMean(double x, double y); int main() { ...
- 【Java_基础】Java中Native关键字的作用
本篇博文转载与:Java中Native关键字的作用
- bash初识,特性,用法/网站
目录 一.Bash初识 Bash Shell介绍 Bash Shell的作用 Bash 两种方式 命令提示符 二.Shell的基本语法 三.Shell的基本特性 1.命令补全 tab 2. Linux ...
- AtCoder Beginner Contest 098 D - Xor Sum 2
D - Xor Sum 2 Time limit : 2sec / Memory limit : 1024MB Score : 500 points Problem Statement There i ...
- eclipse去除js(JavaScript)验证错误
第一步: 去除eclipse的JS验证: 将windows->preference->Java Script->Validator->Errors/Warnings-> ...
- H.264分层结构与码流结构
H.264分层结构 H.264编码器输出的Bit流中,每个Bit都隶属于某个句法元素.句法元素被组织成有层次的结构,分别描述各个层次的信息. 在H.264 中,句法元素共被组织成 序列.图像.片.宏 ...
- poj--2139
Description The cows have been making movies lately, so they are ready to play a variant of the famo ...