题目描述

  给出两个串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. Android ListView下拉刷新时卡的问题解决小技巧

    问题:ListView下拉刷新时看上去非常的卡 解决方案: 在BaseAdapter的getView方法中,有三个参数 public View getView(int position, View c ...

  2. http_build_query用法,挺方便的

    http_build_query (PHP 5) http_build_query -- 生成 url-encoded 之后的请求字符串描述string http_build_query ( arra ...

  3. ASP.NET Core 3.0 实战:构建多版本 API 接口

    第一次在博客写分享,请多多捧场,如有歧义请多多包含! 因为业务需求发展需要,所以API接口的变更升级是必不可少的事情,而原有的接口是不可能马上停止使用的.例如:Login接口为例,1.0版本之返回用户 ...

  4. jquery方法简单记录

      append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() - 在被选元素之前插入内容 firs ...

  5. Ubuntu14.04配置gcc4.4.4+Qt4.8.4交叉编译环境

    安装32位程序运行支持 sudo apt-get install lib32stdc++6 lib32z1 lib32ncurses5 lib32bz2-1.0 可能报错: lib32stdc++6 ...

  6. 2017-2018-2 20155203《网络对抗技术》Exp5 MSF基础应用

    1.实践过程记录 1.1一个主动攻击实践,如ms08_067; msf > search ms08_067_netapi //查看可以用的工具 [!] Module database cache ...

  7. WPF编程,指定窗口图标、窗口标题,使得在运行状态下任务栏显示窗口图标的一种方法。

    原文:WPF编程,指定窗口图标.窗口标题,使得在运行状态下任务栏显示窗口图标的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_4330793 ...

  8. 汇编 浮点指令FLD,FSTP,FADD与FPU寄存器

    知识点:  浮点数的存放方式  st0至st7  FLD,FST,FADD指令 一.浮点数的存放方式 00401000 /$ 55 PUSH EBP 00401001 |. 8BEC MOV E ...

  9. 蓝牙重启case之:hardware error

    蓝牙的通信分为host和controller,host端发送数据和命令到controller,controller 上传event以及数据到host端,这要求上下两端的通信要求状态一致性. 当发生状态 ...

  10. 使用Python实时获取cmd的输出

    最近发现一个问题,一个小伙儿写的console程序不够健壮,监听SOCKET的时候容易崩,造成程序的整体奔溃,无奈他没有找到问题的解决办法,一直解决不了,可是这又是一个监控程序,还是比较要紧的,又必须 ...