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 & ...
随机推荐
- 2 配置Ionic开发环境以及创建新的项目
1.开发环境需要的软件有: node.js http://nodejs.org 可以到官方网站下载对应平台的安装包安装即可,如果已经安装,需要把它升级到最新的稳定版本 在终端可以输入$node ...
- 查看centos的版本
[root@NB Desktop]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4 ...
- elk深度解析
上面的两张图是elk的一个架构 下面是对logstash分析:如下图 可以看出 logstash的一个角色shipper,(是通过配置文件来决定logstash是shipper还是indexer)注意 ...
- eclipse使用tips-Toggle Mark Occurrences 颜色更改
Toggle Mark Occurrences这个功能非常好用,能把选中的方法/变量在本类中全部出现的地方高亮显示,是一个非常实用的功能.但是默认颜色是灰色,非常毁眼.可以通过下面的设置更改为自己喜欢 ...
- SQLAchemy Core学习之Reflection
如果以后万一有一个定义好了的库,可以用这种反射的方法,作常用的操作. #coding=utf-8 from datetime import datetime from sqlalchemy impor ...
- Ext.MessageBox消息框
Ext JS消息提示框主要包括:alert.confirm.prompt.show 1.Ext.MessageBox.alert() 调用格式: alert( String title, String ...
- sdut 2610:Boring Counting(第四届山东省省赛原题,划分树 + 二分)
Boring Counting Time Limit: 3000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 In this problem you a ...
- 【译】DotNet 5.4或者说 .NET平台标准
原文:DotNet 5.4 or .NET Platform Standards 是的,你看到的确实是"DotNet 5.4".使用Visual Studio 2015 RC1 u ...
- hdu 4010 动态树 @
kuangbin模板题,看起来十分高大上 /* *********************************************** Author :kuangbin Created Tim ...
- Linux下autoconf和automake使用
转载:www.cnblogs.com/itech/archive/2010/11/28/1890220.html