Paint the Tree】的更多相关文章

Paint the Tree 题目来源: Moscow Pre-Finals Workshop 2018 Day 5 C 题目大意: 一棵\(n(n\le2000)\)个点的树,有\(m(2<m<n)\)种颜料,为每个结点涂色,希望让最近的同色点对距离最远.问最远距离是多少,此时有多少种涂色方案. 思路: 二分答案\(k\),用BFS序枚举点对,若距离\(<k\)则说明这两个点一定是不同颜色. 时间复杂度\(\mathcal O(n^2\log n)\). 源代码: #include&l…
E. Paint the Tree 题目大意:给你一棵树,每一个点都可以染k种颜色,你拥有无数种颜色,每一种颜色最多使用2次,如果一条边的两个节点拥有同一种颜色,那么就说 这条边是饱和的,一个树的价值定义为饱和边的权值之和,问一棵树的最大价值是多少. dp[u][1] 表示这条边用了k种颜色了. dp[u][0] 表示这条边用了k-1种颜色. 子节点往父亲节点转移的时候,这个转移带有一点点的贪心. 首先因为每一个子节点到父亲节点的这条边要不要都会对后面产生影响. 所以我们可以构造一个模型,dp模…
传送门 首先如果某个点的度数大于 $2$ 那么显然无解 然后考虑点的度数小于等于 $2$ 的情况 发现其实是一条链 一旦确定了链开头的两个点,后面的点的颜色都可以通过之前的点推出 所以直接枚举即可 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<vector> using namespa…
传送门 首先每个点 $u$ 只能选择不超过 $k$ 个相连的边 并且设边为 $(u,v)$ ,那么此时 $v$ 也必须选择这条边 因为图是一颗树,显然考虑一下树形 $dp$ 设 $f[x][0/1]$ 表示考虑完 $x$ 的子树,当前节点有没有留一个选择给和父亲相连的边($0$ 表示没有) 那么对于 $f[x][0]$ 考虑所有 $x$ 的儿子 $v$,我们要选出不超过 $k$ 个儿子的 $f[v][1]+val(x,v)$ ,然后剩下的儿子全部选 $f[v][0]$ ,求最大价值 (其中 $v…
题目链接:传送门 题目大意: 给出节点数为n的一棵带权树,和每个点的最大染色数k.一条边的权重w能产生价值w的条件是,这条边的两端的点至少有一个颜色相同.颜色种类数无限,但每种只能使用两次,问能产生的最大总价值. 思路: (这两天刷dp专题ing,一上来就会朝dp方面想.看到题目中给出的还是个树,直接盲猜树形dp开始搓状态.结果还tm都搓出来了,以后再看到树会不会巴甫洛夫效应了呀!) 这题考虑树形dp.树形dp的话一般都是考虑一棵以u为根的树的状态,能不能很好地从以u的儿子v为根的子树的状态转移…
题意: n<=1e5,1<=a[i][j]<=1e9 思路: 不是很懂INF为什么要开到1e15,我觉得只要1e14就好 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned int uint; typedef unsigned long long ull; typedef pair<int,int> PII; typedef pair<ll,l…
题目链接:https://codeforces.com/contest/1244/problem/D 题意:给你一个树,让你把树上的每个节点染成三种颜色,使得任意三个互相相邻的节点颜色都不一样(意思是如果两个节点相邻,那么与这两个节点相邻的节点的颜色得和这两个节点都不一样).这里给出每个节点染成三种颜色的代价,让我们求全部染色代价最小的方案与最小代价. 解析:如果一个点的度数大于等于3,那么肯定没有方案.所有这个树一定只是一条链,我们从度数为1的点开始dfs,把这条链存在数组里,就相当于我们只需…
题意: 有一颗树,n个点,边有边权. 有无限多种颜色,每个点可以同时染上k种颜色,如果一条边的两个端点 拥有至少一种相同的颜色,那么说这条边是“饱和的”. 问:所有“饱和边”的权值和最大为多少,只需要输出最大值,不需要输出方案. 思路: 一开始看到这题的tag是2200,感觉肯定不会,后来发现有的人过了这题,但是却过不了D题,我就试着做做看了.结果还行. 显然,简化题意后,就是说: 删除一些边,使得每个点的度最多为k,求剩下的边的最大权值和. 这种题,暴力不可取,也没有什么模板的算法可以用,所以…
题:https://codeforces.com/contest/1241/problem/E 题目大意:给你一棵树,每一个点都可以染k种颜色,你拥有无数种颜色,每一种颜色最多使用2次,如果一条边的两个节点拥有同一种颜色,那么就说 这条边是饱和的,一个树的价值定义为饱和边的权值之和,问一棵树的最大价值是多少. #include<bits/stdc++.h> using namespace std; typedef long long ll; #define pb push_back ; int…
E. Ostap and Tree time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Ostap already settled down in Rio de Janiero suburb and started to grow a tree in his garden. Recall that a tree is a conn…