题目描述

  给出两个串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. grpc & pb 环境配置

    grpc 官方中文文档:http://doc.oschina.net/grpc?t=60140 grpc github仓库:https://github.com/grpc/grpc protobuf ...

  2. C语言各种数据类型取值范围

    速查表: char -128 ~ +127 1Byte -2^7 ~ 2^7-1 unsigned char 0 ~ 255 1Byte 0 ~ 2^8-1 short -32767 ~ + 3276 ...

  3. Struts2_learning

    一.这是我学习struts2所做的一个记录,因为整个过程较为麻烦,所以,记录下来,以便以后使用 过程: 步骤: 1)dynamic web project 2)jars 3)struts.xml pa ...

  4. kettle学习笔记(七)——kettle流程步骤与应用步骤

    一.概述 流程主要用来控制数据流程与数据流向 应用则是提供一些工具类 二.流程步骤 1.ETL元数据注入 类似Java中的反射,在设计时不知道文件名.文件位置等,在真正执行时才知道具体的一些配置等信息 ...

  5. python3 的 round 函数的 练习

    python3 的 round 函数感觉很别扭,其运算结果与习惯不相符.特记录下来: 代码 ''' python 3的 round 函数 是"四舍六入五成双"的 https://w ...

  6. 关于KMP

    KMP算法,对于求b串在a串中出现的次数. 在学习KMP之前,希望大家充分掌握hash. HASH: 1.hash表:用来离散化(hash数组,hash链表) 2.Rabin-Kap算法: 可替代KM ...

  7. CS190.1x-ML_lab1_review_student

    这是CS190.1x第一次作业,主要教你如何使用numpy.numpy可以说是python科学计算的基础包了,用途非常广泛.相关ipynb文件见我github. 这次作业主要分成5个部分,分别是:数学 ...

  8. R实战 第六篇:数据变换(aggregate+dplyr)

    数据分析的工作,80%的时间耗费在处理数据上,而数据处理的主要过程可以分为:分离-操作-结合(Split-Apply-Combine),也就是说,首先,把数据根据特定的字段分组,每个分组都是独立的:然 ...

  9. java写个自己的mvc框架学习笔记

    1. 介绍 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的 ...

  10. 设计模式 笔记 策略模式 Strategy

    //---------------------------15/04/28---------------------------- //Strategy 策略模式----对象行为型模式 /* 1:意图 ...