bzoj2085 [Poi2010]Hamsters。
矩阵快速幂+字符串hash ...
分类:
其他好文 时间:
2019-09-29 09:36:48
阅读次数:
81
$hash+倍增floyd$ $hash预处理出两个串中一个串最少需要加多少字符变成另一个$ $然后把名字看成点,距离看成边,相当于计算走k步的最短距离$ $套用倍增floyd解决$ #include<bits/stdc++.h> using namespace std; typedef long ...
分类:
其他好文 时间:
2018-01-28 23:17:03
阅读次数:
215
题目描述 Tz养了一群仓鼠,他们都有英文小写的名字,现在Tz想用一个字母序列来表示他们的名字,只要他们的名字是字母序列中的一个子串就算,出现多次可以重复计算。现在Tz想好了要出现多少个名字,请你求出最短的字母序列的长度是多少。n个字符串保证不互相包含。 输入 输入:第一行n(1<=n<=200)和m ...
分类:
其他好文 时间:
2017-08-18 19:50:23
阅读次数:
93
【BZOJ2085】[Poi2010]Hamsters Description Tz养了一群仓鼠,他们都有英文小写的名字,现在Tz想用一个字母序列来表示他们的名字,只要他们的名字是字母序列中的一个子串就算,出现多次可以重复计算。现在Tz想好了要出现多少个名字,请你求出最短的字母序列的长度是多少。 T ...
分类:
其他好文 时间:
2017-08-15 19:58:24
阅读次数:
139
设g[i][j]为i串至少加上几个字符后才能包含j,可以通过Hash求出。然后就是求经过m-1条边的最短路,用倍增加速Floyed即可,时间复杂度$O(n^3\log m)$。#include#include#define rep(i,n) for(int i=0;ib)a=b;}struct ma...
分类:
其他好文 时间:
2015-08-19 19:27:48
阅读次数:
168
首先看到k的范围就该知道这题不是倍增就是矩乘首先肯定要求出任意一对串(a,b) a的后缀与b的前缀相同的最长长度是多少考虑到kmp求出的失配指针是一个串最长后缀和前缀相等的长度这里多个串我们只要用ac自动机即可具体的,我们只要建立自动机,然后记录每个状态点是哪些串的子串然后我们只要从每个串的结尾节点...
分类:
其他好文 时间:
2015-05-27 15:24:18
阅读次数:
139
题解:
首先我们搞个 ACAC 自动机,然后每个串在 ACAC 自动机上 bfsbfs 求出 f(i,j)f(i,j) 表示串 ii 后面最少接 f(i,j)f(i,j) 个字母能搞出来串 jj 。
然后把每个串当成一个点,倍增 floydfloyd 求两点之间恰好走 mm 步的最短路。
代码:
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2015-05-15 20:03:13
阅读次数:
232
题目大意:给定n个长度总和不超过10W的字符串,求一个最短的母串,使所有字符串的出现次数之和=m 这n个字符串保证不互相包含
TM能不能好好翻译了
令f[i][j]表示第i个字符串后面接上第j个字符串后会增加多少长度
由于j一定不是i的子串,因此这实际上就是在求i的最长的后缀,该后缀同时也是j的前缀
注意不能连出长度为0的边,因此当i=j时要保证这个长度
怎么求呢?其实Hash一下,枚举...
分类:
其他好文 时间:
2015-03-05 09:19:27
阅读次数:
127