随笔分类 - 数据结构--并查集
摘要:$n \leq 1000000$个相等或不等关系描述一些变量,问能否成立,多组数据。 走错片场?普及题误入noi 1 //#include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 //#include<math.h> 5 //#inclu
阅读全文
摘要:$n \leq 100000$种蔬菜,每个蔬菜有:一单位价格;卖第一单位时额外价格;总量;每天腐烂量。每天能卖$m \leq 10$单位蔬菜,多次询问:前$k \leq 100000$天最多收入多少。价格、量$ \leq 1e9$。 我也不知道为啥88分QAQ 求大佬看看啊 把第一单位蔬菜和其他的拆
阅读全文
摘要:$n \leq 1000,m \leq 1000$,$n*m$的地图,每个格一个海拔,现在整个图都是水,问要多少个地方装抽水机能使所有指定位置被抽干(符合连通器原理)。 从小到大枚举每个指定格,然后有贡献的就是比当前指定格小的所有格,把他们用并查集搞起来。如果这样也不能使当前格被一个装了抽水机的并查
阅读全文
摘要:$n \leq 50000$的树,有点权$\leq 1e13$,$q \leq 400000$次操作,有两种操作:从$s$跳到$t$每次$k$步,不到$k$步直接跳到$t$,每次把经过的点取根号;同样的跳法,对经过的点求和。 首先一个数根号没几次就变0了因此可以大力修改。根号大力搞,设块大小$S$,
阅读全文
摘要:$n \leq 5e5$,$m \leq 5e5$的无向边权图,$q \leq 5e5$个询问,每次问一系列边是否能同时存在于某棵最小生成树上。 一条边在最小生成树上,当比他小的边都加入后,加入他会使连通块数-1,也就是他两端的点在加入比他小的所有边后仍不在一起。 于是乎把所有询问的所有边排序,每次
阅读全文
摘要:$n \leq 2e5,m \leq 2e5$的有边权图,对每条边问:不改其他边的情况下这条边最多能是多少使得他一定在所有最小生成树上,如果无穷大输出-1. 典型题+耗时题,CF上的绝望时刻。。打VP时前三题花时间太多,导致这题看完题只剩20min,代码还得再敲稳点。 好进入正题,瞎造一棵最小生成树
阅读全文
摘要:$n \leq 2e5,m \leq 2e5,q \leq 2e5$,$n,m$的图给固定的$s,t$,以及$q$个询问,每次问删掉某条边之后问$s$到$t$的最短路。 首先喷一波,出题人语文太差了,这么美的题目居然潦草两句带过背景,描述题目也毫无趣味,差评!(本题分类:语文) 方法一:把图载到一个
阅读全文
摘要:如题。 方法一:LCT!细节挺多,略。 方法二:如题(废话。。) 如果照传统的方法,比如1,2,3在一起要把1删掉,要保证1的爸爸和2,3以后不一样,如果1不是根节点就直接$fa[1]=1$,否则需要改所有的儿子。 上面的问题在于删掉根节点的操作过于冗杂,也就是说想一个办法使得1-n中没有一个点作为
阅读全文
摘要:n<=1e6的树问所有路径的极差之和。 被遗忘的套路。。。以后绝对不会再忘了QAQ 只要算最大值之和即可,最小值同理。数字从大到小排序(反正都是要排序的,如果从大到小不行等会反过来试试),然后逐个考虑贡献,这样的话考虑完一个点就得把这个点周围所有的边断掉表示经过这些边的路径(即经过当前点的路径)不再
阅读全文
摘要:n<=300000个点,开始是独立的,m<=300000个操作: 方法一:单点修改、查询,区间修改、查询?等等等等这里修改是块修改不是连续的啊,那就让他连续呗!具体方法:离线后,每次连接两棵树u,v时,把v放到u树根节点的最后,使其dfs序最后,最后扫一次把每棵树dfs一下搞出这个序列,然后线段树操
阅读全文
摘要:可并堆模板??又敲了一次,一遍过,很好。 1 #include<string.h> 2 #include<stdlib.h> 3 #include<stdio.h> 4 #include<math.h> 5 //#include<assert.h> 6 #include<algorithm> 7 /
阅读全文
摘要:n<=1e6个数,把他们修改成递增序列需把每个数增加或减少的总量最小是多少? 方法一:可以证明最后修改的每个数一定是原序列中的数!于是$n^2$DP(逃) 方法二:把$A_i$改成$A_i-i$,变论文题:论文 大概证明是这样的:考虑合并两个区间的答案,假如一个区间答案是{u,u,u,……,u},另
阅读全文
摘要:n<=1e5个点,每个点有排名,m次连接把某两个岛屿连起来,然后q次操作:合并两个岛屿;查询某个岛屿能到的所有岛屿的第k名次是哪一个。 线段树合并,并查集! 小坑:合并两棵线段树之前,记得判断这两棵树是不是已经在一起了,如果是就不理他; 合并线段树用的是并查集根节点对应的线段树。 1 #includ
阅读全文
摘要:n<=200000个点m<=500000条边的图,问是否存在一种黑白染色方案使每个点满足:要么它是白色,要么它相邻点是白色;并且,要么它是黑色,要么它相邻点是黑色。 除非某个联通块只有一个点,否则一定有解。并查集维护连通性。 1 #include<stdio.h> 2 #include<string
阅读全文
摘要:n<=1000000个数互不相同,我回答m<=25000个询问说Li到Ri最小值是Xi,求最早第几次答得互相矛盾。 首先找到矛盾的情况:一是两个无交区间最小值相同,二是大区间最小值比它子区间的最小值大。 方法一:二分答案,每次看一段里面有没有这两种冲突。先把询问按Xi排个序扫一次就知道有没有冲突一,
阅读全文
摘要:n<=100000条相等/不等关系描述<=100000个数,把这些数据分割成若干段使得每一段描述都出现冲突且冲突只出现在最后一行。 相等关系具有传递性,并查集维护;不等关系根据相等关系进行合并,采用平衡树的启发式合并。 每次遇到相等关系x,y,先找到x,y对应并查集的根p,q,判是否p在q的不等关系
阅读全文

浙公网安备 33010602011771号