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
AHOI2013
[BZOJ3238][
Ahoi2013
]差异
[
Ahoi2013
]差异DescriptionInput一行,一个字符串SOutput一行,一个整数,表示所求值SampleInputcacaoSampleOutput54HINT2usingnamespacestd
Sakagami_Tomoyo
·
2020-08-24 22:23
后缀自动机/后缀数组
[BZOJ2001][Hnoi2010]City 城市建设(CDQ分治+并查集)
和
AHOI2013
连通图差不多,但仿佛还要恶心……基本思想是CDQ分治往下递归时,不断地缩小图的规模。下面考虑怎样处理[l,r][l,r]范围内的操作。
xyz32768
·
2020-08-20 22:29
BZOJ
UOJ
LOJ
【
AHOI2013
】差异
后缀自动机想到了其实挺简单的首先对于后缀的前缀,我们不太好维护,所以我们可以考虑将字符串倒过来,这样就变成了维护前缀的后缀!那么我们自然就想到了后缀自动机然后我们观察这个式子发现恰好是是求parent树上任意两点路径和,那么我们在parent树上算一下每条边的贡献就好了。对于一条边,他的贡献就是(len[x]-len[fa[x]])*si[x]*(n-si[x])现在我们来细说一下为什么这个式子发
syh0313
·
2020-08-18 16:15
ACM-BZOJ
「
AHOI2013
」 连通图 - 线段树分治+并查集
题目描述给定一个连通的无向图和若干个小集合,每个小集合包含一些边。对于每个集合,你需要确定将集合中的边从原来的无向图中删除后该图是否保持连通。一个图是连通的当且仅当任意两个不同的点之间存在一条路径连接他们。输入格式输入的第一行包含两个整数n和m(1#include#includeusingnamespacestd;constintN=100005;constintM=400005;structEd
TbYangZ
·
2020-08-18 02:20
数据结构---并查集
数据结构---线段树分治
P4248 [
AHOI2013
]差异 (后缀数组height[]+单调栈)
题意:给定一个长度为n的字符串S,令Ti表示它从第i个字符开始的后缀,求:解法:显然前面的T(i)和T(j)是可以提出来直接算的,考虑每个后缀作为T(i)和T(j)的次数:1.作为T(i),那么对应n-i个T(j),因此次数为n-i2.作为T(j),那么对应i-1个T(i),因此次数为i-1综上得:每个后缀出现的总次数为n-i+i-1=n-1次因此前面一段T(i)和T(j)部分的贡献为1(n-1)
这有点难啊
·
2020-08-13 22:00
树套树专题——bzoj 3110: [Zjoi2013] K大数查询 & 3236 [
Ahoi2013
] 作业 题解
【原题1】3110:[Zjoi2013]K大数查询TimeLimit:20SecMemoryLimit:512MBSubmit:978Solved:476Description有N个位置,M个操作。操作有两种,每次操作如果是1abc的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2abc形式,表示询问从第a个位置到第b个位置,第C大的数是多少。Input第一行N,M接下来M行,每行形
阿蒋
·
2020-08-10 22:10
省选题解
算法讲解
bzoj题解
[BZOJ]3238 差异 后缀树
3238:[
Ahoi2013
]差异TimeLimit:20SecMemoryLimit:512MBSubmit:3905Solved:1762[Submit][Status][Discuss]DescriptionInput
MaxMercer
·
2020-08-08 12:26
BZOJ
【树套树】【bzoj 3236】: [
Ahoi2013
]作业
http://www.lydsy.com/JudgeOnline/problem.php?id=3236BIT套SBTTreap没救了,无论怎么优化常数都过不了,于是乎随便改成了SBT。。。。。。开始SBT的sz我用的s维护结果狂RE。。。。。。最后90s卡过。。。。。比莫队慢。。。。。。。被虐了2h。。。。。。早知道写个莫队。。。。。。莫队明明是O(nsqrt(n)logn)我的是O(nlogn
willinglive
·
2020-07-06 07:33
高级数据结构
2019.9.summary
2019.9.1BZOJ3238:[
Ahoi2013
]差异后缀自动机好题好像想到这个结论就不难,但是不太好想QAQ把串倒过来建,则两个前缀的最大公共后缀就是pre树上的lca的step因为一个点的pre
LMB_001
·
2020-07-04 06:18
刷题总结
题解【[
AHOI2013
]连通图】
\[\texttt{Description}\]给一个\(n\)个点,\(m\)条边的无向图。共\(k\)次询问,每次询问给出一个边集。问:删去边集中的边后,改图是否为连通图。询问互相独立。允许离线。\[\texttt{Solution}\]线段树分治好题。任意删边显然是不好做的,我们还是考虑把删边转化为加边。我们将询问的序列看成一个时间轴,我们会发现:每条边会在若干个时间区间内出现。具体地,我们
cjtcalc
·
2020-03-10 10:00
题解【[
AHOI2013
]作业】
\[\texttt{Preface}\]数据貌似很水,据说\(A_i\leqn\),连离散化都不需要。不知道为啥设块大小为\(\frac{n}{\sqrtm}\)会一直RuntimeErrorontest1,3,4,改成\(\sqrtn\)就\(A\)了,据说是\(m=0\)的问题,但我明明特判了阿qwq。\[\texttt{Description}\]给出一个长度为\(n\)的序列\(A\),一
cjtcalc
·
2020-02-08 09:00
「
AHOI2013
」 差异
「
AHOI2013
」差异给定一个长度为$n$的字符串$S$,令$T_i$表示它从第$i$个字符开始的后缀,求:$$\sum_{1\lei#include#include#include#include#
liankewei123456
·
2020-02-06 20:00
P5227 [
AHOI2013
]连通图(线性基做法)
题意神仙哈希做法。随便找个生成树,给每个非树边赋一个值,树边的值为所有覆盖它的边的值得异或和。删去边集使得图不联通当且即当边集存在一个子集异或和为0,可以用线性基。证明的话好像画个图挺显然的upd:找到了一份详细的证明code:#includeusingnamespacestd;constintmaxn=1e5+10;constintmaxm=2*1e5+10;constintmaxQ=1e5+1
nofind
·
2019-12-11 21:00
luoguP5227 [
AHOI2013
]连通图
题意虽然没用线段树,但是仍然是线段树分治的思想。考虑分治询问序列,假设当前在\([l,r]\),我们将\([1,l-1]\)和\([r+1,Q]\)的与\([l,r]\)内不重复的边都连上了。先将\([mid+1,r]\)中与\([l,mid]\)不重复的边都连上,之后递归\([l,mid]\),再将之前的操作撤销,将\([l,mid+1]\)中与\([mid+1,r]\)不重复的边都连上,之后递
nofind
·
2019-12-11 19:00
后缀自动机做题记录
目录后缀自动机做题记录sp1811sp1812sp10570luogu2463CF873FTJOI2015弦论
AHOI2013
差异HEOI2016/TJOI2016字符串HAOI2016找相同字符SDOI2016
lcyfrog
·
2019-10-10 19:00
BZOJ-3238: [
Ahoi2013
]差异(Suffix Array + Cartesian Tree)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3238这是我ORZ了网上的题解才知道的555:首先做一次后缀数组,求出sa[],height[],然后对于height[2..len(s)]建立CartesianTree,那么每个节点对于题目中项lcp()的贡献为(size[left[v]]+1)*(size[right[v]]+1)(很好证明
AmadeusChan
·
2018-10-16 20:40
3238: [
Ahoi2013
]差异
题目链接题目大意:一个长度为n的字符串S,令TiTi表示它从第i个字符开始的后缀,求∑1≤i#include#include#includeusingnamespacestd;constintN=500005;constintINF=-1e9;intn,top,sta[N];intsa[N],rk[N],rk2[N],height[N],c[N];intlp[N],rp[N];chars[N];i
Mmh2000
·
2018-03-28 20:14
3001-3250
BZOJ 3238: [
Ahoi2013
]差异 后缀自动机 树形dp
3238:[
Ahoi2013
]差异TimeLimit: 20Sec MemoryLimit: 512MBSubmit: 3660 Solved: 1655[Submit][Status][Discuss
BlackJack_
·
2018-01-06 21:01
—————————字符串
树形dp
后缀自动机
[ 莫队 树状数组 ] [
AHOI2013
] BZOJ3236
%%%PBS大佬教我莫队cmp函数更快的写法。#include usingnamespacestd; inlinecharnc(){ staticcharbuf[100000],*p1=buf,*p2=buf; returnp1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++; } inlinevoidRead(int&x
gjghfd
·
2017-12-01 00:00
莫队
树状数组
[BZOJ3235][
Ahoi2013
]好方的蛇(单调栈+容斥原理)
题目描述传送门题解heheda管这叫小学生容斥首先求出以某一个点为左上角、左下角、右上角、右下角的矩形的数量这个没法dp,但是可以直接用一个单调栈求出来。预处理出某一个点向上向下最远延伸到的长度,单调栈中的每一个点都是能组成矩形的合法顶点然后枚举每一个点(i,j),以这个点为左上角的矩形可以和除去i..n,j..n范围内的矩形配对,这样利用右下角矩形数量的二维前缀和加加减减能得到答案但是这样做发现
Clove_unique
·
2017-03-23 07:41
题解
单调栈
容斥原理
[BZOJ3236][
Ahoi2013
]作业(莫队+分块)
题目描述传送门题解和Gty的二逼妹子序列那道题是一样的,只不过多加了一问而已对权值分块,然后将区间离线之后莫队,每一次修改O(1),查询O(n√)代码#include#include#include#include#includeusingnamespacestd;#defineN1000005intn,m,block,t,ansum,ansval,ans[N][2];inta[N],num[N]
Clove_unique
·
2017-02-21 09:18
题解
莫队
分块
[BZOJ3236][
Ahoi2013
]作业(莫队+分块)
题目描述传送门题解和Gty的二逼妹子序列那道题是一样的,只不过多加了一问而已对权值分块,然后将区间离线之后莫队,每一次修改O(1),查询O(n√)代码#include#include#include#include#includeusingnamespacestd;#defineN1000005intn,m,block,t,ansum,ansval,ans[N][2];inta[N],num[N]
Clove_unique
·
2017-02-21 09:18
题解
莫队
分块
bzoj 3236: [
Ahoi2013
]作业 (莫队+分块)
3236:[
Ahoi2013
]作业TimeLimit: 100Sec MemoryLimit: 512MBSubmit: 1547 Solved: 635[Submit][Status][Discuss
clover_hxy
·
2017-02-21 00:00
分块
莫队
[BZOJ3238][
Ahoi2013
]差异(后缀数组+单调栈||后缀自动机+树形dp)
题目描述传送门题解这道题实际上还是非常有趣的。首先根据题目的描述答案应该为所有后缀的组合长度再减去两两的lcp首先算出来总和求出sa和height,用两次单调栈可以求出来以某一个点的height为最小值的最长区间可以发现以这个点为分界点,区间的左右两边两两组合最小值一定是当前点的height,也就是lcp的长度然后再计算答案就可以了然后这道题还有后缀自动机的做法因为是lcp,所以反过来建立后缀自动
Clove_unique
·
2016-12-28 10:50
题解
dp
省选
单调栈
后缀数组
后缀自动机
bzoj 3238: [
Ahoi2013
]差异 (后缀自动机+树形dp)
3238:[
Ahoi2013
]差异TimeLimit:20SecMemoryLimit:512MBSubmit:2268Solved:1031[Submit][Status][Discuss]DescriptionInput
clover_hxy
·
2016-12-22 07:32
动态规划
字符串处理
后缀自动机
【bzoj3237】[
Ahoi2013
]连通图 cdq分治+并查集
cdq分治首先把所有没有影响的边都建出来分治过程:1、把左边没有右边有的边建出来2、分治左边3、把并查集恢复至初始的样子4、把右边没有左边有的边建出来5、分治右边每次建的边数为这个区间内的集合中的边数,是一个与n无关的量,所以复杂度是正确的O(qclogqc)如何将并查集恢复至初始的样子?每当一个点的父亲被修改时,将它和它的父亲入栈,每次只需要记录一下当前过程对应在栈的哪个位置即可时间戳的思路不错
u012288458
·
2016-05-11 18:00
[CDQ分治 并查集] BZOJ 3237 [
Ahoi2013
]连通图
考虑CDQ分治把这半边对后半边没有影响的操作做了然后分治用并查集维护开个栈暴力还原#include #include usingnamespacestd; inlinecharnc() { staticcharbuf[100000],*p1=buf,*p2=buf; if(p1==p2){p2=(p1=buf)+fread(buf,1,100000,stdin);if(p1==p2)return
u014609452
·
2016-05-08 12:00
[BZOJ3238][
Ahoi2013
]差异
[
Ahoi2013
]差异DescriptionInput一行,一个字符串SOutput一行,一个整数,表示所求值SampleInputcacaoSampleOutput54HINT2 usingnamespacestd
hbhcy98
·
2016-04-28 12:00
后缀自动机
[
Ahoi2013
]作业 解题报告
很久以前用奇葩做法搞的题。。现在补个解题报告。传统做法:考虑莫队,就需要我们设计一个O(1)插入,O(n√)查询的数据结构,显然就需要对权值分块,记每个数出现次数和每个块两问的答案(或者第一问另写个主席树也可以,我比较懒)。莫队的块就分成nm√块。时间复杂度O(mn√+nm−−√)。非常好写,跑的飞快。傻逼如何做这个题?注意到我们有一个条件没有用到——为什么n比m小?这一定有其原因!(难道不是因为
TA201314
·
2016-04-22 17:00
分治
分块
主席树
莫队
k-d数
【
AHOI2013
】【BZOJ3237】连通图
DescriptionInputOutputSampleInput451223344124315223212SampleOutputConnectedDisconnectedConnectedHINTN #include #include #include #include #defineMAXN200010 #defineSIZE5000010 #defineGET(ch>='0'&&ch>1,
CreationAugust
·
2016-03-14 20:00
并查集
cdq分治
【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
BZOJ 3236: [
Ahoi2013
]作业|莫队算法|树状数组
这个题显然是需要二维的做法先用莫队离线对询问排序后维护两个树状数组,记录两个询问的答案,对于第二个询问,可以再开一个数组,记录每个数出现的次数#include #include #include #include #include #include #include #include #include #include #definelowbit(x)(x&(-x)) #defineN100010
ws_yzy
·
2016-02-17 15:00
树状数组
莫队算法
BZOJ 3233: [
Ahoi2013
]找硬币( dp )
dp(x)表示最大面值为x时需要的最少硬币数.枚举x的质因数p, dp(x)=min(dp(x/p)-(p-1)*sigma[a[i]/x]). ----------------------------------------------------------------------------------#include#include#include usingnamespacestd; c
JSZX11556
·
2016-02-16 22:00
[bzoj3233] [
Ahoi2013
]找硬币
一开始没什么思路...后来想到确定最大硬币面值就知道其他面值能取多少了。。而且结果是可以由较小的面值转移过来的。f[i]表示最大面值为i时的最小硬币数。a[i]表示第i个物品的价钱。f[i]=min{f[i/j]-sum{a[i]/(i/j)-a[i]/i }}=min{f[i/j]-sum{a[i]/i*(j-1)}},(j是i的因数)然后又因为显然,在符合条件的情况下面值种类越多越好(至少不会
czllgzmzl
·
2016-02-15 17:00
3236: [
Ahoi2013
]作业
3236:[
Ahoi2013
]作业TimeLimit: 100Sec MemoryLimit: 512MBSubmit: 1009 Solved: 387[Submit][Status][Discuss
CRZbulabula
·
2016-02-01 19:00
BZOJ 3233: [
Ahoi2013
]找硬币|动态规划
F[i]表示最大的钢镚为i时需要的最少数量F[i]显然要由i的因子j,F[j]转移过来转移方程:F[i]=min(F[j]−∑⌊a[k]/i⌋∗(i/j−1)这样复杂度还有点高会T有一个优化就是枚举j的时候有一些是可以忽略的只需要枚举i/p(p为i的质因子)否则肯定不是最优的随便画画就知道为什么了#include #include #include #include #include #inclu
ws_yzy
·
2016-01-19 19:00
动态规划
3238: [
Ahoi2013
]差异 后缀数组+分治+乘法原理
首先后缀数组似乎就不是正确的姿势?然后写了后缀数组不写单调栈好像更不是正确的姿势?反正我是暴力水过了。。st表预处理出最小值点,每次寻找最小值点然后乘法原理计算两边的乘积。再对左右区间分别处理。6s妥妥水过。卧槽我后缀数组居然写错了。。调了一早晨都以为是分治写错。。果然不能对自己的后缀数组太自信QAQ。#include #defineinf1000000007 #definelllonglong
Phenix_2015
·
2016-01-11 08:00
BZOJ 3238: [
Ahoi2013
]差异|后缀数组|乘法原理
后缀数组貌似不是这个题正确的姿势不过也可以做自己yy的做法用set水过了不过看起来并不是很慢原题中的式子等价于所有后缀的长度之和*[length(s)-1] 减去 任意两个后缀的lcp长度任意两个后缀的lcp长度可以直接光看height数组先想n^2暴力的做法求出所有sa[i]和sa[j](i #include #include #include #include #include #includ
ws_yzy
·
2016-01-10 20: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
BZOJ 3236: [
Ahoi2013
]作业
题目 3236: [
Ahoi2013
]作业 Time Limit: 100 Sec Memory Limit: 512 MB Submit: 732&
·
2015-11-12 22:08
ZOJ
BZOJ 3237([
Ahoi2013
]连通图-cdq图重构-连通性缩点)
3237: [
Ahoi2013
]连通图 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 
·
2015-11-12 13:32
ZOJ
【bzoj3233】【
ahoi2013
】找硬币
题意: 求确定n种货币面额x1..xn满足 x1=1 且xi为xj的整数倍(i>j) 给定n个物品价格ai 求使用上面货币最少需要硬币数(不能找零) 题解: 动态规划 听说网上的题解都是搜索的做法- - 只有一个人有说能用dp 但是没说怎么做 我想了一晚上 终于想出了dp的做法orz f[i]表示最大货币面额为i 时 所需最少硬币数 转移方程: f[i]=f
·
2015-11-02 18:43
ZOJ
BZOJ3569 : DZY Loves Chinese II
这回是真·强制在线了,首先这道题就是
AHOI2013
连通图的加强版,那道题k最大只有4 那道题的做法是: 取一个生成树,对每条非树边取一个随机权值, 对每条树边设为“覆盖它的所有非树边
·
2015-10-31 16:46
chinese
bzoj 3234: [
Ahoi2013
]立方体
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3234 题意:求长方体交的表面积。 思路:flood-fill const int N=205; int f[N][N][N]; bool visit[N][N][N]; int n; int dx[]={1,-1,0,0,0,0}; int dy[]=
·
2015-10-31 12:42
ZOJ
AHOI2013
Round2 Day2 简要题解
第一题: 第一问可以用划分树或主席树在O(nlog2n)内做出来。 第二问可以用树状数组套主席树在O(nlog2n)内做出来。 我的代码太挫了,空间刚刚卡过。。。(在bzoj上) 第二题: 分治,将询问分成两部分,每部分递归处理,每部分都把与询问无关的缩点。 还有个做法。。。here 第三题: 后缀数组+单调栈。后缀数组我写的是nlogn的,如果
·
2015-10-31 12:35
round
BZOJ 3238 [
Ahoi2013
]差异 后缀数组+单调栈
题意:链接方法:后缀数组+单调栈解析:一眼题,刷水有益健康23333首先一看这个式子就想能不能O(1)…这是病然后发现不能O(1),但是可以转化?好吧就先看前面的len求和吧。假设串长为n,则原式中不看lcp,len的求和为(n−1)∗∑i=1ni;然后我们再来看减去的lcp部分。首先,讲后缀数组的时候wyf大爷讲到了如何利用height知道任意两个后缀串的lcp,即从二者height下标构成的区
wzq_QwQ
·
2015-09-04 22:00
【
AHOI2013
】【BZOJ3238】差异
DescriptionInput一行,一个字符串SOutput一行,一个整数,表示所求值SampleInputcacaoSampleOutput54HINT2 #include #include #include #include #defineMAXN1000100 usingnamespacestd; charch[MAXN]; inttop; longlongans; structedge
CreationAugust
·
2015-08-14 15:00
后缀自动机
BZOJ3233 [
Ahoi2013
]找硬币(线性筛+dp)
【题解】本蒻一直在想二维dp,看了题解才发现竟然一维就可以 设f[i]为最大面值为i时,买下所有兔纸花费的最小硬币数 f[i]=min{f[j]-sigma(a[k]/i*(i/j-1))},j|i,其中,j为次大面值,这个方程考虑的是选了i能减小多少j的使用注意,如果硬币种类很多,是不影响最优答案的(不用就行了) -----------> 重要的性质所以,可以在枚举j的这一步下手优化:规定i/j
cjk_cjk
·
2015-06-26 03:00
质因数
dp优化
线性筛
一维状态
BZOJ 3233
Ahoi2013
找硬币 动态规划
题目大意:给定n个数,求一种混合进制使得每个数各个位之和之和最小令fi表示表示最大硬币面值为i时零头部分(即ak mod i部分)的最小硬币数那么有转移方程:fj=min{fi+∑nk=1⌊ak mod ji⌋}(i|j)然后ans=min{fi+∑nk=1⌊aki⌋}时间复杂度O(nmlogm),光荣TLE优化:ji一定是质数,否则我可以多添加一种硬币而不伤身体(雾那么我们只需要枚举质数倍数即可
PoPoQQQ
·
2015-06-09 18:00
动态规划
bzoj
BZOJ3233
【BZOJ 3233】 [
Ahoi2013
]找硬币
3233:[
Ahoi2013
]找硬币TimeLimit:10SecMemoryLimit:64MBSubmit:486Solved:198[Submit][Status][Discuss]Description
Regina8023
·
2015-04-20 08:00
dp
OI
bzoj
上一页
1
2
下一页
按字母分类:
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
其他