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
BZOJ3238
[
BZOJ3238
][Ahoi2013]差异
[Ahoi2013]差异DescriptionInput一行,一个字符串SOutput一行,一个整数,表示所求值SampleInputcacaoSampleOutput54HINT2usingnamespacestd;#definerep(i,l,r)for(inti=(l);i=(l);i--)#defineREP(i,n)for(inti=0;iinlinevoidread(T&x){x=0;
Sakagami_Tomoyo
·
2020-08-24 22:23
后缀自动机/后缀数组
bzoj3238
差异
题目链接思路观察题目中的式子,可以发现前两项是定值。所以只需要求出最后一项就行了。然后题目就转化为了求字符串中所有后缀的\(lcp\)长度之和。可以想到用后缀数组。在后缀数组上两个后缀的\(lcp\)长度表现为两个后缀排名之间的\(height\)的最小值。所以现在问题就又转化为了在\(height\)数组上求所有区间最小值之和。这个可以用单调栈做到。代码/**@Author:wxyww*@Dat
wxyww
·
2019-01-30 21:00
【
bzoj3238
】差异 后缀自动机
AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=3238【题解】题上所给公式可以化为其中:=1×(n-1)+2×(n-2)+3×(n-3)+……+(n-1)×1+2×1+3×2+……+n×(n-1)=(n+1)+2×(n+1)+3×(n+1)+……+(n-1)(n+1)=(1+2+3+……+(n-1))(n+1)=n(n-1)(n+1)/2
chty_syq
·
2017-02-23 07:16
bzoj
后缀自动机
[
BZOJ3238
][Ahoi2013]差异(后缀数组+单调栈||后缀自动机+树形dp)
题目描述传送门题解这道题实际上还是非常有趣的。首先根据题目的描述答案应该为所有后缀的组合长度再减去两两的lcp首先算出来总和求出sa和height,用两次单调栈可以求出来以某一个点的height为最小值的最长区间可以发现以这个点为分界点,区间的左右两边两两组合最小值一定是当前点的height,也就是lcp的长度然后再计算答案就可以了然后这道题还有后缀自动机的做法因为是lcp,所以反过来建立后缀自动
Clove_unique
·
2016-12-28 10:50
题解
dp
省选
单调栈
后缀数组
后缀自动机
[
BZOJ3238
][Ahoi2013]差异
[Ahoi2013]差异DescriptionInput一行,一个字符串SOutput一行,一个整数,表示所求值SampleInputcacaoSampleOutput54HINT2 usingnamespacestd; #definerep(i,l,r)for(inti=(l);i=(l);i--) #defineREP(i,n)for(inti=0;iinlinevoidread(T&x){
hbhcy98
·
2016-04-28 12:00
后缀自动机
【
BZOJ3238
】差异 后缀数组
反正又要办停课了不如一块一块慢慢刷。。。最近集中处理一下字符串和数据结构(说起来真轻巧)这种直接把“后缀”两个字糊脸上的题也是不常见。首先长度和(也就是求和式中的前两项)比较简单,不讨论,重点就是原来字符串中任意两项的公共前缀如何计算。首先将sa数组和height数组做出来(不要和h搞混,注意弄清含义),然后计算以height[i]作为答案的数对的组数K,在答案中减去2*k*height[i]即可
qq_34637390
·
2016-04-18 20:00
字符串
后缀数组
【
bzoj3238
】[Ahoi2013]差异 后缀数组+单调栈
DescriptionInput一行,一个字符串SOutput一行,一个整数,表示所求值SampleInputcacao SampleOutput54 HINT2 #include #include #include usingnamespacestd; typedeflonglongLL; constintSZ=1000010; intsa[SZ],n,rank[SZ],tmp[SZ],l
LOI_DQS
·
2016-02-28 10:00
【
bzoj3238
】[Ahoi2013]差异 后缀数组+单调栈
首先求出height数组,原式很明显可以化成一堆长度的和-两两LCP的和,所以我们考虑每个height能充当多少个区间的最小值即可,那么这个问题可以用单调栈解决,从左和从右各维护一个单调递增的单调栈,求出点i向左和向右分别最多能延伸多长。注意:1.height数组的[i,i]是要计入区间数的,因为我们查询lcp(i,j)的时候查询的是height数组中rank[i]+1~rank[j]的最小值,所
u012288458
·
2015-12-06 19:00
【AHOI2013】【
BZOJ3238
】差异
DescriptionInput一行,一个字符串SOutput一行,一个整数,表示所求值SampleInputcacaoSampleOutput54HINT2 #include #include #include #include #defineMAXN1000100 usingnamespacestd; charch[MAXN]; inttop; longlongans; structedge
CreationAugust
·
2015-08-14 15:00
后缀自动机
省选模版复习——后缀数组
bzoj3238
后缀数组水#include #include #include usingnamespacestd; constintMaxn=500005; typedeflonglongLL; LLAns
Zeyu_King
·
2015-04-15 08:00
后缀数组
BZOJ3238
【后缀数组】【单调栈】
/*Iwillwaitforyou*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #definemakemake_pair #definefifirst #definesesecond
Lethelody
·
2015-04-14 16:00
【
BZOJ3238
】【Ahoi2013】差异 后缀自动机
转载请注明出处谢谢、、http://blog.csdn.net/vmurder/article/details/42721101首先秦神QYOrz 题解:这道题后缀数组过于鬼畜(wo’tai’ruo’bu’gan’xie)所以写了简单好写易于理解不用分治不用RMQ的SAM大叔。题解:首先其实我们需要一个后缀树,然后两个后缀的lcp就是它们lca的len。后缀树可以通过反序后缀自动机得到,这个很水。
Vmurder
·
2015-01-14 23:00
差异
后缀自动机
BZOJ3238
AHOI2013
[Ahoi2013]差异
bzoj3238
后缀数组+分治#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#pragmacomm
gyarenas
·
2013-10-08 20:00
上一页
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
其他