随笔分类 - 

1
摘要:"CERC 2014 Pork barrel" Problem : n个点m条边有边权的无向图,有q个询问,每次询问权值在[L,R]内的边组成的最小生成树的权值和,强制在线。 n include include include include include include include incl 阅读全文
posted @ 2017-08-27 23:36 rpSebastian 阅读(217) 评论(0) 推荐(0)
摘要:" HDU 6035 Colorful Tree" Problem : 给一棵树,每个结点有一种颜色,定义每条路径的权值为这条路径上颜色的种数,询问所有路径(C(n,2)条)的权值之和。 Solution : 分开考虑每种颜色对答案的贡献。对于一种颜色,一共有C(n,2)条路径,再考虑问题的反面。不 阅读全文
posted @ 2017-07-25 19:54 rpSebastian 阅读(436) 评论(0) 推荐(0)
摘要:Problem Digit Tree 题目大意 给一棵树,有边权1~9。 询问有多少个点对(i,j),将i--j路径上的数字依次连接后所形成新数字可以被k整除。gcd(K,10)=1 解题分析 点分治。考虑某一次分治,根为rt,求出所有子节点到根所形成数字为A,根到所有子节点所形成数字为B。 那么即 阅读全文
posted @ 2016-09-30 16:32 rpSebastian 阅读(914) 评论(0) 推荐(0)
摘要:Problem Tree 题目大意 给一棵树,有边权。求树上距离小于等于K的点对有多少。 解题分析 点分治。对每一棵子树进行dfs,求出每棵子树的重心,继而转化为子问题。 对于经过根的路径i--j,令dep为到根距离,那么需求出dep[i]+dep[j]<=k,且i,j属于不同子树,可以求其补集,求 阅读全文
posted @ 2016-09-29 21:34 rpSebastian 阅读(208) 评论(0) 推荐(0)
摘要:Problem This world need more Zhu 题目大意 给一颗n个点的有点权的树,有m个询问,对于每个询问u,v,k,首先将点u到点v的最短路径上的所有点按顺序编号,u的编号为1,求树链上所有点的新编号cnt满足cnt%k==0的点的权值的最大值。 n,m,k<=10^5 解题分 阅读全文
posted @ 2016-09-09 13:58 rpSebastian 阅读(967) 评论(0) 推荐(0)
摘要:Problem GCD Tree 题目大意 n个点的无向完全图,标号1~n,每条边u-->v 的权值为gcd(u,v),求其最大生成树,输出最大边权和。 n<=10^5,有多个询问。 解题分析 从小到大加入每个点,计算其对答案的贡献。 对于一个点i,只有向它的约数连边才有可能对答案有贡献。 用lct 阅读全文
posted @ 2016-09-01 23:26 rpSebastian 阅读(435) 评论(0) 推荐(0)
摘要:Problem 魔法森林 (NOI2014) 题目大意 给n个点,m条边的无向图,每条边有两个权值a,b。 求一条从1-->n的路径,使得这条路径上max(a)+max(b)最小。输出最小值即可。 解题分析 将边按照权值a从小到大排序后,依次加边,用lct维护一棵权值b组成的最小生成树。 具体做法是 阅读全文
posted @ 2016-09-01 21:37 rpSebastian 阅读(204) 评论(0) 推荐(0)
摘要:Problem Query on The Trees 题目大意 给一棵树,有点权,要求维护4种操作。 操作1:加一条边。 操作2:删一条边。 操作3:将一条路径上的点权增加w。 操作4:询问一条路径上的点权最大值。 解题分析 lct练习题 ps:lct模板抄自黄学长。 参考程序 1 #include 阅读全文
posted @ 2016-09-01 11:33 rpSebastian 阅读(596) 评论(0) 推荐(0)
摘要:Probelm Terrorists 题目大意 给一张n个点,m条边的无向图。共有q个询问,每次询问u到v的最短路。 n <= 100000 , n-1 <= m <= n + 50 , q <= 50000。 解题分析 注意到m的范围比较特殊,所以可以看成是一棵树加上若干条非树边。 将所有的非树边 阅读全文
posted @ 2016-08-26 20:24 rpSebastian 阅读(286) 评论(0) 推荐(0)
摘要:Problem Toll Management IV 题目大意 给一张n个点m条边的无向图,有边权。数据保证前n-1条边构成了一棵最小生成树。 要求对于每条边求出其边权上下最多浮动范围,使得最小生成树的形态不变(每次只改变一条边的权值)。 n<=10000,m<=1000000 解题分析 我们称在最 阅读全文
posted @ 2016-08-22 00:23 rpSebastian 阅读(391) 评论(0) 推荐(0)
摘要:Problem 旅行 (BZOJ 3531) 题目大意 给定一颗树,树上的每个点有两个权值(x,y)。 要求维护4种操作: 操作1:更改某个点的权值x。 操作2:更改某个点的权值y。 操作3:求a-->b路径上所有x属性与a,b相同的点y属性的和。 操作4:求a-->b路径上所有x属性与a,b相同的 阅读全文
posted @ 2016-08-04 23:40 rpSebastian 阅读(386) 评论(0) 推荐(0)
摘要:Problem 染色(BZOJ2243) 题目大意 给定一颗树,每个节点上有一种颜色。 要求支持两种操作: 操作1:将a->b上所有点染成一种颜色。 操作2:询问a->b上的颜色段数量。 解题分析 树链剖分+线段树。 开一个记录类型,记录某一段区间的信息。l 表示区间最左侧的颜色 , r 表示区间最 阅读全文
posted @ 2016-08-03 00:11 rpSebastian 阅读(275) 评论(0) 推荐(0)
摘要:Problem Tree (POJ3237) 题目大意 给定一颗树,有边权。 要求支持三种操作: 操作一:更改某条边的权值。 操作二:将某条路径上的边权取反。 操作三:询问某条路径上的最大权值。 解题分析 树链剖分+线段树。练手题。 参考程序 1 #include <cstdio> 2 #inclu 阅读全文
posted @ 2016-08-02 21:58 rpSebastian 阅读(232) 评论(0) 推荐(0)
摘要:Problem T2 (bzoj4034 HAOI2015) 题目大意 给定一颗树,1为根节点,要求支持三种操作。 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。 解题分析 阅读全文
posted @ 2016-08-01 23:04 rpSebastian 阅读(202) 评论(0) 推荐(0)
摘要:Problem Little Devil I (HDU4897) 题目大意 给定一棵树,每条边的颜色为黑或白,起始时均为白。 支持3种操作: 操作1:将a->b的路径中的所有边的颜色翻转。 操作2:将所有 有且仅有一个点在a->b的路径中 的边的颜色翻转。 操作3:询问a->b的路径中的黑色边数量。 阅读全文
posted @ 2016-07-31 17:05 rpSebastian 阅读(602) 评论(0) 推荐(0)
摘要:Problem Aragorn's Story (HDU 3966) 题目大意 给定一颗树,有点权。 要求支持两种操作,将一条路径上的所有点权值增加或减少ai,询问某点的权值。 解题分析 树链剖分模板题。 实质上树链剖分进行了点对点的一次映射,保证了重链上的点在线段树上的位置是连续的。 树链剖分的两 阅读全文
posted @ 2016-07-31 02:22 rpSebastian 阅读(1261) 评论(0) 推荐(0)
摘要:const maxn=50008; INF=2000000000;type arr=record u,v,nt:longint; end; arr1=array[0..maxn] of longint;var eg:array[0..maxn*2] of... 阅读全文
posted @ 2015-04-07 20:28 rpSebastian 阅读(147) 评论(0) 推荐(0)
摘要:type arr=record v,nt:longint; end;const maxn=10008; lx=20;var lt:array[0..maxn] of longint; eg:array[0..maxn*2] of arr; d:array[0..maxn] of ... 阅读全文
posted @ 2015-03-23 14:34 rpSebastian 阅读(162) 评论(0) 推荐(0)
摘要:const lx=100004; xh=27;var L,p,nt:array[0..lx*2] of longint; lt,dfn,fr,dep:array[0..lx] of longint; f:array[0..lx*2,0..xh] of longint; ... 阅读全文
posted @ 2015-03-23 08:52 rpSebastian 阅读(173) 评论(0) 推荐(0)
摘要:program LCA(Tarjan);type arr=record u,v,w,next:longint; end;const maxn=100008; maxm=100008;var eg:array[0..maxm*4] of arr; last,lasq,a... 阅读全文
posted @ 2014-12-10 19:48 rpSebastian 阅读(292) 评论(0) 推荐(0)

1