热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CF1363ETreeShuffling(贪心+树上乱搞)

对于一些不符合的点来说,肯定是被他的父节点上权值最小的点转换最好。首先我们先排除不可能情况也就是01不等之后发现,交换完两个数后,0不符合的和1不符合的个数各自-1,因此不会影响其

对于一些不符合的点来说,肯定是被他的父节点上权值最小的点转换最好。

首先我们先排除不可能情况也就是01不等

之后发现,交换完两个数后,0不符合的和1不符合的个数各自-1,因此不会影响其他交换

因此我们维护一个最小值,表示父亲节点的最小值,如果这个值比当前节点小,那么显然在子树内部交换更好

之后只要dfs维护一下需要交换的01个数就好


技术图片技术图片

#include
using namespace std;
const int N=4e5+10;
typedef
long long ll;
int h[N],ne[N],e[N],idx;
ll a[N],b[N],c[N];
int cnt0[N],cnt1[N];
ll res;
void add(int a,int b){
e[idx]
=b,ne[idx]=h[a],h[a]=idx++;
}
void dfs(int u,int fa,ll tmp){
ll mi
=min(tmp,a[u]);
int i;
for(i=h[u];i!=-1;i=ne[i]){
int j=e[i];
if(j==fa)
continue;
dfs(j,u,mi);
cnt0[u]
+=cnt0[j];
cnt1[u]
+=cnt1[j];
}
if(b[u]!=c[u]){
if(b[u]==1)
cnt1[u]
++;
else{
cnt0[u]
++;
}
}
int x=min(cnt1[u],cnt0[u]);
if(mi==a[u]){
cnt1[u]
-=x;
cnt0[u]
-=x;
res
+=2*x*a[u];
}
}
int main(){
int n;
cin
>>n;
memset(h,
-1,sizeof h);
int i;
int tmp1=0,tmp2=0;
for(i=1;i<=n;i++){
scanf(
"%lld%lld%lld",&a[i],&b[i],&c[i]);
if(b[i])
tmp1
++;
if(c[i])
tmp2
++;
}
for(i=1;i){
int u,v;
scanf(
"%d%d",&u,&v);
add(u,v);
add(v,u);
}
if(tmp1!=tmp2){
cout
<<"-1"<<endl;
}
else{
dfs(
1,-1,a[1]);
cout
<endl;
}
}


View Code

 

CF1363E Tree Shuffling(贪心+树上乱搞)



推荐阅读
  • mysql在BTree上创建伪哈希索引
    构建哈希的过程select过程长字符串下,构建索引可通过自定义哈希作为索引,本人通过实验,在3百多个数据记录的下,性能效果很明显,完全不是一个等级.以下为索引前后几种情况对比在哈希 ... [详细]
  • 实验六提交版
    1.21.3part2共用体与结构体类型的区别?答:共用体与结构体的区别在于它们的表示方法不同。结构体内,结构体的各成员顺序排列存储,每个成员都有自己独立的存储位置,而共用体的情况 ... [详细]
  • 如何绘制直观易懂的时标网络图
    时标网络图是用活动的定位和长度表示活动历时的项目网络图。是含网络逻辑的横道图,并且是任何以工作位置和长度代表其持续时间的项目网络图。项目经理圈子在时标网络图中,以实箭线表示工作,实 ... [详细]
  • D-War(8.4.3)CrawlinginprocessCrawlingfailedTimeLimit:3000MS    MemoryLimit:0KB  ... [详细]
  • php黄色波浪线什么意思?
    导读:今天编程笔记来给各位分享关于php黄色波浪线什么意思的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
  • 1:在Ubuntu中使用“apt-getinstall+app”命令可以在线安装绝大部分软件包,在高版本的Ubuntu中,apt-get可以简写为apt。2:sudo命令表示临时切 ... [详细]
  • ICE(InternetCommunicationsEngine)是一个为现实中程序员而写的中间件平台。作为一个高性能的互联网通信平台,ICE包含了很多分层的服务和插 ... [详细]
  • Windows 10 更新后VMware Workstation pro无法运行 (无需卸载原版本VM)
    Windows10-1903更新后VMwareWorkstationpro15.0.4无法运行(无需卸载原版本VM和卸载Wind ... [详细]
  • 网络Cisco考试
    二、操作题(共80分)请将以下拓扑实验配置完毕,保存拓扑,建立一个文本文档,按照交换机-路由器1234的顺序,将每台设备的showrunning-config复制粘贴出来,将文本文 ... [详细]
  • 虚拟机需要关闭bcdeditsethypervisorlaunchtypeoffdocker需要开启bcdeditsethypervisorlauncht ... [详细]
  • 1、androidping和netstat可以通过Runtime.getRuntime().exec(cmd)执行。跟windows的命令相似,可以直接参考windows下的对应的 ... [详细]
  • 将自定义右键菜单的一些属性和方法归纳到AddRightMenu.as,通过实例化此类,调用相关方法即可测试!1package2{3importflash.display.Sprit ... [详细]
  • SparkMLlib提供了一些基本的统计学的算法,下面主要说明一下:1、Summarystatistics对于RDD[Vector]类型,SparkMLlib提供了colStats ... [详细]
  • df du命令 查看磁盘大小
    1.df命令查看文件系统使用情况。最常用的命令就是df-h其他选项:a:列出所有的文件系统,包括系统特有的/proc等系统文件 k:以KB的容量显示 m:以MB的容量显示文件系统  ... [详细]
  • 一直以为,情商很重要,要注意提高自己的情商,注意学习为人处世,“世事洞明皆学问”。时间久了,反而觉得,也许情商并没有想象中的那么重要。有时候,决定一个人的层次,并不是靠情商,而是靠 ... [详细]
author-avatar
1986欠我一个拥抱_567
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有