POJ 2054 Color a Tree 贪心

pku 2054 color a tree 解题报告 花了老长时间琢磨。。终于还是过了,长了很多经验,写的简单易懂。。 立即下载

时空隧道


题目大意:
给出一棵有根树(有向边),每个节点权值为val[i],要求把所有点组成一个序列并且父亲节点排在子节点前面,使得ans=val[1]*1+val[2]*2+……+val[n]*n最小…


分析:
看到此题第一想法就是val大的放前面…但是这是在没有限制的情况下…如果我们现在限制父节点一定比子节点靠前那么对于val大的子节点来说当然是紧挨着父节点最好…所以我们可以得到一些二元组(也就是把子节点和父节点绑定)…
现在我们有xy这个二元组和z这个单独节点,考虑怎样排列使得结果最优…
假设先选xy优于先选z,那么我们可以得到式子i*x+(i+1)*y+(i+2)*z < i*z+(i+1)*x+(i+2)*y…化简得到x+y>2*x,也就是(x+y)/2>x…这不就是说x+y的平均值大的优先选么…
现在我们把二元组和点扩展为两个序列…可以得到同样的结论…平均值大的优先选…所以我们只要每次选出val最大的点,然后把当前节点与其父节点合并(val变为平均值)就可以确定序列的顺序了…


代码如下:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
//by NeighThorn
using namespace std;
const int maxn=1000+5;
int n,r,fa[maxn],sum[maxn],tim[maxn],cnt,ans;
double val[maxn];
signed main(void){
    while(scanf("%d%d",&n,&r)&&!(!n&&!r)){
        cnt=ans=0;
        for(int i=1;i<=n;i++)
            scanf("%lf",&val[i]),ans+=(int)val[i],sum[i]=val[i],tim[i]=1;
        for(int i=1,x,y;i<n;i++)
            scanf("%d%d",&x,&y),fa[y]=x;//有向图 
        while(cnt<n-1){
            cnt++;int v;double MAX=0;//每次找序列中最大的进行合并 
            for(int i=1;i<=n;i++)
                if(val[i]>MAX&&i!=r)
                    MAX=val[i],v=i;
            for(int i=1;i<=n;i++)
                if(fa[i]==v)
                    fa[i]=fa[v];//合并之后要更新当前点的子节点的fa 
            ans+=sum[v]*tim[fa[v]];val[v]=0;//tim[fa[v]]就是当前子序列中当前点前面有多少个点 
            tim[fa[v]]+=tim[v];sum[fa[v]]+=sum[v],val[fa[v]]=(double)sum[fa[v]]/(double)tim[fa[v]];
        }
        cout<<ans<<endl;
    }
    return 0;
}

by >_< NeighThorn

海康威视工业相机网络配置实战:从MVS软件操作到IP地址规划 本文详细介绍了海康威视工业相机的网络配置实战,从MVS软件操作到IP地址规划。重点讲解了IP设置的重要性、Windows系统下的网络配置步骤、避免IP冲突的技巧,以及MVS软件中的相机IP配置方法。帮助用户快速掌握工业相机的网络连接技术,确保稳定高效的图像采集。 阅读详情

相关推荐

宏基因组分析|从Binning到MAG优化的全流程实战指南

本文提供了一份宏基因组分析从Binning到MAG优化的全流程实战指南。详细解析了宏基因组分箱(Binning)的核心原理与必要性,并手把手指导如何利用Bowtie2、MetaBAT2和CheckM等工具构建分箱流水线,进行质量评估与筛选,最终获得高质量宏基因组组装基因组(MAG)。文章还分享了常见问题排查与进阶优化策略,为后续物种分类、功能注释等深度分析奠定坚实基础。

weixin_29260291的博客 451

poj解题报告——2054

处理思路:利用贪心思想,每次取权值最大的节点,不断的将权值最大节点与它的父节点合并。         过程:        1、初始时将序列中的time[i]都置为1,w[i]置为c[i];        2、查找最大的w[i], 返回其位置;        3、将该位置的c[ ]与它的父节点c[ ]合并(合并过程就是C_i / T_i,C_i = c[该节点] + c[父节点],T_i

Lingfu74的专栏 700

golang 线上事故

golang 线上事故 最近公司要做大促的一些活动。并且单量,qps持续上涨。之前使用的是django python 语言做的一个服务端。目前已经部署的国家里面最多的国家会有300+个实例。大促期间还可能会增加一个实例数。这么多的实例部署,回滚的时间都会特变长,除了问题也不好定位。并且如此多的一个机器,连接数* 实例数也会导致DB等其他服务扛不住这么大的并发。所以决定上go服务解决性能问题。 ...

lcf枫的博客 1537

POJ 2054 谜一样的贪心 TAT

题意:给一个树形图(边为有向边的树),每个节点有一个权值Ci,要求给每个节点染色,要求是如果想对一个节点染色,那么必须保证它的父节点已经被染过色。求一个最小的染色代价,每个节点的代价是ki*Ci,ki代表在整个图中,节点i是第ki个被染色的。 // 如果想直接看AC思路,请跳过接下来这几段,并忽略第一份代码  T^T~ -----------------------------

Sky 1269

2021-8-14 EDK II编译

2021-8-14 EDK II 编译为什么要写这篇文章新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 为什么要写这篇文章 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdo

qq_45775660的博客 2946

【视线追踪】视线追踪的性能评估框架 及 基础知识

文章目录一、 前言二、 眼球追踪基础1. 眼动类型研究2. 基本设备3. 校准 calibration4. 眼球视线和头部姿态的关系5. 视线追踪精确度的评估三、 视线估计算法1. 基于2维回归2. 基于3D模型1) 单摄像头2) 多摄像头3. 基于交叉比4. 基于外观5. 基于眼睛形状的方法四、 实现估计的应用1. 电脑2. 电视3. 头戴设备4. 汽车5. 手持设备6. 设备配置五、 视线追踪的性能指标和错误原因1. 不同平台之间差异性很大2. 影响视线追踪可用性的因素六、 视线追踪系统的性能评估框架1

