09 2019 档案
摘要:题意 给一个长度为$n$的环,要求在这个环上填上$0$或$1$,使得这个环满足对于任意长度为$m$的区间,其中$0$的个数不超过$k$。请求出所有合法的填数的方案数 将环上的结点标号为$1$到$n$,两种方案不同当且仅当至少存在一个节点,两种方案在此处所填的数不同 $n\leq 10^{15},k\
阅读全文
摘要:题意 请你维护一个长度为$n$的排列,要求支持以下操作 把权值为$v$的元素放到序列的首端 把权值为$v$的元素放到序列的尾端 把权值为$v$的元素和它前一个或后一个元素进行交换 询问权值为$v$的元素之前有多少个元素 询问第$k$个元素的权值 解法 可以用无旋Treap来维护区间 和Splay一样
阅读全文
摘要:题意 给定$n$个连通块,有两种操作: 合并两个连通块 查询某个元素所在连通块内第$k$大的值 解法 合并连通块$\to$启发式合并,查询第$k$大$\to$平衡树,权值线段树 当然这道题可以用线段树合并写,但是用FHQ_Treap来写实在是太爽了 由于FHQ_Treap本身就可以维护连通块(一颗树
阅读全文
摘要:题意 给定一颗大小为$n$的点带权无根树,有$q$个询问,每次询问与结点$u$距离不超过$k$的结点的点权之和 $k\leq 400,q\leq 5000,n\leq 10^6$ 解法 询问与节点$u$距离不超过$k$的结点的点权,考虑这些点的来源,一是来源于它的子树内,二是来源于它的祖宗链 假设我
阅读全文
摘要:题意 有$n$个可重集,编号为$1\to n$,开始时都是空的,现在有两种操作 将元素$x$加入编号为$[l,r]$的集合中,若集合中原本就有元素$x$,那么该集合中所有元素的个数都会翻倍 询问编号为$[l,r]$集合中元素个数的和,取模$998244353$ 解法 $set$维护区间 对每个颜色开
阅读全文
摘要:题意 给定$n$个点$n$条边的连通图,要求删去一条边,使得剩下的图仍是一个连通图,并且图中距离最远的两个点的距离最小 解法 $n$个点$n$条边的连通图即为基环树 要删去一条边使得剩下的图仍是连通图,我们删除的一定是环上的边,剩下的图一定是一颗树 那么树上距离最远的两个点的距离就是树的直径 暴力枚
阅读全文
摘要:题意 给定一个可重集$S$,请求出满足下面条件的子集$S'$个数: $S'\geq S S'$ $S' a_i \leq S S'$,其中$a_i \in S'$ $|S|\leq 300, a_i \leq 500$ 解法 $\tt {hin}$有味的计数题,虽然$A$的人很多,但是我没想出来 我
阅读全文
摘要:题意 你需要写一个数据结构,需要支持对一个长度为$n$的数组进行下面四种操作$m$次 1. $\tt{C \ l \ r \ d}$:区间$[l,r]$中的数都加$d$,同时新建一个历史版本$T+1$ 2. $\tt{Q \ l \ r}$:查询当前版本的区间$[l,r]$中所有数的和 3. $\t
阅读全文
摘要:题意 给定$m$个任务$(l,r,p)$,其中$(l,r)$代表这个任务将于时间$[l,r]$内进行,而$p$代表的是这个任务的优先级 有$n$个询问$(x,k)$,每次询问在时间点$x$进行的所有任务按优先级从小到大排序,前$k$个任务的优先级之和 强制在线 解法 求前$k$个数的和,我们想到主席
阅读全文
摘要:题意 给定一颗带点权有根树,每次查询两点之间路径上点权的第$k$大值 解法 求第$k$大?我们立刻想到主席树 但是这是树上的问题,我们怎么进行操作呢? 我们令每一颗主席树维护当前节点到根节点路径上的点权,那么每个点的主席树都由其父亲转移过来 那么怎么查询$x,y$两个结点路径上的第$k$大点权呢?
阅读全文
摘要:题意 给出一个长为$n$的序列,有$m$个询问,每次询问$[l,r]$区间内第一个没出现过的最小自然数(即求这个区间的$mex$) 解法 和$\tt {CCPC}$网络同步赛的第二题$\tt{array}$很像 同样也是对权值建树,每个权值保存一个位置 但不同的是那一道题保证了它是一个排列,也就是$
阅读全文
摘要:题意 对于一颗有边权的无根树,用$m$条不相交的路径对其进行覆盖(不一定要将整棵树全部覆盖) 一条路径的权值定义为组成这条路径的边的权值和 使这$m$条路径中的最小路径的权值最大并输出这个最大值 $N\leq 5\times10^4,m\leq n 1$ 解法 这题与 巫师的旅行 (之前博客里有写)
阅读全文
摘要:题意 给出一个字符串,每次询问其一个子串$[S_l,S_r]$在原串中第$k$次出现所在的位置(开头位置) 解法 题意很简洁,思路也很简洁 就是代码巨难打 总之这道题还是让我很大程度上加深了对于$SAM$的认识啦,还去学了一下线段树合并 首先,根据后缀自动机的性质我们能知道题目所要求的的实际上是 $
阅读全文
摘要:题意 给一个$1$到$n$的排列 现在有$m$个操作,每个操作是下面的一种: $(1,pos)$,指把$pos$位上的数增加$10,000,000$ $(2,r,k)$,询问操作,你需要输出一个数满足下列三个条件 1. 这个数不等于$a_i(1\leq i \leq r)$中的任意一个 2. 这个数
阅读全文
摘要:El Psy Congroo! 题意 给出一个长为$n$的数组$a$,与一个长为$m$的数组$b$ 求数组$a$与数组$b$的 最长公共上升子序列 长度并输出任意一组方案 $1\leq n,m\leq 5000$ 解法 这题很有意思 首先对于这类匹配问题,我们一般可以设$f[i][j]$表示$a$数
阅读全文
摘要:题意 给一个大小为$N$的数组$A$,每次对数组进行如下的变换: $B[i]=A[i]\oplus A[i+1]$ $A[i]=B[i]$ 这里的$\oplus$运算指异或 我们会发现每次数组$A$的长度会减一,当数组$A$的长度减至一时,结束变换 如果我们把每次变换后的$A$数组的第一项保存下来,
阅读全文
摘要:题意 经典的 约瑟夫问题 $n$个人标号为$0...n 1$排成一圈,由第$0$个人开始报数,报到$k$的人~~去世~~ 求最后一个活下来的人是谁 解法 解法$0$:模拟算法$O(n^2)$ 链表模拟删除即可 入门题 解法$1$:线性算法$O(n)$ cpp int res = 0; for (in
阅读全文
摘要:题意 给一张无向图,点带权,边也带权 要求在图中删去最少的边,使得对于每一条边,它所在连通块的点权之和大于其边权 解法 首先,看到题目里出现了 删边 ,我们首先想到反向加边(如 星球大战 ) 那么最后的答案就是$m ans$,$ans$为加入的边 考虑一个边权为$w$的边$E(u,v)$ 它是合法的
阅读全文
摘要:题意 给一颗$n$个点的二叉树,每个点被标上了$1$到$n$中不同的标号 定义一棵树为 伪二叉树 当且仅当对于每个节点,其左子树所有节点的标号都小于它本身,右子树所有节点的标号都大于它本身;或是左子树所有节点的标号都大于它本身,右子树所有节点的标号都小于它本身 现在有一颗未标号的树,请为其标号使它成
阅读全文
摘要:题意 给出一个二元组$(a,b)$ 每一次可以将这个二元组变为$(2a b,b)$或$(a, 2b a)$,问是否能够通过$\geq 0$次操作将其变成$(c,d)$ 如果有,输出一组合法解。 $T\leq 8\times10^4, 10^{18}\leq a,b,c,d \leq 10^{18}$
阅读全文
摘要:题意 给一颗$n$个点的树,对于结点$i$,你要给它标上一个$[l_i,r_i]$之间的数,要求所有边两端节点上标的数字的差的绝对值的总和最大 解法 首先要有一个贪心的思路: 对于一个点$x$,它选择的权值一定是$l_x$或$r_x$ 为什么会这样呢?意会一下证明 对于一个点,如果与它相连的点填的数
阅读全文