
字符串
EnjoyingAC
bugger,写bug爱好者。
展开
-
HDU2087 剪花布条
## 题解 ##kmp的多次运用。(1)将花布条看作主串,小饰条看作模式串(2)对主串和模式串调用一次kmp算法(2.1)如果成功匹配,则ans++,将花布条剪去匹配的部分,转(1)(2.2)匹配失败,程序结束(3)输出ans原创 2017-12-21 21:43:09 · 189 阅读 · 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 · 261 阅读 · 0 评论 -
HDU-1711 Number Sequence kmp算法
kmp入门题原创 2017-12-15 20:37:16 · 191 阅读 · 0 评论 -
POJ-2752 Seek the Name,Seek the Fame
kmp算法中前缀数组的应用原创 2017-12-15 21:36:32 · 175 阅读 · 0 评论 -
01字典树的学习
01字典树的应用范围问题: 给定一个数值集合,然后给出一个数K,问集合中哪个数与K的异或和最大。 解题: 将数值集合中的数都变成一个个二进制串。然后将这些“字符串”插入字典树中。 查询时,从根节点遍历到叶子结点,每次尽量走与K值当前数位不同的结点。01字典树插入值//将数a插入到字典树中int ch[32*maxn][2];//字典树ll val[32*maxn];/...原创 2018-08-06 09:26:24 · 687 阅读 · 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 · 204 阅读 · 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 · 171 阅读 · 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 · 276 阅读 · 0 评论 -
51nod 1282 时钟 (哈希、字符串的最小表示法)
题目题解要判断时钟是否相同,只需将时钟的指针排序后求出M个距离,然后看距离数组是否是循环同构即可。循环同构: abcd的循环同构有:abcd、bcda、cdba、dabc。要判断是否循环同构,可以求出距离数组的最小表示。然后对这个最小表示数组求一个哈希值,判断这个哈希值是否相同。最小表示就是所有循环同构中字典序最小的。哈希的话,我用的是以前用过的一个方法:将每个值离散...原创 2018-09-12 19:50:03 · 345 阅读 · 0 评论