字符串-KMP、Hash
Nemaleswang
ACM退役狗一只
展开
-
hdoj 1686 Oulipo
题目链接:Oulipo题目大意:给你一个模式串和原串,计算模式串在原串里面出现的次数题目思路:直接KMP就好#include <bits/stdc++.h>using namespace std; const int maxn = 1e6+10;int n,Next[maxn]; char mo[maxn],str[maxn];int main(){ scanf("%d",&n);原创 2017-05-30 22:25:17 · 322 阅读 · 0 评论 -
hdoj 1711 Number Sequence
题目链接:Number Sequence题目大意:给你一个原串和一个模式串,问是否在原串中找到模式串,能输出第一个匹配的首位置,否则输出-1题目思路:直接KMP找就好,找到了直接输出位置不用继续KMP,没找到输出-1#include <bits/stdc++.h>using namespace std; const int maxn = 1e6+10;int Next[maxn]; int mo[m原创 2017-06-15 20:02:40 · 281 阅读 · 0 评论 -
hdoj 1686 Oulipo
题目链接:Oulipo题目链接:给你模式串和原串,问模式串在原串中出现的次数题目思路:直接KMP就好#include <bits/stdc++.h>using namespace std; const int maxn = 1e6+10;int Next[maxn]; char str[maxn],mo[maxn];void getNext(){ int i = 0,j = -1,len =原创 2017-06-15 20:15:44 · 291 阅读 · 0 评论 -
hdoj 2087 剪花布条
题目链接:剪花布条题目大意:给你一个模式串和原串,问能从原串中剪出多少个模式串来题目思路:KMP,只不过在i的遍历时需要将他提到匹配后j的后一个字符去,这样就不会出现被剪过的字符再次匹配的情况#include <bits/stdc++.h>using namespace std; const int maxn = 1e6+10;int Next[maxn]; char str[maxn],mo[ma原创 2017-06-15 20:44:10 · 417 阅读 · 0 评论 -
scuoj 4438 Censor
题目链接:Censor题目大意:给你一个模式串和原串,现在要你去删除原串中出现的第一个模式串,然后在删除的原串中继续这种操作,直到找不到原串为止,输出最后的字符串题目思路:首先字符串匹配,我们可以想到使用KMP,然后我们需要在KMP的思路上做一些操作,当匹配到一个完整的字符串时,我们需要将j指针移动到上一个没有匹配到的位置,然后进行继续的,然后我们可以用一个ans数组保存串,有删除的时候我们直接将l原创 2017-06-01 17:00:00 · 828 阅读 · 0 评论 -
「美团 CodeM 初赛 Round B」子串
题目链接:loj暂时还没挂,牛客要以考试的形式打开,比较麻烦题目大意:给出一个正整数n,我们把1..n在k进制下的表示连起来记为s(n,k),例如s(16,16)=123456789ABCDEF10, s(5,2)=11011100101。现在对于给定的n和字符串t,我们想知道是否存在一个k(2 ≤ k ≤ 16),使得t是s(n,k)的子串(顺便把题面也给了吧)题目思路:直接枚举k,连接起来,然后原创 2017-07-04 18:27:17 · 591 阅读 · 0 评论 -
hdoj 6153 A Secret
题目链接:A Secret题目大意:给你两个字符串,然后需要你对模式串的后缀去对原串匹配,原串后缀长度为1的出现多少次贡献就是1*n,长度为2的贡献就是2*n,然后要求你算出这个总贡献mod(1e9+7)题目思路:既然要求的是后缀匹配,那么我们将两个串都翻转过来进行正着匹配就好了,然后我们需要去在KMP里面去算,当KMP匹配到失配的时候那么我们可以知道这时的j就是我们已经匹配成功的串,那么这个串的贡原创 2017-08-21 20:12:00 · 257 阅读 · 0 评论 -
hdoj 6055(2017 Multi-University Training Contest - Team 2)Regular polygon
题目链接:Regular polygon题目大意:给你一堆点,然后问能够用里面组成多少个正多边形题目思路:因为是整数点,只能形成正四边形,所以枚举两个点,套公式找出另外两个点,然后直接判断就好,当然因为点很小,可以直接判断,用pair很轻松,当然如果是poj 2002,就需要用hash去判断 ps:正方形已知两个点,算另外两个点的公式: 已知: (x1,y1) (x2,y2) 则: x3原创 2017-08-29 20:49:46 · 334 阅读 · 0 评论