![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
EnjoyingAC
bugger,写bug爱好者。
展开
-
HDU2087 剪花布条
## 题解 ## kmp的多次运用。 (1)将花布条看作主串,小饰条看作模式串 (2)对主串和模式串调用一次kmp算法 (2.1)如果成功匹配,则ans++,将花布条剪去匹配的部分,转(1) (2.2)匹配失败,程序结束 (3)输出ans原创 2017-12-21 21:43:09 · 159 阅读 · 0 评论 -
KMP模板
前缀数组对于模式串P,定义前缀数组pre。pre[i]=j表示串P[1..i]的一个最长前缀为P[1..j],这个前缀同时也是它的后缀,即P[1..j]=P[i-j+1..i].(下标从1开始)求模式串前缀数组j表示上一个字符的前缀数组值,用上一个字符的前缀数组值更新当前字符的前缀数组值。 边界条件:第一个字符的前缀数组值为0。void getpre() { int j=0; me原创 2017-12-15 19:39:33 · 191 阅读 · 0 评论 -
HDU-1711 Number Sequence kmp算法
kmp入门题原创 2017-12-15 20:37:16 · 165 阅读 · 0 评论 -
POJ-2752 Seek the Name,Seek the Fame
kmp算法中前缀数组的应用原创 2017-12-15 21:36:32 · 144 阅读 · 0 评论 -
01字典树的学习
01字典树的应用范围 问题: 给定一个数值集合,然后给出一个数K,问集合中哪个数与K的异或和最大。 解题: 将数值集合中的数都变成一个个二进制串。然后将这些“字符串”插入字典树中。 查询时,从根节点遍历到叶子结点,每次尽量走与K值当前数位不同的结点。 01字典树插入值 //将数a插入到字典树中 int ch[32*maxn][2];//字典树 ll val[32*maxn];/...原创 2018-08-06 09:26:24 · 635 阅读 · 0 评论 -
LA 3942 Remember the Word 字典树 DP
题目链接 https://vjudge.net/problem/UVALive-3942 题意 给定一个字符串str和N个单词s。把这个字符串分解成若干个单词的连接(单词可以重复使用),有多少种方法? 解题 题目可以理解为由空串“走”到目标串str。每次走的“步数”恰好是一个单词。比如有单词a、b、cd、ab。目标串为abcd。可以由空串走到a,b,cd,ab。然后可以从a走到aa,ab...原创 2018-08-07 14:47:54 · 157 阅读 · 0 评论 -
UVA 11468 Substring AC自动机 概率DP
题意 给出一些字符和各自对应的选择概率,随机选择L次后得到一个长度为L的随机字符串S(每次独立随机)。给出K个模板串,计算S不包含任何一个串的概率(即任何一个模板串都不是S的连续子串)。 题解 对K个模板串建立AC自动机。 随机选择一个长度为L的随机字符串S就相当于在AC自动机上走L步。 设dp[u][L]表示当前在u结点上还需走L步且不包含模板串的概率。 根据全概率公式: dp[u...原创 2018-08-12 15:37:03 · 139 阅读 · 0 评论 -
51nod 1109 01组成的N的倍数 (BFS搜索、string)
题目链接 https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1109 题意 给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1。求最小的M。 例如:N = 4,M = 100。 题解 一个很显然的思路就是BFS。 但是M的值可能会超过long long,所以判断...原创 2018-09-08 10:11:35 · 229 阅读 · 0 评论 -
51nod 1282 时钟 (哈希、字符串的最小表示法)
题目 题解 要判断时钟是否相同,只需将时钟的指针排序后求出M个距离,然后看距离数组是否是循环同构即可。 循环同构: abcd的循环同构有:abcd、bcda、cdba、dabc。 要判断是否循环同构,可以求出距离数组的最小表示。然后对这个最小表示数组求一个哈希值,判断这个哈希值是否相同。 最小表示就是所有循环同构中字典序最小的。 哈希的话,我用的是以前用过的一个方法:将每个值离散...原创 2018-09-12 19:50:03 · 313 阅读 · 0 评论