火火的博客 5307

POJ-2054 Color a Tree

Bob对树十分感兴趣。树是一种有向图,其中有一个特殊的节点被称为树的“根”。并且“根”与任意节点之间的可达路径是唯一的。Bob想要给树的所有节点进行上色。一颗树拥有N个节点,这些节点编号为1,2,....,N。假设Bob为一个节点上色需要1个单元时间,并且Bob上色的操作是逐个进行的,完成一个节点的上色后,可以为另一个节点上色。,每一个节点被上色之前,其父节点已被上色。显而易见的,Bob的一次尝试有且只能对“根”节点进行操作。每一个节点拥。“上色成本”依赖于编号i个节点的权值和其完成的时间。

qq_73643549的博客 385

大疆mini 3 pro rtmp推流(带屏遥控器不支持)windows

大疆mini 3 pro无人机rtmp推流(带屏遥控器不支持)至windows电脑

xbsigeibwkouvfcj的博客 3429

[POJ2054]Color a Tree (并查集+贪心)

POJ终于修好啦 题意 和UVA1205是同一题,在洛谷上是紫题 有一棵树,需要给其所有节点染色,每个点染色所需的时间是一样的都是11.给每个点染色,还有一个开销“当前时间×ci×ci”,cici是每个节点的一个权值。(当前时间是染完这个节点的时间) 染色还有另一个约束条件,要染一个点必须要先染好其父节点,所以第一个染的点是根节点. 求最小开销。 思路 这道题显然对于 ...

diejia6473的博客 505

SAP UI5 SimpleForm 的本质、布局选择与工程化用法:从 API 到 Fiori 规范的完整解析

SimpleForm的价值在于让开发者以“语义顺序”来思考表单:分组—行—字段,由此把更多精力放在表单信息架构与Fiori规范的落地上。当你理解了开分组、Label开新行、的断点与比例、的对齐特性、editable与的真实含义,就能据此为每个页面挑选合适的布局与参数,构建既合规又具备高可读性的企业级表单。新分组、Label新行、其他控件归当前行。SAP的断点、比例与的要点来自Fiori设计文档。SAP的适用性来自样例与课程的推荐,列表类控件不应作为其行内容。某些旧属性仅在生效,应避免误用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 298

【Unity】Gif图片播放插件(支持UI及模型纹理渲染两种模式)

unity本身不支持GIF格式文件直接渲染, 因此一般的做法是通过加载图片,通过代码控制其循环播放、停止等,模拟动画效果,本文简单介绍一下某个现有开源工具,感谢开源作者。

灵境引路人 4036

POJ 2054---Color a Tree

题目链接:poj2054 很好的一道贪心题,是边计算边贪心,此外,理解思路是难点一,实现是难点二,可以说思路和实现都很需清晰的头脑。 #include using namespace std; /*** 好题!discuz上有N=1000的数据, 思路是一下两点: 1.在未访问的node中,权重最大的点应该在访问它的父亲后马上访问,依此进行点的合并; 2.合并后点的权重相当于其所包含原

mandycool的专栏 732

基于机器学习的电视剧类型点击量数据分析研究

1. 背景介绍 1.1 流媒体平台的兴起与电视剧市场的繁荣 近年来,随着互联网技术的飞速发展,流媒体平台如Netflix、Disney+、腾讯视频等迅速崛起,成为人们观看影视内容的主要渠道。电视剧作为流媒体平台上的重要内容类型,其点击量数据蕴含着丰富的用户偏好和市场趋势信息。

AI天才研究院 1049

POJ 2054 Color a Tree (贪心)

$ POJ~2054~Color~a~Tree $ $ solution: $ 我们先从题中抽取信息,因为每个点的费用和染色的次数有关,所以我们可以很自然的想到先给权值大的节点染色。但是题目还说每个节点染色前它的父亲节点也必须被染色,这就有了很多的后效性。 暂时没有办法贪心,我们就只能再找找性质。博主首先想到的是从叶子节点考虑,叶子节点里权值最小的一定最后染色。但是经过自我hack...

