HDU 6035 (虚树)(统计颜色)】的更多相关文章

HDU 6035 Colorful Tree Problem : 给一棵树,每个结点有一种颜色,定义每条路径的权值为这条路径上颜色的种数,询问所有路径(C(n,2)条)的权值之和. Solution : 分开考虑每种颜色对答案的贡献.对于一种颜色,一共有C(n,2)条路径,再考虑问题的反面.不含有这种颜色的路径的数量,即为将这棵树上所有这种颜色的点删去后,所有剩下的树的路径数量. 问题关键在于统计删去点之后每颗树的大小,对于每个节点要计算删去其所有相同颜色的子树,用栈进行维护.即每次访问到每个节…
HDU 6070 Partition Problem : 给一段长度为n的序列,要求找出一段区间,使得这段区间的数字种类除以区间长度最小.输出最后的答案即可.(n <= 60000)(9s时限) Solution : 显然,答案是0~1中的一个数字,可以很自然的想到二分答案的做法.假设目前二分到的答案为mid,那么需要判断 \[\frac{cnt(l, r)}{r- l + 1} <= mid\] 其中cnt(l,r)为l到r这个区间内的数字种类.变化一下式子可以得到: \[cnt(l, r)…
Description (我并不想告诉你题目名字是什么鬼) 有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n]. 现在有若干组询问,对于每一个询问,我们给出若干个后缀(以其在S中出现的起始位置来表示),求这些后缀两两之间的LCP(LongestCommonPrefix)的长度之和.一对后缀之间的LCP长度仅统计一遍. Input 第一行两个正整数n,m,分别表示S的长度以及询问的次数. 接下来一行有一个字符串S. 接下来有m组询问,对于每一组询问,均按照以下格式在一行内给出: 首先是…
题目描述 记 $lcp(i,j)$ 表示 $i$ 表示 $i$ 这个后缀和 $j$ 这个后缀的最长公共后缀长度给定一个字符串,每次询问的时候给出两个正整数集合 $A$ 和 $B$,求$\sum_{i\in A,j\in B}lcp(i,j)$ 的值.   题解: 对反串建立后缀自动机. 这样,任意两个后缀树节点所代表的字符串的 $LCP$ 值就是两点最近公共祖先在自动机中的 $len$ 值. 问题转化为 $\sum_{i\in A,j\in B}len[LCA(id[i],id[j])]$ 其中…
考虑到树上操作:首先题目要我们求每条路径上出现不同颜色的数量,并把所有加起来得到答案:我们知道俩俩点之间会形成一条路径,所以我们可以知道每个样例的总的路径的数目为:n*(n-1)/2: 这样单单的求,每条路径(n:2e5)无疑会爆: 这样我们假设所有路径上都存在所有的颜色,所有总的答案为n*(n-1)/2*n: 然后我们再在里面减去我们不需要的: 这里我们要运用虚树(当前图的信息整合而已)的思想,其实也没有建出一颗树: 对于一个顶点u,颜色为x,在它的子树内所有以颜色x为根的子树都要舍去://这…
Problem E. TeaTree Problem Description Recently, TeaTree acquire new knoledge gcd (Greatest Common Divisor), now she want to test you.As we know, TeaTree is a tree and her root is node 1, she have n nodes and n-1 edge, for each node i, it has it’s va…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6035 [题目大意] 给出一颗树,一条路径的价值为其上点权的种类数,求路径总价值 [题解] 我们计算单个颜色的贡献,那么就是经过该颜色至少一次的路径数量, 我们统计的时候在每个点记录以其为开始的路径的答案和, 统计的时候计算了点自身,同时有重复计算的部分,最后减去n除以2即可 那么我们只要在每种颜色的虚树上统计即可. 对于子树的贡献需要区间修改,我们在dfs序的差分数组上更改,最后求前缀和即可.…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6035 [题目大意] 给出一颗树,一条路径的价值为其上点权的种类数,求路径总价值 [题解] 单独考虑每一种颜色,答案就是对于每种颜色至少经过一次这种的路径条数之和. 反过来思考只需要求有多少条路径没有经过这种颜色即可. 直接做可以采用虚树的思想(不用真正建出来),对每种颜色的点按照 dfs 序列排个序, 就能求出这些点把原来的树划分成的块的大小. 在搜索的过程中我们保存每个颜色的父节点,一遍dfs…
选择k个颜色,使得颜色的虚树有交的方案数 肯定要考虑连通块的贡献. 法一 https://www.cnblogs.com/xzz_233/p/10292983.html 枚举连通块还是不可行的. 枚举连通块的最上面的点 建立虚树,差分,得到每个点作为虚树最高点的虚树个数ai,在另外bi个虚树的内部 这个点i作为最高点贡献的连通块个数可以计算 和ai,bi密切相关,开个桶存储个数,枚举ai+bi(或者说bi)的个数,NTT 法二 http://blog.leanote.com/post/rockd…
原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1868.html 题目传送门 - 51Nod1868 题意 给定一颗 $n$个点的树,每个点一个 $[1,n]$ 的颜色.设 $g(x,y)$ 表示 $x$ 到 $y$ 的树上路径上有几种颜色. 对于一个长度为 $n$ 的排列 $P[1\cdots n]$ ,定义 $f(P)=\sum_{i=1}^{n-1}g(P_i,P_{i+1})$ . 现在求对于 $n!$ 个排列,他们的 $f(P)$ 之和…