首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
hdu6153
】的更多相关文章
hdu6153 扩展kmp求一个字符串的后缀在另一个字符串出现的次数。
/** 题目:hdu6153 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6153 题意:给定两个串,求其中一个串t的每个后缀在另一个串s中出现的次数乘以其长度之和. 思路:扩展kmp 先将两个字符串翻转过来.那么变成求t串每个前缀在s串出现的次数. 直接扩展kmp求出extend[i]表示s串[i,n-1]子串和t串的最长公共前缀. 那么s串从i开始和t串前缀有匹配的贡献为1+2+...+extend[i] = extend[i]*(extend[…
HDU-6153 A Secret 扩展KMP
题意:求一个字符串的所有后缀在母串中的出现次数*后缀的长度的总和. 题目链接:http://acm.split.hdu.edu.cn/viewcode.php?rid=22147273 思路:先预处理sum[1...n]的值及sum[i]=1+..+i,然后将两个字符串反转,然后用扩展KMP求出翻转后的母串的EX数组.然后对任一个位置的他对答案的贡献就是sum[EX[i]]; 代码: #include<iostream> #include<cstdio> #include<c…
hdu6153 poj3336强化版kmp+线性dp
发现很早以前用exkmp做过一次,但是对这题来说只要将两个串翻转一下即可转换成s2的所有前缀出现的问题 /* 给出s1,s2,求s2的每个后缀在s1中出现的次数 ans = sum{后缀长度*出现次数} 思路:把数组倒过来,求s2的nxt数组 cnt[i]当匹配到s2的第i位可以对答案做的贡献 cnt[i]=当前与s1第i个字符配对的s2的前缀长度+cnt[nxt[j]] */ #include<iostream> #include<cstring> #include<cst…
hdu6153
题解: EX_KMP 先计算出ex数组 然后ans统计前缀 然后乘一下就好了 代码: #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> using namespace std; ,M=1e9+; int n,sum[N],m,nxt[N],match[N],exnxt[N],exmatch[N]; int L[N],R[N]; char s1[N],s2[N],s[N…