weixin_30563319的博客 111

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

POJ2054 Color a Tree 贪心

题目链接 http://poj.org/problem?id=2054 分析 树中权值最大的点会在其父亲被染色后立即被染,因此可以合并点。 设 xxx 是 yyy 的父亲,zzz 是另外一点,当前时间为 aaa,则不同方案代价分别为 a×x+(a+1)×y+(a+2)×za \times x + (a + 1) \times y + (a + 2) \times za×x+(a+1)×y+(a+2...

Kevin的博客 258

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

POJ2054 Color a Tree(贪心)

POJ传送门 【题目分析】 这是什么神仙贪心。。。。。。 首先可以得到一个比较明显的性质,对于当前树中的最大点,在它的父亲被染色后一定会染它。 那么对于染色序列中的三个点x,y,z,如果已知x,y是连续染色,那么就有两种情况: 1)染色序列为x,y,z,代价为x+2y+3z 2)染色序列为z,x,y,代价为z+2x+3y 然后就是一个神仙操作,两边加上(z-y)再同时除以2,得到两个...

Michael_GLF的博客 362

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

poj 2054 Color a Tree 据说是贪心

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 color all the no

Lionel 1940

几道贪心题目 POJ1328 radar installation POJ2054 color a tree

POJ1328 radar installation 题目描述简单,阅读无障碍。用贪心求解。 贪心很容易迷惑人,一不小心就贪错了。我刚开始的想法。 1、对所有的岛,按x坐标从小到大排序 2、沿x轴从左向右开始,找到第一个还没有被覆盖的岛。以该岛为圆心、雷达覆盖范围d为半径

sj13051180的专栏 2989

color a tree【hdu1055】【POJ2054】贪心

POJ链接 hdu链接 Color a TreeProblem Description 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,

function2的博客 766

POJ - 2054 Color a Tree【贪心】

【题目描述】 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 roo...

inv0ker的博客 247

POJ - 2054 Color a Tree 贪心

题目描述 给定n个点 给出他们的权值, 并且给出他们的父子关系 现在给他们染色, 一个节点染色的消耗为 T*a[i], T为这个节点是第几次染色 a[i]为权值 根节点可以随时染色 问: 染色完需要全部节点的最小消耗 样例 Sample Input 5 1 1 2 1 2 4 1 2 1 3 2 4 3 5 0 0 Sample Output 33 思路 x 和 y 是父子关系 其他节点c...

正月看雪花的博客 206

poj2054-color a tree(贪心)

一个错误结论:尽量让权值最大的先被选走。 而我们可以很容易的构造出一个反例(不赘述了) 但由这个错误的结论,我们可以得到一个正确的结论:对于当前权值最大的点,一定在他父亲被染过色后第一个被染色,相当于是紧接着父亲被染色。 根据这个原则,我们可以把相邻染色的2个点都通过并查集合并成一个大的结点,得出他们的相对位置(拓扑序)然后再继续找下一个结点,这样每次合并都会少一个结点,最终只有一个结点的时...

Mmm040403的专栏 311

POJ2054Color a Tree(贪心)

Color a Tree Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8297 Accepted: 2861 Description Bob is very interested in the data structure of a tree. A tree is a directed graph ...

indiewar's blogs(wust_lzl) 580

POJ 2054 贪心 !!! Color a Tree

http://poj.org/problem?id=2054 题意:给出n个节点和r根节点 给这些节点涂色,除根节点外每个节点都有一个父节点(and there is a unique path from the root to each of the other nodes.),每涂一个节点花费一个单位时间,涂子节点;每个节点都有权值ci, 涂完一个节点后花费的时间ti,那么该节点的...

weixin_30338743的博客 128

poj 2054 Color a Tree (贪心)

题目意思: 一棵树,每个节点都有 权重值 c[i], 依次给各个节点染色,只能先染父亲节点,再染孩子节点。每一秒钟染一个节点。定义 染色的代价为, 所有节点的 c[i] * T[i] 和(T[i] 表示染第i节点的时间)。 求出,最小的代价。 1、贪心的证明: 树中,除了根节点外,2权值最大的点,一定会在父亲节点被染色之后,马上染色 2、假如有 x, y, z 三个节点,x 和y是连续操作, 先x, y,后z ==> 代价 x + 2y + 3z 先z后xy, 代价 z + 2x + 3y 相减,等到

qq_38232157的博客 197

poj 2054 Color a Tree 贪心

//poj 2054 //sep9 #include using namespace std; const int MAXN=1024; int n,root,e_cnt; int vis[MAXN],num[MAXN],c[MAXN],prev[MAXN]; int head[MAXN],adj[MAXN],next[MAXN]; int find_root() { double maxx

sepNINE的专栏 656
上一篇: UOJ#37.【清华集训2014】主旋律 状压DP
下一篇: POJ 2185 Milking Grid next数组
NeighThorn
博客等级 码龄11年 20粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值