Color a Tree】的更多相关文章

贪心....                    Color a Tree Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6647   Accepted: 2249 Description Bob is very interested in the data structure of a tree. A tree is a directed graph in which a special node is single…
Color a Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 828    Accepted Submission(s): 272 Problem DescriptionBob is very interested in the data structure of a tree. A tree is a directed gr…
/* 十分巧妙的二分 题意选最少的点涂色 使得满足输入信息: 1 x的子树涂色数不少于y 2 x的子树外面涂色数不少于y 我们若是把2转化到子树内最多涂色多少 就可以维护这个最小和最大 如果我们二分出了答案 就可以完成转化 转化后也恰好可以判断二分是否合法 */ #include<cstdio> #include<cstring> #include<iostream> #define maxn 100010 using namespace std; int T,n,m,…
题干 Bob is very interested in the data structure of a tree. A tree is a directed graph in which a special node is singled out, called the "root" of the tree, and there is a unique path from the root to each of the other nodes. Bob intends to colo…
Color a Tree 题目链接 好不可做?可以尝试一下DP贪心网络流.DP 似乎没法做,网络流也不太行,所以试一下贪心. 考虑全局中最大权值的那个点,如果它没父亲,那么一定会先选它:否则,选完它父亲就一定先选它.于是我们可以把它缩成一个点. 但是我们并不知道缩点后的权值是多少,这样就没法继续缩下去.我们考虑一对被缩点的父子 \(x,y\),以及全局中的另一个点 \(a\),什么时候会先选 \(a\),什么时候先选 \(x,y\).如果先选 \(x,y\),那么就有 \(x + 2y + 3a…
Bob intends to color the nodes of a tree with a pen. The tree consists of NN nodes. These nodes are numbered 1,2,...,N1,2,...,N. The root of the tree is node 11. The initial color of each node is white. Bob can use one unit energy to color one node i…
Bob intends to color the nodes of a tree with a pen. The tree consists of NN nodes. These nodes are numbered 1,2,...,N1,2,...,N. The root of the tree is node 11. The initial color of each node is white. Bob can use one unit energy to color one node i…
这道题细节真的非常多 首先能够想到a和b的最优策略一定是沿着a和b在树上的链走,走到某个点停止,然后再依次占据和这个点邻接的边 所以,解决这道题的过程例如以下: 预处理阶段: step 1:取随意一个点为根节点.找出父子关系而且对这个树进行dp.求出从某个节点出发往下所包括的全部边的权值总和  复杂度O(n) step 2:从tree dp 的结果中计算对于某个节点.从某条边出发所包括的边的综合.而且对其从大到小进行排序 复杂度O(n*logn) step 3:dfs求出这颗树的欧拉回路,以及每…
题目链接:Click here Solution: 看起来不太能dp,则考虑树上贪心 题目要求一个点必须先染父亲才能染自己,就给了我们启示,贪心的合并点 我们定义一个点的权重为这个点的价值和/点数,然后贪心的选择权重最大的点加入到答案,合并到他的父亲 值得注意的是加入到答案的过程为加上这个点的价值和\(\times\)父亲节点的点数,因为这代表在他之前染色的点数 Code: #include<cstdio> #include<cstring> #include<algorit…
一棵树,结点树为n,根结点为r.每个结点都有一个权值ci,开始时间为0,每染色一个结点需要耗时1,每个结点的染色代价为ci*ti(ti为当前的时间),每个结点只有在父结点已经被染色的条件下才能被染色.求染完整棵树需要花费的最小代价. 找出当前最大子节点和其父节点合并成新的节点直到点集中只剩一个节点因为合并时将子节点的权值加在父节点上则 每次更新 答案加上当前子节点的权值乘上父节点的花费时间,这个很神奇 因为合并后,当对其父节点操作时也会重复加上子节点权值,即累加起来等同于每一个节点的最初权值乘上…
# include <stdio.h> # include <algorithm> # include <string.h> using namespace std; int father[1010]; int next[1010];//当前集合的下个元素(包含i) int pre[1010];//当前集合的上个元素(包含i) int num[1010];//num[i]当前集合储存的点的个数(包含i) int vis[1010]; int sum[1010];//当前…
题目链接 代码借鉴此博:http://www.cnblogs.com/vongang/archive/2011/08/19/2146070.html 其中关于max{c[fa]/t[fa]}贪心原则,此博有很好的解释:http://www.cnblogs.com/rainydays/p/3271277.html 在此引用其中几段话: 试想,如果没有父节点排在节点之前的限制,那么这个题目非常简单,只需要将结点按照权值从大到小排列即可.加上了这个限制之后,如果权值最大的那个节点一旦满足了条件(父节点…
POJ终于修好啦 题意 和UVA1205是同一题,在洛谷上是紫题 有一棵树,需要给其所有节点染色,每个点染色所需的时间是一样的都是11.给每个点染色,还有一个开销“当前时间×ci×ci”,cici是每个节点的一个权值.(当前时间是染完这个节点的时间)  染色还有另一个约束条件,要染一个点必须要先染好其父节点,所以第一个染的点是根节点.  求最小开销. 思路 这道题显然对于 每一个可选的子节点选最重的 的贪心思路是错误的 就有点类似动态规划了 不过不DP也是可以贪心出来的.但是这个策略比较麻烦.大…
神题.这题是巨毒瘤... 自己写真可谓是: 排空驭气奔如电,上天入地求之遍 上穷碧落下黄泉,两处茫茫皆不见 由于我们知道:不是树形时,不停选值最大的节点可以得到最小代价. 那么我们就能想出一个错误的贪心:每次从能选的中选出最大的. 下面我们来构造反例: root ↙     ↘ 1         2 ↓ 100 贪心:2 + 2 + 300 = 304 实际:1 + 200 + 6 = 207 那么我们该如何处理呢? 完全搞不倒啊!看题解看题解 得出如下结论:最大的节点一定是紧随着父节点染色的…
大意就是给你一颗树,每个点有一个权值w[i],求一个排列使得 所有的父亲都在儿子前面 并且排列的权值最小. 排列的权值在这里定义为 Σ i * w[p[i]]   ,其中p[i] 是排列第i个位置的元素. 然后我瞎jb胡了一个算法,对于每个子树维护一个 p[],表示只考虑子树内的元素的最优排列.显然我们只要把一个点的所有儿子都合并之后再把这个点放在排列的第一个位置就可以了.(可以证明这些元素再往上走的时候相对位置还是一样的) 问题是怎么合并. 其实这就是个dp,合并x和y子树的时候,f[i][j…
[题目链接] http://poj.org/problem?id=2054 [算法] 贪心 [代码] #include <algorithm> #include <bitset> #include <cctype> #include <cerrno> #include <clocale> #include <cmath> #include <complex> #include <cstdio> #include…
https://zybuluo.com/ysner/note/1120723 题面 原题 某省选强化题 大致意思是给你一颗树,选父亲后才能选儿子. 每个点对答案的贡献为你在第几次选这个点 × 该点权值 问取完所有点最小答案是多少. 对于\(60pts\) \(n\leq1000\) 对于\(100pts\) \(n\leq500000\) 解析 贪心没学好,_ _ _ _ _(自己yy) 答案要求的其实是个选取序列... 我们可以发现,要保证答案最优性,最大点取的时间越小越好. 又可以发现,只要…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6241 题意:给你一棵有 n 个结点的树,每个结点初始颜色都为白色,有 A 个条件:结点 x_i 的黑色结点数目不少于 y_i 个,同时有 B 个条件,除了结点 x_j 及其子树外至少有 y_j 个结点,求把最少要染成黑色结点的数目使得满足 A + B 个条件. 题解:参考自:https://blog.csdn.net/u013534123/article/details/78523559 #incl…
有一个N个结点的有根树,1是这个树的根.现在要对这N个结点依次进行染色,每个结点染色要花费1个单位的时候,同时要满足一个结点仅在其父亲被染色后才可被染色,每个结点有个权值Ci,如果我们在第Ti时间对i号结点染色,则付出总代价为Sigma(Ti*Ci),1<=i<=N.现在给出这个树和每个点的权值,请构造一种染色顺序,使得总代价最小.N<=1000 5 1//5个点1 2 1 2 4 //5个点的权值1 21 32 43 50 0//整个测试结束Sample Output33 Sol:一个…
传送门 看一眼感觉 $dp$,发现状态没法维护 考虑贪心,然后就想了两个错的贪心... 正解好神啊 首先如果权值最大的点能够一步染色那么肯定要染它 意思就是,一旦父节点被染色那么它就要接着被染色 那么把它们父子两合并成一个新的点,其他节点根据原来的边也连上来 考虑新的点的权值要怎么搞,现在既然这个节点包含了两个点,那么把它染色要两个单位时间,而染其他点只要 $1$ 单位时间 此时染它对整颗树产生的额外的代价为 $2$ 乘其他节点权值和,把其他点 $x$ 染色额外代价为 $1$ 乘其他节点 (非…
$ POJ~2054~Color~a~Tree $ $ solution: $ 我们先从题中抽取信息,因为每个点的费用和染色的次数有关,所以我们可以很自然的想到先给权值大的节点染色.但是题目还说每个节点染色前它的父亲节点也必须被染色,这就有了很多的后效性. 暂时没有办法贪心,我们就只能再找找性质.博主首先想到的是从叶子节点考虑,叶子节点里权值最小的一定最后染色.但是经过自我hack,这个结论也是错的.举个栗子:5-1-1-1-8,这条链上如果以左边第一个1为根,先染5会更优. 叶子节点我们拿他没…
$poj$ $Description$ 一颗树有 $n$ 个节点,这些节点被标号为:$1,2,3…n,$每个节点 $i$ 都有一个权值 $A[i]$. 现在要把这棵树的节点全部染色,染色的规则是: 根节点R可以随时被染色;对于其他节点,在被染色之前它的父亲节点必须已经染上了色. 每次染色的代价为$T*A[i]$,其中$T$代表当前是第几次染色. 求把这棵树染色的最小总代价. $Sol$ 贪心:树中权值最大的点,一定会在它的父结点染色后立即染色 可以这样想,假设没有树的约束,只是一个序列,那么显然…
树形组件是一种具有层级结构的组件,广泛应用于各种场景.本章会实现一个简单的树形组件,尽管功能有限,但你可以通过扩展它来实现自己所需要的树形组件. 数据源 树形组件的数据源可以是 JSON 格式的数据对象,也可以是具有 XML 结构的数据或者是其它的具有层级结构的数据.本章将采用具有如下 JSON 格式的数据对象. var data = { name: 'My Tree', children: [ { name: 'hello' }, { name: 'world' }, { name: 'chi…
Colorful Tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1539    Accepted Submission(s): 616 Sample Input 3 1 2 1 1 2 2 3 6 1 2 1 3 2 1 1 2 1 3 2 4 2 5 3 6 Sample Output Case #1: 6 Case #…
已知先序序列,判断对应的二叉排序树是否为红黑树.序列中负数表示红色结点,正数表示黑色结点.该序列负数取绝对值后再排序得到的是中序序列.根据红黑树的性质判断它是否符合红黑树的要求.考察了根据先序序列和中序序列建树和DFS. //#include "stdafx.h" #include <iostream> #include <algorithm> using namespace std; struct treeNode { // tree node struct…
Description You are given a rooted tree with n vertices. The vertices are numbered from 1 to n, the root is the vertex number 1. Each vertex has a color, let's denote the color of vertex v by cv. Initially cv = 0. You have to color the tree into the…
之前两次遇到过函数的思想的题,所以这次很敏感就看出来了.可以参考之前的题: https://www.cnblogs.com/hua-dong/p/9291507.html Christmas is coming! Eddy has received a Christmas tree as gift. Not surprisingly, the tree consists of N vertices and N-1 edges and magically remains connected. Cu…
题目描写叙述: 长度为L个单位的画板,有T种不同的颜料.现要求按序做O个操作,操作分两种: 1."C A B C",即将A到B之间的区域涂上颜色C 2."P A B".查询[A,B]区域内出现的颜色种类 出现操作2时.请输出答案 PS:初始状态下画板颜色为1 一開始没有想那么好,用int整型位移来取代颜色.还是使用了最传统的bool color[来记录.但是不知道错在了哪里. #include<iostream> #include<cstdio&g…
Count Color Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 38921   Accepted: 11696 Description Chosen Problem Solving and Program design as an optional course, you are required to solve all kinds of problems. Here, we get a new problem.…
Color the Ball Time Limit: 2 Seconds      Memory Limit: 65536 KB There are infinite balls in a line (numbered 1 2 3 ....), and initially all of them are paint black. Now Jim use a brush paint the balls, every time give two integers a b and follow by…