博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU-Pattern and Text 枚举
阅读量:5093 次
发布时间:2019-06-13

本文共 861 字,大约阅读时间需要 2 分钟。

这题不要去考虑每一个时刻的情况,而要考虑每一个位在所有时间上的叠加效果。

对于长度为Lf的母串和长度为Ls的子串来说,每个字符匹配的长度都是Lf-Ls+1位。

代码如下:

#include 
#include
#include
using namespace std;char f[2000005], s[2000005];int lens, lenf, cnt[30];int main(){ int T, LIM; long long int ans; scanf("%d", &T); while (T--) { ans = 0; memset(cnt, 0, sizeof (cnt)); scanf("%s %s", s, f); lenf = strlen(f); lens = strlen(s); LIM = lenf - lens + 1; for (int i = 0; i < LIM; ++i) { ++cnt[f[i]-'a']; } ans += cnt[s[0]-'a']; for (int i = LIM; i < lenf; ++i) { --cnt[f[i-LIM]-'a']; ++cnt[f[i]-'a']; ans += cnt[s[i-LIM+1]-'a']; } printf("%I64d\n", ans); } return 0;}

转载于:https://www.cnblogs.com/Lyush/archive/2012/08/01/2617714.html

你可能感兴趣的文章
HTML页面格式
查看>>
安装searchd
查看>>
django Form 效验
查看>>
标准的并发控制实现
查看>>
反ring3 hook demo ,直接从dll文件修复 dll的code段,实现反hook
查看>>
soa---java 多线程的---锁
查看>>
【算法】普通方法和筛选法求素数
查看>>
Linux在出现/java: cannot execute binary file
查看>>
Linux守护进程的编程实现
查看>>
POJ读书笔记2.1 —— 鸡兔笼带
查看>>
转载--Github优秀java项目集合(中文版) - 涉及java所有的知识体系
查看>>
公司内网机器vm ubuntu proxy 设置
查看>>
Android2.1--如何在android模拟器上安装与删除.APK文件
查看>>
聚类分析二:DBSCAN算法
查看>>
高级c++头文件bits/stdc++.h
查看>>
【LeetCode】347-前K个高频元素
查看>>
置换元素与不可置换元素
查看>>
非root用户安装java版本
查看>>
css引用与html语义化
查看>>
luoguP3723 HNOI2017 礼物
查看>>