09 2016 档案

摘要:Problem Digit Tree 题目大意 给一棵树,有边权1~9。 询问有多少个点对(i,j),将i--j路径上的数字依次连接后所形成新数字可以被k整除。gcd(K,10)=1 解题分析 点分治。考虑某一次分治,根为rt,求出所有子节点到根所形成数字为A,根到所有子节点所形成数字为B。 那么即 阅读全文
posted @ 2016-09-30 16:32 rpSebastian 阅读(922) 评论(0) 推荐(0)
摘要:Problem Tree 题目大意 给一棵树,有边权。求树上距离小于等于K的点对有多少。 解题分析 点分治。对每一棵子树进行dfs,求出每棵子树的重心,继而转化为子问题。 对于经过根的路径i--j,令dep为到根距离,那么需求出dep[i]+dep[j]<=k,且i,j属于不同子树,可以求其补集,求 阅读全文
posted @ 2016-09-29 21:34 rpSebastian 阅读(214) 评论(0) 推荐(0)
摘要:problem sort 题目大意 有n个数组,每个数组有a[i]个元素,每次可以将至多k个数组合并为一个数组,所花费代价为这些数组的元素和。给定代价上限,求将所有数组合并为1个数组的最小k。 解题分析 二分k后就成了k叉哈夫曼树问题。 对于k叉哈夫曼树,可以利用所合并元素的权值单调性,用两个双端队 阅读全文
posted @ 2016-09-19 20:43 rpSebastian 阅读(221) 评论(0) 推荐(0)
摘要:problem Iahub and Xors 题目大意 一个n*n的矩阵,要求支持两种操作。 操作1:将一个子矩阵的所有值异或某个数。 操作2:询问某个子矩阵的所以值的异或和。 解题分析 由于异或的特殊性,可以用二维树状数组来维护。 因为同一个值只有异或奇数次才有效,因此若单点修改某个点,那么其影响 阅读全文
posted @ 2016-09-19 20:13 rpSebastian 阅读(617) 评论(0) 推荐(0)
摘要:Problem Different GCD Subarray Query 题目大意 给定n个数的序列,有q个询问,每次询问一个区间中所有子区间所形成不同的gcd的数量。 解题分析 由于固定一个数为右端点,所能形成的gcd共有logn,所以可以预处理出每个数为右端点所能形成的gcd,相同gcd取左端点 阅读全文
posted @ 2016-09-12 20:45 rpSebastian 阅读(514) 评论(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 阅读(976) 评论(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 阅读(449) 评论(0) 推荐(0)
摘要:Problem 魔法森林 (NOI2014) 题目大意 给n个点,m条边的无向图,每条边有两个权值a,b。 求一条从1-->n的路径,使得这条路径上max(a)+max(b)最小。输出最小值即可。 解题分析 将边按照权值a从小到大排序后,依次加边,用lct维护一棵权值b组成的最小生成树。 具体做法是 阅读全文
posted @ 2016-09-01 21:37 rpSebastian 阅读(212) 评论(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 阅读(601) 评论(0) 推荐(0)