E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
BZOJ2085
BZOJ2085
: [Poi2010]Hamsters
题目大意:给出n个互不包含的字符串,要求你求出一个最短的字符串S,使得这n个字符串在S中总共至少出现m次,问S最短是多少我们构造这样一个矩阵A:A[i][j]表示第j个字符串长度-第i个字符串的最长是第j个字符串前缀的后缀长度也就是说,若当前字符串的末尾是第i个字符串,想让下一个出现的字符串是j的话,需要至少在后面添加多少个字母由于m很大,我们可以想象用类似矩阵快速幂求方案数的方法类似的来求解,只
commonc
·
2016-12-29 16:13
BZOJ
POI
矩阵乘法
【
bzoj2085
】[Poi2010]Hamsters hash+倍增
dis[i][j][k]表示从第i个串的结尾到第j个串的结尾走过2^k个串的最小长度dis[i][j][0]=len[j]-cal(i,j)cal(i,j)表示如果i的最长后缀等于j的最长前缀倍增floyd好了。#include #include #include #include #include #include #defineinf100000000000000000ll #definema
u012288458
·
2016-03-03 07:00
【
BZOJ2085
】【Poi2010】Hamsters AC自动机bfs+倍增floyd
链接:#include intmain() { puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/45747235"); }题解:首先我们搞个AC自动机,然后每个串在AC自动机上bfs求出f(i,j)表示串i后面最少接f(i,j)个字母能搞出来串j。然后把每个串当成一个点,倍增floyd求两点之间恰
Vmurder
·
2015-05-15 17:00
AC自动机
BZOJ2085
倍增Floyd
Hamsters
POI2010
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他