
ACM/ICPC树分治
just_sort
Acdream.
展开
-
Codeforces 321C Ciel the Commander 树分治 2017/1/10
题目链接:见这里 题意:给出一棵n个节点的树,为每个节点分配一个大写字母(从A到Z,这里认为A>B>C…>Z),每种字母可以无限使用, 满足对于任意字母相同的两个节点u和v,在u到v的路径上存在一个节点的字母大于u节点处和v节点处的字母, 输出分配方案,无解输出”Impossible” 分析:找树的重心,把它染成最大的字母,然后把它去掉,树就会分成很多份,并且在这些树里我们不再使用最大的字母原创 2017-01-13 20:50:48 · 768 阅读 · 0 评论 -
BZOJ 1460: Pku2114 Boatherds 点分治
Description 给你一棵n个点的带权有根树,有p个询问,每次询问树中是否存在一条长度为Len的路径,如果是,输出Yes否输出No. Input 第一行两个整数n, p分别表示点的个数和询问的个数. 接下来n-1行每行三个数x, y, c,表示有一条树边x→y,长度为c. 接下来p行每行一个数Len,表示询问树中是否存在一条长度为Len的路径. Output 输出有p行,Yes或No原创 2017-05-04 16:14:50 · 486 阅读 · 0 评论 -
HDU 4812 D Tree
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4812 题意:给出一棵树,让你寻找一条路径,使得路径上的点相乘mod10^6+3等于k,输出路径的两个端点,按照字典序最小输出。 解法:这类问题很容易想到树的分治,每次找出树的重心,以重心为根,将树分成若干棵子树,然后对于每棵子树再一样的操作,现在就需要求一重心为根,寻找路径,依次遍历每原创 2017-10-08 11:20:50 · 315 阅读 · 0 评论 -
HDU5977 Garden of Eden 树分治+高维前缀和
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5977 题意:给一个有n(1 解法:树分治+高维前缀和,暴力枚举就超时了,但是只要知道高维前缀和以及枚举子集的相关知识,就能用O(k*(1 //高维前缀和+树分治 #include using namespace std; typedef long long LL;原创 2017-10-02 15:56:22 · 402 阅读 · 0 评论