摘要:Brief Description DZY有一个数列a[1..n],它是1∼n这n个正整数的一个排列。 现在他想支持两种操作: 0, l, r: 将a[l..r]原地升序排序。 1, l, r: 将a[l..r]原地降序排序。 操作完后,他会给你指定一个位置k,请你告诉他a[k]的值。 Algori
阅读全文
摘要:Brief Description 给定一颗有根树(根为1),有以下 两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均无标记,而且对于某个 结点,可以打多次标记。)2. 询问操作:询问某个结点最近的一个打了标记的祖先(这个结点本身也算自己的祖 先)你能帮帮他吗?
阅读全文
摘要:Brief Description 给定一个字符串, 您需要求出他的严格k小子串或非严格k小子串. Algorithm Design 考察使用后缀自动机. 首先原串建SAM, 然后如果考察每个状态代表的子串的出现次数. 可以知道, 在parent树上某个节点的出现次数就是他的所有儿子的出现次数之和.
阅读全文
摘要:Brief Description 给你N个互不相同的字符串,记$S_i$为第i个字符串,现在要求你指定N个串的出现顺序,我们用$V_i$表示第i个字符串是第几个出现的,则V为1到N的一个排列。我们希望你指定的出现顺序可以使总代价最小 一个出现顺序的代价的计算方法如下依次考虑第i个串$S_i$对代价
阅读全文
摘要:Brief Description 一个长度为n的大数,用S1S2S3...Sn表示,其中Si表示数的第i位,S1是数的最高位,告诉你一些限制条件,每个条 件表示为四个数,l1,r1,l2,r2,即两个长度相同的区间,表示子串Sl1Sl1+1Sl1+2...Sr1与Sl2Sl2+1Sl2+2...S
阅读全文
摘要:Brief Description 求外圈有$n$个点的, 形态如 .png)图所示的无向图的生成树个数. Algorithm Design $$f(n) = (3 f(n 1) f(n 2)+2)$$ Code cpp include int mod = 10; struct data { int
阅读全文
摘要:Brief Description 给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线,可产生多少棵度数满足要求的树? Algorithm Design 结论题. 首先可以参考这篇文章了解一下什么是Prufer编码: Cayley公式是说,一个完全图$K_n$有$n^{n 2}$棵生
阅读全文
摘要:Brief Description 某国有2N个城市,这2N个城市构成了一个2行N列的方格网。现在该国政府有一个旅游发展计划,这个计划需要选定L、R两列(L include include const int maxn = 60110; int l[maxn][2], r[maxn][2], u[m
阅读全文
摘要:Brief Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战。在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai。当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了。X军团有M个激光武器,其中第i
阅读全文
摘要:Brief Description 计算$\sum_{i\leqslant n}\sum_{j\leqslant m}\sigma_0(ij)$. Algorithm Design 首先证明一个结论 $$d(ij) = \sum_{i\leqslant n}\sum_{j \leqslant m}[
阅读全文
摘要:Brief Description 小A有一个1 2^N的排列A[1..2^N],他希望将A数组从小到大排序,小A可以执行的操作有N种, 每种操作最多可以执行一次 ,对于所有的i(1 include define ll long long const int maxn = 1
阅读全文
摘要:Brief Description Pine开始了从S地到T地的征途。 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站。 Pine计划用m天到达T地。除第m天外,每一天晚上Pine都必须在休息站过夜。所以,一段路必须在同一天中走完。 Pine希望每一天走的路长度尽可能相近,所以他希望每
阅读全文
摘要:Brief Description Alice 和 Bob 在玩一个游戏。 游戏在一棵有 n 个点的树上进行。最初,每个点上都只有一个数字,那个数字是 123456789123456789。 有时,Alice 会选择一条从 s 到 t 的路径,在这条路径上的每一个点上都添加一个数字。对于路径上的一个
阅读全文
摘要:Brief Description 給定一棵樹, 判斷是否可以將其分成$\frac{n}{k}$個聯通塊, 其中每個聯通塊的大小均爲k. Algorithm Design 我們有一個結論: k可行iff存在$\frac{n}{k}$個點, 以這些點爲根的子樹大小爲k或k的倍數. 讀者可以自行yy一下
阅读全文
摘要:DATA STRUCTURE 1.数据结构 1.1字符串哈希 为后缀计算一个哈希值,满足$H(i)=H(i+1)x+s[i]$(其中$0 \leq i = a 且 i b)$$ 所以我们开设两个树状数组。 1.2.3二维树状数组 直接扩展就可以了。非常的直观和显然。 1.3线段树 1.3.1普通线段
阅读全文
摘要:Brief Description Algorithm Design 下面给出后缀自动机的一个性质: 两个子串的最长公共后缀,位于这两个串对应的状态在parent树上的lca状态上。并且最长公共后缀的长度就是lca状态的len。 证明:对于一个串,他的所有祖先节点都是他的后缀,并且深度越大,长度越长
阅读全文
摘要:
阅读全文
摘要:Brief Description 一个回文串的value定义为这个回文串的长度乘以出现次数。给定一个字符串,求$value_{max}$。 Algorithm Design 我们使用Manacher暴力算出所有的回文子串,放在SAM里倍增,大力算贡献就好了。 Code cpp include in
阅读全文
摘要:Brief Description 给定n个字符串,对于每个字符串,您需要求出在所有字符串中出现次数大于等于k次的子串个数。 Algorithm Design 先建立一个广义后缀自动机,什么是广义后缀自动机?就是所有主串一起建立的一个后缀自动机。 广义后缀自动机的建立很简单,对于每个串,该怎么增量建
阅读全文
摘要:昨天看了一下午后缀自动机,终于有了一点心得,特地来做一下笔记。 Definitions 首先不加证明地给出几个定义和引理: DFA(有限状态自动机) 有限状态自动机的功能是识别字符串,令一个自动机A,若它能识别字符串S,就记为A(S)=True,否则A(S)=False。 自动机由五个部分组成,al
阅读全文
摘要:Brief Description 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示。例如可以将魔咒字符 1、2 拼凑起来形成一个魔咒串 [1,2]。 一个魔咒串 S 的非空字串被称为魔咒串 S 的生成魔咒。 例如 S=[1,2,1] 时,它的生成魔咒有 [1]、[2]、[1,2]、[2,1]、[1
阅读全文
摘要:Brief Description 给定一个数列,您每次可以把数列的最前面的数或最后面的数移动到新数列的开头,使得新数列字典序最小。输出这个新序列。 Algorithm Design 首先我们可以使用贪心得到一个$O(n^2)$的算法。 然后我们可以使用后缀数组把这个题目做成$\Theta(nlog
阅读全文
摘要:Brief Description 找到 01 串中所有重复出现次数大于 1 的子串。并按字典序输出他们的出现次数。 Algorithm Design 求出后缀数组之后,枚举每一个后缀,对于每个后缀从height[i]+1枚举(因为height[i]之前已经计算过了),然后对于这样的每个前缀看一看上
阅读全文
摘要:Brief Description 给定一个字符串,求至少出现k次的最长重复子串。 Algorithm Design 先二分答案,然后将后缀分成若干组。判断有没有一个组的后缀个数不小于k。如果有,那么存在k个相同的子串满足条件,否则不存在。这个做法的时间复杂度为$\Theta(nlgn)$. Cod
阅读全文
摘要:Brief Description 给定一个长度为n的字符串,你需要对其进行加密。 1. 把字符串围成一个环 2. 显然从任意一个位置开始都可以有一个长度为n的串 3. 把产生的n个串按字典序排序,把这n个串的最后一个字符顺接起来就得到了加密后的串。 Algorithm Design 看到环的题目,
阅读全文
摘要:Brief Description 给定一些模式串,您需要求出满足以下要求的字符串的个数。 1. 长度为m 2. 包含任意一个模式串 Algorithm Design 以下内容来自 "神犇博客" 首先运用补集转换,转而求不含这些串的个数,最后用26^M减掉就行 根据输入的字符串建立AC自动机 dp[
阅读全文
摘要:Brief Description 给定一个长度为m的禁止字符串,求出长度为n的字符串的个数,满足: 这个字符串的任何一个字串都不等于给定字符串。 本题是POJ3691的弱化版本。 Algorithm Design 考察使用动态规划(递推)。 记录f[i][j]为当前已经做了i个字符,这个字符串长度
阅读全文
摘要:Brief Description 给定一个序列,您需要处理m个询问,每个询问形如[l,r],您需要回答在区间[l,r]中任意选取两个数相同的概率。 Algorithm Design 莫队算法入门题目。 "这篇博客讲的不错" 对于L,R的询问。设袜子的个数为$cnt_i$ 那么答案即为$$\frac
阅读全文
摘要:Brief description 给定一个无向图,求从1到n的一条路径使得这条路径上最大的a和b最小。 Algorithm Design 以下内容选自 "某HN神犇的blog" 双瓶颈的最小生成树的感觉,可以首先按a值排序,然后一条边一条边的加入. 如果之前连接的两点还未连通,那么连上先满足最后连
阅读全文
摘要:Brief Description 您需要设计一种数据结构支持以下操作: 1. 把某个节点 x 的点权增加 a 。 2. 把某个节点 x 为根的子树中所有点的点权都增加 a 。 3. 询问某个节点 x 到根的路径中所有点的点权和。 Algorithm Design 我们考察操作对于查询的贡献。 对于
阅读全文
摘要:Brief Description 您有一个无向带权图,您需要支持两种操作。 1. 询问两个点之间的最大权最小路径。 2. 删除一条边。 Algorithm Design 我们首先提出一个猜想:最优路径一定在原图的一个最小生成森林上,证明如下: 假设最优路径有$\phi$条边不再最小生成森林上,我们
阅读全文
摘要:Brief Description 一棵n个点的树,每个点的初始权值为1。对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c; u1 v1 u2 v2:将树中原有的边(u1,v1)删除,加入一条新边(u2,v2),保证操作完之后仍然是一棵树;
阅读全文
摘要:Brief description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若
阅读全文
摘要:Brief Description 给定一个森林,您需要支持两种操作: 1. 链接两个节点。 2. 断开两个节点之间的链接。 Algorithm Design 对于树上的操作,我们现在已经有了树链剖分可以处理这些问题。然而树链剖分不支持动态维护树上的拓扑结构。所以我们需要Link Cut Tree(
阅读全文
摘要:Brief Description 给定一棵n个节点的带权树,节点编号为1到n,以root为根,设sum[p]表示以点p为根的这棵子树中所有节点的权 值和。支持下列两种操作: 1 给定两个整数u,v,修改点u的权值为v。 2 给定两个整数l,r,计算sum[l]+sum[l+1]+....+sum[
阅读全文
摘要:Brief Description 求$K_{n,m}$ Algorithm Design 首先我们有(Matrix Tree)定理,可以暴力生成几组答案,发现一些规律: $$K_{n,m} = n^{m 1} m^{n 1}$$ 然而直接乘法会爆longlong,所以使用快速乘 Code
阅读全文
摘要:Brief Description 给定一棵树,每个点有颜色,您需要支持两种操作: 1. 把某两个点路径上的所有点的颜色设为某种颜色。 2. 查询两个点路径上的颜色块的个数。 例如,颜色块:22112233视为4个颜色块。 Algorithm Design 树链剖分裸题。 我们需要在线段树上记录区间
阅读全文
摘要:Brief Description 您需要写一种数据结构,支持: 1. 更改一个点的点权 2. 求一个子树的最小点权 3. 换根 Algorithm Design 我们先忽略第三个要求。 看到要求子树的最小点权,我们想到使用dfs序。容易看到,一个节点的子树在dfs序中的范围就是$[l(x),r(x
阅读全文
摘要:Brief Description 求一个无向图的 严格 次小生成树。 Algorithm Design 考察最小生成树的生成过程。对于一个非树边而言,如果我们使用这一条非树边去替换原MST的路径上的最大边,可以证明仍然满足生成树性质,而且这个生成树的大小一定不小于原生成树,那么枚举所有这样的非树边
阅读全文
摘要:Brief Description 采药人的药田是一个树状结构,每条路径上都种植着同种药材。 采药人以自己对药材独到的见解,对每种药材进行了分类。大致分为两类,一种是阴性的,一种是阳性的。 采药人每天都要进行采药活动。他选择的路径是很有讲究的,他认为阴阳平衡是很重要的,所以他走的一定是两种药材数目相
阅读全文
摘要:做题清单 bzoj 1497: 最大权闭合子图的练习题 bzoj 4562: 喜+1的水题 bzoj 4767: 坐标变换: $$x = x'x_1 + y'x_2$$ $$y = x'y_1 + y'y_2$$ bzoj 2749 bzoj 3230 bzoj 3992 秒掉了30分的矩阵快速幂,
阅读全文
摘要:Brief Descirption 给定一棵带权树,您需要统计路径长度为3的倍数的路径长度 Algorithm Analyse 点分治。 考察经过重心的路径。统计出所有deep,统计即可。 Code cpp include include include define ll long long co
阅读全文
摘要:Brief Description 给定一棵带权树,你需要找到一个点对,他们之间的距离为k,且路径中间的边的个数最少。 Algorithm Analyse 我们考虑点分治。 对于子树,我们递归处理,所以我们只考察经过重心的情况。 我们很容易把所有点的dist和deep预处理出来,所以,问题就转化成了
阅读全文
摘要:Brief description 给定一个数列,您需要支持一下两种操作: 1. 给[l,r]同加一个数 2. 询问[l,r]中有多少数字大于或等于v Algorithm analyse 这个题一时想不到什么有效的数据结构,但是暴力法非常好想:一个$\Theta(n)$的暴力算法。 我们考虑分块做,
阅读全文
摘要:题意 给定一个无向图,初始状态所有点均为黑,如果更改一个点,那么它和与它相邻的点全部会被更改。一个点被更改当它的颜色与之前相反。 题解 第一道Gauss消元题。所谓gauss消元,就是使用初等行列式变换把原矩阵转化为上三角矩阵然后回套求解。 给定一个矩阵以后,我们考察每一个变量,找到它的系数最大的一
阅读全文
摘要:题目大意 给定一棵所有点初始值为黑的无权树,你需要支援两种操作: 1. 把一个点的颜色反转 2. 统计最远黑色点对。 题解 本题是一个树上的结构。对于树上的结构,我们可以采用点分治、树链剖分等方法处理,这个题用了一个巧妙的方法,化树为线性数列,从而解决了问题。 定义一种对一棵树的括号编码。这种编码方
阅读全文
摘要:题目大意 你需要实现一种数据结构,支援以下操作。 1. 给一个矩阵的子矩阵的所有元素同时加一个数。 2. 计算子矩阵和。 题解 一看这个题,我就首先想到用线段树套线段树做。 使用二维线段树的错误解法 其实是第一次写二维线段树orz。为了方便,我们不再使用k乱搞的思想都非常好搞了。 具体地,我们开四个
阅读全文
摘要:题目大意 给定一个大小为n,每个数的大小均在[1,c]之间的数列,你需要回答m个询问,其中第i个询问形如$(l_i, r_i)$,你需要回答是否存在一个数使得它在区间$[l_i,r_i]$中出现至少$\frac{r l+1}{2}$次。 题解 第一次写主席树。 不难发现,对于一个询问,只有可能要么有
阅读全文
摘要:题目 题解 这道题可以说是数列问题的大BOSS,也算是这一周来学习splay等数据结构的一个总结。 我们一个一个地看这些操作。 对于操作1,我们首先建一棵子树,直接接上原树即可。 对于操作2,我们找到区间,不能直接取消连接关系,而是要一个一个的删除以回收空间。我们把已经删除的节点用一个栈保存起来。
阅读全文
摘要:题目大意 给定一个2×n的矩形网格,你需要设计一种数据结构支持以下操作。 1. 连接两个相邻的网格。 2. 断开两个相邻网格的连接。 3. 查询两个网格的连通性。 最开始,所有网格之间均不连通。 题解 首先看到是图的连通性,我想到了并查集,但是由于题目需要删除操作,只好暂时作罢。 一般化地考虑原题。
阅读全文
摘要:题目大意 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第i条被插入的线段的标号为i。 2.给定一个数k,询问与直线 x = k相交的线段中,交点最靠上的线段的编号。 题解 和上一个题几乎一样。 代码
阅读全文
摘要:题目大意 题解 这道题需要用到一种叫做李超线段树的东西。我对于李超线段树,是这样理解的: 给节点打下的标记不进行下传,而是仅仅在需要的时候进行下传,这就是所谓永久化标记。 对于这道题,借用一张图, 这张图解释的比较清楚了。 代码 include include include int read()
阅读全文
摘要:题目 Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名为k的值 3.修改某一位值上的数值 4.查询k在区间内的前驱(前驱定义为小于x,且最大的数) 5.查询k在区间内的后继(后继定义为大于x,且最
阅读全文
摘要:题目大意 网上有许多题,就是给定一个序列,要你支持几种操作:A、B、C、D。一看另一道题,又是一个序列 要支持几种操作:D、C、B、A。尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技术含量……这样 我也出一道题,我出这一道的目的是为了让大家以后做这种题目有一个“库”可以依靠,没有什
阅读全文
摘要:题目大意 Description 最近,阿Q开了一间宠物收养所。收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领养的宠物的特点值a(a是一个正整数,a include con
阅读全文