题目描述

  给出两个串S1,S2(只有大写字母),求S1在S2中出现了多少次。

  例如:S1=“ABA”,S2=“ABABA”,答案为2。

  输入T组数据,对每组数据输出结果。

输入输出格式

输入格式

  第一行为T,表示有T组数据。

  接下来分别为每组数据的两个串S1,S2。

输出格式 

  T行,分别输出每组数据中S1在S2中出现的次数。
  每组数据保证S1长度≤10^4,S2长度≤10^6。

输入输出样例

输入样例

3

BAPC

BAPC

AZA

AZAZAZA

VERDI

AVERDXIVYERDIAN

输出样例

1

3

0

 

题解

  字符串hash裸题,注意子串可以重合,直接遍历即可。

#include <iostream>
#include <cstring>
#include <cstdio>

#define MAX_N 10000
#define MAX_M 1000000

using namespace std;

int t;
int n, m;
], s2[MAX_M | ];
unsigned ], h2[MAX_M | ];
unsigned ];

inline void Insert(char s[], int len, unsigned long long h[])
{
    h[] = s[] - 'A';
    ; i < len; ++i)
    {
        h[i] = h[i - ] *  + s[i] - 'A';
    }
    return;
}

int main()
{
    scanf("%d", &t);
    p[] = ;
    ; i <= MAX_N; ++i)
    {
        p[i] = p[i - ] * ;
    }
    while(t--)
    {
        scanf("%s%s", s1, s2);
        n = strlen(s1);
        m = strlen(s2);
        if(n > m)
        {
            printf("0\n");
            continue;
        }
        Insert(s1, n, h1);
        Insert(s2, m, h2);
        ;
        ] == h2[n - ])
        {
            ++ans;
        }
        ; i + n <= m; ++i)
        {
            ] == h2[i + n - ] - h2[i - ] * p[n])
            {
                ++ans;
            }
        }
        printf("%d\n", ans);
    }
    ;
}

参考程序

【题解】Oulipo的更多相关文章

  1. 题解报告:hdu 1686 Oulipo(裸KMP)

    Problem Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, w ...

  2. HDU 1686 Oulipo(KMP)题解

    题意:主串中能找到几个模式串 思路:超详细解释KMP KMP:针对这个代码,解释一下Fail数组的含义:T为主串,P为模式串,Fail代表失配值,即当P[j] != T[i]时,j要指向的位置为Fai ...

  3. POJ3461:Oulipo——题解

    http://poj.org/problem?id=3461 KMP板子,好久以前学过了,直接把板子粘上去即可. #include<cstdio> #include<cstring& ...

  4. POJ 3461 Oulipo KMP算法题解

    本题就是给出非常多对字符串,然后问一个字符串在另外一个字符串出现的次数. 就是所谓的Strstr函数啦. Leetcode有这道差点儿一模一样的题目. 使用KMP算法加速.算法高手必会的算法了. 另外 ...

  5. HDU1686 Oulipo 题解 KMP算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686 题目大意:给你一个子串t和一个母串s,求s中有多少个子串t. 题目分析:KMP模板题. cal_ ...

  6. C++之路进阶——poj3461(Oulipo)

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 35694   Accepted: 14424 Descript ...

  7. POJ 3461 Oulipo(乌力波)

    POJ 3461 Oulipo(乌力波) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] The French autho ...

  8. [POJ] 3461 Oulipo [KMP算法]

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23667   Accepted: 9492 Descripti ...

  9. 【POJ3461】Oulipo

    题面 The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter ...

随机推荐

  1. lwip lwiperf 方法进行性能测试 4.5MB/S

    硬件配置: STM32F407 + DP83848 + FreeRTOS V10.1.1 + LWIP 2.1.2    2018年12月5日14:31:24 1.先读取 PHY 寄存器 , 查看 自 ...

  2. Hadoop大数据平台构建

    基础:linux常用命令.Java编程基础大数据:科学数据.金融数据.物联网数据.交通数据.社交网络数据.零售数据等等. Hadoop: 一个开源的分布式存储.分布式计算平台.(基于Apache) H ...

  3. 欢迎到我的新Blog!

    https://winniechen.cn 里面的页面还不是很好看...争取改一下! 里面的题解大部分也会在这里更新! 谢谢各位捧场!

  4. 20155308 《网络攻防》 Exp3 免杀原理与实践

    20155308 <网络攻防> Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测 ...

  5. 第五节 HTML&CSS -- 关于浮动和清除浮动的解说,以及两个大坑不要踩

    1.随便唠叨几句   这一节课我会对浮动元素和怎样清除浮动相关的技术进行一个讲解,同时,我会列举一些我们前端开发中常见的坑,希望大家以后不要在这些地方犯错.在开始今天的课程之前,有一个东西我需要先讲一 ...

  6. 11.8 开课二个月零四天 (Jquery)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. [CF1063F]String Journey[后缀数组+线段树]

    题意 在 \(S\) 中找出 \(t\) 个子串满足 \(t_{i+1}\) 是 \(t_{i}\) 的子串,要让 \(t\) 最大. \(|S| \leq 5\times 10^5\). 分析 定义 ...

  8. PowerBI开发 第八篇:查询参数

    在PowerBI Desktop中,用户可以定义一个或多个查询参数(Query Parameter),参数的功能是为了实现PowerBI的参数化编程,使得Data Source的属性.替换值和过滤数据 ...

  9. Android开发者不可或缺的四大工具

    Android开发者不可或缺的四大工具 android以其极强的开放性吸引着世界各地的开发者去开发各种各样的移动应用开发,而各种SDK更是为各个层次的开发者提供了一个可以尽情展示他们专业技能和创造性的 ...

  10. c语言数字图像处理(一):bmp图片格式及灰度图片转换

    本篇文章首先介绍了bmp图片格式,主要参考wiki上的内容,包括bmp文件的存储方式,对于一些常见的bmp文件格式都给了例子,并且对8位 16位RGB555 16位RGB565格式的bmp文件进行了简 ...