POJ3461Oulipo 题解
题目大意:
求字符串A在字符串B中出现的次数。
思路:
KMP板题,用Hash也可水过~要学习KMP可参考http://blog.csdn.net/u011564456/article/details/20862555
代码:
KMP:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std; char s1[],s2[];
int next[]; int main()
{
int n,i,l1,l2,j,ans;
scanf("%d",&n);
while (n--)
{
scanf("%s%s",s1,s2);
l1=strlen(s1),l2=strlen(s2);
for(j=next[]=,i=;i<l1;i++)
{
for (;j && s1[j]^s1[i];j=next[j-]);
if (s1[i]==s1[j]) j++;
next[i]=j;
}
for (i=j=ans=;j<l2;j++)
{
for (;i && s1[i]^s2[j];i=next[i-]);
if (s1[i]==s2[j]) i++;
if (i==l1) ans++,i=next[i-];
}
printf("%d\n",ans);
}
return ;
}
Hash:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int S=,mod=,N=,M=;
char s1[N],s2[M];
long long Hash1[N],Hash2[M],mi[M]; int gethash(int l,int r)
{
return (Hash2[r]-Hash2[l-]*mi[r-l+]%mod+mod)%mod;
} int main()
{
int n,i,j,l1,l2,ans;
for (mi[]=i=;i<=M;i++) mi[i]=mi[i-]*S%mod;
scanf("%d",&n);
while (n--)
{
scanf("%s%s",s1+,s2+);
l1=strlen(s1+),l2=strlen(s2+);
for (i=;i<=l1;i++) Hash1[i]=(Hash1[i-]+s1[i])*S%mod;
for (i=;i<=l2;i++) Hash2[i]=(Hash2[i-]+s2[i])*S%mod;
for (ans=,i=;i<=l2-l1+;i++)
if (gethash(i,i+l1-)==Hash1[l1]) ans++;
printf("%d\n",ans);
}
return ;
}
POJ3461Oulipo 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- 玩转Java对象和XML相互转换
最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于项目很庞大,我又是临时调度过去,导致在按照项目组长的要求进行写代码的同时,总是在这块云里雾里,最近才慢慢开始搞清楚项目中具体的使用缘由 ...
- mysql列类型
mysql三大列类型 整型 tinyint(占据空间:1个字节 存储范围 有符号 -128-127 无符号 0-255) smallint mediumint int big ...
- jquery学习笔记---requirejs 和模块化编程
http://www.cnblogs.com/lisongy/p/4711056.html jquery模块化编程:http://www.cnblogs.com/digdeep/p/4602460.h ...
- Qt Designer 修改窗体大小改变控件位置
一.新建一个窗体 用qt designer 新建一个QWidget窗体, 在窗体中右键 选择布局, 发现布局是选择不了的,这个是因为窗体里面没有添加控件, 任意添加空间后便可选择 右键-- 布局-- ...
- settimeout,cleartimeout的使用分析
设置时间的定时轮回执行,大家想到的js也就是settimeout这个方法,这个方法确实能够实现定时反复执行的功能,clearttimeout这是清理或者是暂停轮回执行的情况.可是发现clearttim ...
- 同一服务器配置DataGuard
实验环境:1.虚拟机VMware Server 1.0.62.操作系统:ora10g@linux5 /home/oracle$ cat /etc/redhat-releaseRed Hat Enter ...
- Code Review for SSIS package
以下是我对SSIS包进行code review的一些建议,如果有其他更好的方案欢迎拍砖. A. 查看是否使用了最优的解决方案 1. 最优的结构视图 2. 解决方案,包,任务,组建,参数的命名使用了易读 ...
- Oracle 10g Block Change Tracking特性
Using Block Change Tracking to Improve Incremental Backup Performance 使用块改变跟踪改善增量备份的性能 The block cha ...
- cordova
cordova 1.安装 nodejs => node -v2.安装 npm install -g cordova => cordova -v3.安装 jdk 环境变量:(系统变量) 新建 ...
- 无法启动程序 ”*.lib”
解决办法: 把含有入口函数(main函数)的 工程 如 cpp-test 设置为启动项 具体操作: 选中 cpp-test 工程 右击 —> 设为启动项目