[AHOI2013] 差异 - 后缀数组,单调栈】的更多相关文章

[BZOJ3238][Ahoi2013]差异 Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 HINT 2<=N<=500000,S由小写英文字母组成 题解:先跑后缀数组得到height数组,然后我们为了得到∑LCP(i,j),可以转变成求每个height数组对答案做了多少贡献(也就是有多少对LCP(i,j)=height[i]). 根据height数组的定义,两个后缀的L…
[AHOI2013] 差异 Description 求 \(\sum {len(T_i) + len(T_j) - 2 lcp(T_i,T_j)}\) 的值 其中 \(T_i (i = 1,2,...,n)\) 为后缀串 \(S[i,n]\) Solution 单调栈乱扫一发即可. 始终维护当前栈内元素的和,然后加进答案里. #include <bits/stdc++.h> using namespace std; #define int long long int n,m=256,sa[10…
3238: [Ahoi2013]差异 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 2326  Solved: 1054[Submit][Status][Discuss] Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 HINT 2<=N<=500000,S由小写英文字母组成 集训的时候想出来了还讲了一下 bingo! 前面…
[bzoj3238][Ahoi2013]差异 Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 题解: 任意两个字符串的lcp是什么,就是如 a,b  那么若a==b 那么为len(a) 否则设sa[a]<sa[b] 那么为min(height[sa[a]+1-------sa[b]]) #include<cstring> #include<iostream>…
3238: [Ahoi2013]差异 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1561  Solved: 734[Submit][Status][Discuss] Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 HINT 2<=N<=500000,S由小写英文字母组成 Source Solution 后缀数组+单调栈…
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3238 这道题从大概半年以前就开始啃了,不过当时因为一些细节没调出来,看了Sakits神犇的博客之后也没明白自己挂在哪里,于是就抄了个题解.然后现在突然想到填这个坑(其实是为了复习一下后缀数组模板),换了种思路才过了这道题……然而还是不知道当时那种写法为什么错……似乎是挂在判重? 解法(Accepted): 首先我们可以观察一下这个式子(见下),我们可以把它拆开,变成sigma(len(…
BZOJ_3238_[Ahoi2013]差异_后缀数组+单调栈 Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 前面那个len的和=(n-1)*n*(n+1)/2.只需要考虑后面的贡献. 求出height数组,然后问题转化为求所有区间的最小值之和. 设f[i]为所有右端点为i的区间的最小值之和. 每次找到i左边第一个height小于等于i的位置j,显然左端点在j之前那部分的答…
题目链接 BZOJ3238 题解 简单题 经典后缀数组 + 单调栈套路,求所有后缀\(lcp\) #include<iostream> #include<cstdio> #include<cmath> #include<map> #include<cstring> #include<algorithm> #define LL long long int #define Redge(u) for (int k = h[u],to; k;…
3238: [Ahoi2013]差异 Time Limit: 20 Sec  Memory Limit: 512 MB Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 HINT 2<=N<=500000,S由小写英文字母组成 Source 后缀数组+单调栈水过... #include<map> #include<cmath> #include<…
[BZOJ3879]SvT Description (我并不想告诉你题目名字是什么鬼) 有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n]. 现在有若干组询问,对于每一个询问,我们给出若干个后缀(以其在S中出现的起始位置来表示),求这些后缀两两之间的LCP(LongestCommonPrefix)的长度之和.一对后缀之间的LCP长度仅统计一遍. Input 第一行两个正整数n,m,分别表示S的长度以及询问的次数. 接下来一行有一个字符串S. 接下来有m组询问,对于每一组询问,均按照以…