随笔分类 - 算法--点分治
摘要:题目链接:https://vjudge.net/problem/HDU-5909 题意:给一颗树,结点带权值v[i]<m。求异或和为k的子树个数(0<=k<m)。 思路: 首先点分治处理一颗树,跑一遍dfs得到该树的dfs序。然后我们用序列dp来做,用dp[i][j]表示必须包括重心,处理序列中第i
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-5977 题意:给一颗树,每个结点上有一个权值a[i],a[i]<=10,求有多少条路径满足这条路径上所有权值的结点都出现了。 思路: 首先利用二进制的思想,将a[i]转化为1<<(a[i]-1)。我们在子树中,计算出结点到重心
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-4812 题意:给定一颗带点权的树,求是否存在一条路经的上点的权值积取模后等于k,如果存在多组点对,输出字典序最小的。 思路: 点分治模板题。按照套路,找重心,求出子树中节点到重心的权值积取模后的值dis[i](包括重心的权值,
        阅读全文
                
摘要:题目链接:https://www.luogu.org/problem/P2664 题意:给定一颗带点权的树,结点数n<=1e5,点权<=1e5,用s(i,j)表示从i到j的路径上不同点权数,ans[i]=sum(s(i,j))。求ans数组。 思路: 继续肝淀粉质,太难了。 涉及到树上点对,且nlo
        阅读全文
                
摘要:题目链接:https://www.luogu.org/problem/P2634 题意:给一颗树,求距离的模3为0的点对数量,注意(1,1)算一个点对,(1,2)和(2,1)算两个点对。 思路:和点分治模板题很像,那个是求距离为k的点对数,这题更简单一点,求距离模3为0的点对数。还是一般的套路,求重
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-1741 题意:给出一棵树,求出树上距离不超过k的点对数量。 思路:点分治经典题。先找重心作为树根,然后求出子树中所有点到重心的距离dis[i],那么所有组合为dis[i]+dis[j]<=k,其中不合法组合为在重心的同一个子树
        阅读全文
                
摘要:点分治的写法1: 题目链接:https://www.luogu.org/problem/P3806 题意:给出一颗带边权的树,结点数n<=1e4,每条边有权值<=1e4,有m组询问(m<=100),每组询问为一个k,表示是否存在一条路经长度为k,存在输出AYE,不存在输出NAY。 思路:点分治模板题
        阅读全文
                
 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号