摘要: 前言: $FWT$是用来处理位运算(异或、与、或)卷积的一种变换。位运算卷积是什么?形如$f[i]=\sum\limits_{j\oplus k==i}^{ }g[j]*h[k]$的卷积形式(其中$\oplus$为位运算)就是位运算卷积。如果暴力枚举的话,时间复杂度是$O(n^2)$,但运用$FWT 阅读全文
posted @ 2019-03-13 22:33 The_Virtuoso 阅读(2127) 评论(3) 推荐(4) 编辑
摘要: 前言: 树的直径指树上距离最远的两点间的距离,它在树上问题上有许多应用,往往通过树的直径的性质可以将一个高时间复杂度的解法变为线性求解。对于树上两点间距离通常有三种定义,我们根据这三种情况分别讨论一下它的性质。 树的直径的求法: 树的直径有两种求法,时间复杂度都是$O(n)$。 贪心求法: 贪心求直 阅读全文
posted @ 2018-12-29 15:01 The_Virtuoso 阅读(7427) 评论(7) 推荐(12) 编辑
摘要: 前言: 边分治和点分治一样属于树分治的一部分,相比于点分治,边分治对于与度数相关的问题有着很大的优势,同时边分治也是解决树上最优化问题的一种重要的算法。 分治过程: 边分治的分治过程与点分治类似,同样每次分治时找到一条分治中心边使这条边两端的两个联通块中较大的一个尽量小。以分治中心边为界限,恰好将当 阅读全文
posted @ 2018-12-27 20:59 The_Virtuoso 阅读(3612) 评论(4) 推荐(1) 编辑
摘要: 题目链接: D.Master of Data Structure 题目大意: 给一棵$n$个点的树,每个点有一个点权,初始为$0$,有$m$次操作。操作分为$7$种: 1、路径加 2、路径异或 3、路径减 4、求路径和 5、求路径异或和 6、求路径最大点权-最小点权 7、求路径上点权与$k$差的绝对 阅读全文
posted @ 2021-05-13 11:40 The_Virtuoso 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 题目链接: [CF980E]The Number Games 题目大意: 给出一棵$n$个节点的树,第$i$个节点权值为$2^i$,要求删除$k$个点且保证剩下点联通情况下权值和最大。 首先可以想到一定先选大的,那么节点$n$必须选,剩下的从大到小依次选。 因为需要保证联通,我们不妨以$n$为根,如 阅读全文
posted @ 2021-02-27 16:37 The_Virtuoso 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题目描述 JOI村有一片荒地,上面竖着N个稻草人,村民们每年多次在稻草人们的周围举行祭典。 有一次,JOI村的村长听到了稻草人们的启示,计划在荒地中开垦一片田地。和启示中的一样,田地需要满足以下条件: 田地的形状是边平行于坐标轴的长方形; 左下角和右上角各有一个稻草人; 田地的内部(不包括边界)没有 阅读全文
posted @ 2019-06-05 21:30 The_Virtuoso 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 题目链接: [Codeforces1148C]Crazy Diamond 题目大意: 给出一个$1\sim n$的排列要求将其排序,每次能交换两个位置的数当且仅当这两个位置下标差的绝对值大于等于$\frac{n}{2}$。要求输出一组操作数不大于$5n$的方案并保证一定有解。 先不考虑操作需要的限制 阅读全文
posted @ 2019-06-02 10:41 The_Virtuoso 阅读(518) 评论(0) 推荐(0) 编辑
摘要: 题目描述 lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数。现在lxhgww想要知道满足要求的字符串共有多少个,聪明的程序员们,你们能帮助他吗? 输入 输入数据是一行,包括2个数字n和m 阅读全文
posted @ 2019-05-31 12:40 The_Virtuoso 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 题目链接: [Codeforces1137F]Matches Are Not a Child's Play 题目大意: 我们定义一棵树的删除序列为:每一次将树中编号最小的叶子删掉,将该节点编号加入到当前序列的最末端,最后只剩下一个节点时将该节点的编号加入到结尾。 例如对于上图中的树,它的删除序列为: 阅读全文
posted @ 2019-05-29 20:25 The_Virtuoso 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 题目链接: [PKUSC2018]最大前缀和 设$f[S]$表示二进制状态为$S$的序列,任意前缀和都小于等于$0$的方案数。 设$g[S]$表示二进制状态为$S$的序列是整个序列的最大前缀和的方案数。 设$sum[S]$表示二进制状态为$S$的序列的每个数的和。 那么答案就是$\sum\limit 阅读全文
posted @ 2019-05-29 10:41 The_Virtuoso 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 题目链接: [PKUSC2018]真实排名 对于每个数$val$分两种情况讨论: 1、当$val$不翻倍时,那么可以翻倍的是权值比$\frac{val-1}{2}$小的和大于等于$val$的。 2、当$val$翻倍时,显然权值在$[val,val*2-1]$的都要翻倍,剩下可以翻倍的是权值比$val 阅读全文
posted @ 2019-05-29 09:44 The_Virtuoso 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 题目链接: [SDOI2019]快速查询 对于整个序列维护一个标记$(k,b)$表示序列的每个数的真实值为$k*a_{i}+b$(注意要实时维护$k$的逆元),并记录序列的和。 对于单点修改,将$a_{i}$修改为$val$,因为有序列标记,所以实际修改成$\frac{val-b}{k}$并开一个栈 阅读全文
posted @ 2019-05-28 21:43 The_Virtuoso 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 题目链接: [APIO2018]铁人两项 对于点双连通分量有一个性质:在同一个点双里的三个点$a,b,c$,一定存在一条从$a$到$c$的路径经过$b$且经过的点只被经过一次。 那么我们建出原图的圆方树,枚举中间点$b$,一对合法的$a,c$需要使这两个点位于与$b$直接相连的方点的不同子树中。树形 阅读全文
posted @ 2019-05-15 16:54 The_Virtuoso 阅读(315) 评论(0) 推荐(1) 编辑
摘要: 题目链接: [APIO2015]八邻旁之桥 对于$k=1$的情况: 对于起点和终点在同侧的直接计入答案;对于不在同侧的,可以发现答案就是所有点坐标与桥坐标的差之和+起点与终点不在同一侧的人数。 将所有点排序,要使答案最优,桥坐标就是这些点坐标的中位数,用平衡树维护一下求中位数即可。 对于$k=2$的 阅读全文
posted @ 2019-05-14 22:19 The_Virtuoso 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 题目链接: [APIO2017]商旅 枚举任意两个点$(s,t)$,求出在$s$买入一个物品并在$t$卖出的最大收益。 新建一条从$s$到$t$的边,边权为最大收益,长度为原图从$s$到$t$的最短路,最短路用$floyd$求即可。 对于原图的边,边权为$0$,长度为输入长度。 对于新图,需要找到一 阅读全文
posted @ 2019-05-13 18:18 The_Virtuoso 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 题目链接: [TJOI2019]甲苯先生和大中锋的字符串 对原串建后缀自动机并维护$parent$树上每个点的子树大小,显然子树大小为$k$的节点所代表的子串出现过$k$次,那么我们需要将$[len[fa[i]]+1,len[i]]$这一段区间的数目都$+1$,只需要差分即可,最后求前缀和并求出所有 阅读全文
posted @ 2019-05-09 00:17 The_Virtuoso 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题目链接: [TJOI2019]大中锋的游乐场 题目本质要求的还是最短路,但因为有第二维权值(汽水看成$+1$,汉堡看成$-1$)的限制,我们在最短路的基础上加上一维$f[i][j]$表示到达$i$节点,权值为$j$的最短路长度,然后像正常最短路那样转移,最后取终点所有状态的最小值即可。 阅读全文
posted @ 2019-05-08 22:47 The_Virtuoso 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 题目链接: [TJOI2019]甲苯先生的字符串 我们用一个$26*26$的$01$矩阵记录任意两个字符是否能相邻。 设$f[i][j]$表示处理完前$i$个字符,第$i$个字符为$j$的方案数。 可以发现将$f[i]$这个$1*26$的矩阵与$26*26$的$01$矩阵相乘即可得到$f[i+1]$ 阅读全文
posted @ 2019-05-07 22:20 The_Virtuoso 阅读(344) 评论(0) 推荐(0) 编辑