当前位置: 首页 > news >正文

Codeforces Round 646 (Div. 2) E. Tree Shuffling(树,贪心)

题目链接

Codeforces Round 646 (Div. 2) E. Tree Shuffling

思路

考虑一个节点 u u u,显然它子树中的操作可以由它本身和祖先来进行。如果它的祖先有比它花费更小的,直接跳过节点 u u u

我们分别记录每一个子树中位置不对的 0 0 0 1 1 1的个数,每次操作选出较小的那一个即可。

代码

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ull unsigned long long
typedef pair<int, int> pii;
const int N = 2e5 + 5, M = 1e6 + 5;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f3f3f3f3f;int n, ans;
int a[N], b[N], c[N], cnt[N][2], dp[N];
vector<int>mp[N];
void dfs(int u, int fu)
{if (b[u] != c[u])cnt[u][b[u]]++;for (int j : mp[u]){if (j == fu) continue;dfs(j, u);cnt[u][0] += cnt[j][0], cnt[u][1] += cnt[j][1];}
}
void dfs1(int u, int fu)
{dp[u] = a[u] * min(cnt[u][0], cnt[u][1]) * 2;for (int j : mp[u]){if (j == fu) continue;dfs1(j, u);}
}
void dfs2(int u, int fu, int minn)
{if (minn > a[u]){if (minn != inf){ans -= min(cnt[u][0], cnt[u][1]) * 2 * minn;}ans += dp[u];minn = a[u];}for (int j : mp[u]){if (j == fu) continue;dfs2(j, u, minn);}
}
void solve()
{cin >> n;for (int i = 1; i <= n; i++){cin >> a[i] >> b[i] >> c[i];}for (int i = 1, u, v; i < n; i++){cin >> u >> v;mp[u].push_back(v);mp[v].push_back(u);}dfs(1, -1);if (cnt[1][0] != cnt[1][1]){cout << -1 << endl;return;}dfs1(1, -1);dfs2(1, -1, inf);cout << ans << endl;
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int test = 1;// cin >> test;for (int i = 1; i <= test; i++){solve();}return 0;
}

相关文章:

Codeforces Round 646 (Div. 2) E. Tree Shuffling(树,贪心)

题目链接 Codeforces Round 646 (Div. 2) E. Tree Shuffling 思路 考虑一个节点 u u u&#xff0c;显然它子树中的操作可以由它本身和祖先来进行。如果它的祖先有比它花费更小的&#xff0c;直接跳过节点 u u u。 我们分别记录每一个子树中位置不对的 0 0 0和 1 1 1的个数&…...

HCIE-Datacom题库_11_IPsecVPN【17道题】

一、单选题 1.IPsecSA(SecurityAssociation&#xff0c;安全联盟)有两种生成方式&#xff0c;分别是手工方式和IKE自动协商方式&#xff0c;以下关于这两种方式的描述中&#xff0c;错误的是哪一项? 手工方式和IKE方式建立的SA都支持动态刷新 IKE方式建立的SA,其生存周期由…...

Dongle Sentinal在Jenkins下访问不了的问题

背景&#xff1a; 工作站部署的jenkins的脚本无法正常打包&#xff0c;定位后发现是本地获取不了license&#xff0c;但是使用usb over network的远程license都能获取并正常打包 分析&#xff1a; 获取不了license的原因是本地无法识别dongle。根据提供信息&#xff0c;之前…...

X射线衍射(X-ray Diffraction,XRD)小白版

文章目录 实验过程原理晶体构成X射线波长diffraction 干涉效应 Braggs Law晶体间距d散射角度θ半波长λ/2公式 公式名称由来应用设备 实验过程 In the X-ray experiment , a sample is placed into the center of an instrument and illuminated with a beam of X-rays. 在X射…...

Nordic 定时器系统app timer[获取时间戳]

获取时间戳 想要在Nordic 定时器系统中获取时间戳,也就是是在调用app_timer的时候时间戳要有效,我们可以看看定时器系统初始化: ret_code_t app_timer_init(void) {ret_code_t err_code;drv_rtc_config_t config {.prescaler APP_TIMER_CONFIG_RTC_FREQUENCY,.int…...

【Linux】实验:mkdir 命令 、 tee 命令

#1024程序员节&#xff5c;征文# 1.命令说明 本文主要实验 linux 的两个命令&#xff1a;mkdir -p 路径、 tee 创建文件。 命令&#xff1a;mkdir -p 路径 说明&#xff1a;该命令将自动创建路径下的目录及子目录&#xff0c;结尾可以/ 也可以不带/&#xff0c;默认都是建文…...

asp.net core mvc发布时输出视图文件Views

var builder WebApplication.CreateBuilder(args); builder.Services.AddRazorPages();builder.Services.AddControllersWithViews(ops > {//全局异常过滤器&#xff0c;注册ops.Filters.Add<ExceptionFilter>(); })// Views视图文件输出到发布目录&#xff0c;视图文…...

服务器模块测试

目录 测试逻辑 测试工具 测试 测试逻辑 我们可以使用一个简单的业务处理逻辑来进行测试。 最简单的&#xff0c;我们业务逻辑就直接返回一个固定的字符串 void Message(const PtrConnection&con,Buffer* inbuffer) //模拟用户新数据回调 {inbuffer->MoveReadOf…...

ATTCK 框架讲解

摘要 ATT&CK框架作为MITRE公司开发的网络攻击行为知识库&#xff0c;自2015年发布以来&#xff0c;已成为信息安全领域的重要工具。该框架通过提炼和归纳真实世界中的网络威胁事件&#xff0c;以攻击者的视角构建了一套系统化的战术和技术分类体系。本文详细阐述了ATT&…...

ADC在STM32F1系列的使用详解

目录 1. ADC简介 2. 逐次逼近型ADC&#xff08;ADC0809&#xff09; 3. ADC框图&#xff08;STM32&#xff09; 4. ADC基本结构 5. 输入通道 6. 转换模式 6.1 单次转换 6.1.1 非扫描模式 6.1.2 扫描模式 6.2 连续转换 6.2.1 非扫描模式 6.2.2 扫描模式…...

网络空间安全之一个WH的超前沿全栈技术深入学习之路(一:渗透测试行业术语扫盲)作者——LJS

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现] 专栏跑道一 ➡️网络空间安全——全栈前沿技术持续深入学习 专栏跑道二➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️ MYSQL REDIS Advanc…...

中间件-概念

什么是中间件&#xff1f; 中间件&#xff08;Middleware&#xff09;是位于 Web 服务器和应用程序之间的组件&#xff0c;它可以处理每个请求和响应。中间件的主要作用是在请求到达应用程序之前或响应返回客户端之前对其进行处理。中间件可以执行各种任务&#xff0c;如日志记…...

vscode离线状态ssh连接不断输入密码登不上:配置commit_id

如题&#xff0c;vscode在一个离线服务器上&#xff0c;通过remote-ssh登录远程服务器&#xff0c;不断弹出密码框&#xff0c;总是进不去&#xff0c;后来了解到主要是不同vscode版本需要下载对应抑制commit-id的vscode-server-linux-x64.tar.gz包。 1&#xff09;vscode, 点…...

Vim使用与进阶

1. Vim 技巧 撤销 U 反撤销 Ctrl U 历史命令 history 2.要在Vim中进行多行缩进&#xff0c;可以按以下步骤操作&#xff1a; 进入Vim编辑器并进入命令模式。使用 v 键或 Shift v 键选择多行需要缩进的文本。按下 > 键进行向右缩进&#xff0c;或按下 < 键进行向左…...

python中frida的安装+frida-server(雷电模拟器)保姆级安装教程

一.安装雷电模拟器 雷电模拟器官网 直接下载安装即可 &#xff08;1&#xff09;打开必要权限 雷电模拟器的设置已完毕 二.安装adb工具 本文以autox.js来实现adb操作 &#xff08;1&#xff09;vscode中下载auto.js插件 &#xff08;2&#xff09;雷电模拟器下载autox.j…...

Java线程安全集合之COW

概述 java.util.concurrent.CopyOnWriteArrayList写时复制顺序表&#xff0c;一种采用写时复制技术&#xff08;COW&#xff09;实现的线程安全的顺序表&#xff0c;可代替java.util.ArrayList用于并发环境中。写时复制&#xff0c;在写入时&#xff0c;会复制顺序表的新副本&…...

智能汽车制造:海康NVR管理平台/工具EasyNVR多品牌NVR管理工具/设备实现无插件视频监控直播方案

一、背景介绍 近年来&#xff0c;随着网络在我国的普及和深化发展&#xff0c;企业的信息化建设不断深入&#xff0c;各行各业都加快了信息网络平台的建设&#xff0c;大多数单位已经或者正在铺设企业内部的计算机局域网。与此同时&#xff0c;网络也成为先进的新兴应用提供了…...

[渗透]前端源码Chrome浏览器修改并运行

文章目录 简述本项目所使用的代码[Fir](https://so.csdn.net/so/search?qFir&spm1001.2101.3001.7020) Cloud 完整项目 原始页面修改源码本地运行前端源码修改页面布局修改请求接口 本项目请求方式 简述 好久之前&#xff0c;就已经看到&#xff0c;_无论什么样的加密&am…...

SAP揭秘者-怎么查看SAP 版本及S4 HANA的版本

文章摘要&#xff1a; 在给客户实施SAP项目或部署SAP服务器及SAP跟外部系统集成时&#xff0c;经常客户或第三方软件公司会问SAP版本或SAP HANA的版本。那么到底怎么来看这个SAP的版本呢&#xff1f;这个问题其实很多SAP模块顾问都不知道怎么看&#xff0c;你可以想象一下&…...

UE4 材质学习笔记13(格斯特纳波)

一.格斯特纳波 要让水面动起来&#xff0c;必须要保证平面有足够的三角面。我们可以在材质里的细节面板打开曲面细分&#xff0c;可以分裂三角面且使之数量更多&#xff0c;选择“扁平曲面细分&#xff0c;其作用是切割我的三角面&#xff0c;然后给我做一大堆三角面出来。 这…...

新手避坑指南:51单片机驱动ADC0809的五个常见问题及解决方法(附Proteus调试技巧)

51单片机与ADC0809实战避坑手册&#xff1a;从仿真异常到显示优化的全流程解析 第一次在Proteus里搭建51单片机驱动ADC0809的仿真环境时&#xff0c;看着屏幕上跳动的乱码和永远为零的电压读数&#xff0c;我盯着电路图反复检查了三遍引脚连接——所有线序明明完全正确。这种挫…...

保姆级教程:用Arduino IDE给你的ESP8266写个‘网络诊断’程序,一键排查连接问题

ESP8266网络诊断工具开发实战&#xff1a;从被动排错到主动分析 当你盯着串口监视器里不断滚动的"Connecting..."字样&#xff0c;而ESP8266始终无法连上WiFi时&#xff0c;是否想过——我们本可以做得比盲目重试更聪明&#xff1f;本文将带你开发一个会"思考&q…...

开源项目配置管理:ComfyUI-Manager路径优化与跨环境部署指南

开源项目配置管理&#xff1a;ComfyUI-Manager路径优化与跨环境部署指南 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various…...

【原创改进代码】基于信息间隙决策理论的多能系统-阶梯碳交易优化调度附Python代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…...

从WPF迁移到Avalonia:开发者必须掌握的12个关键差异与实战转换指南

1. 文件格式与样式系统的根本差异 如果你是从WPF转向Avalonia的老手&#xff0c;第一个迎面而来的变化就是文件扩展名。在WPF中我们熟悉的.xaml文件&#xff0c;在Avalonia中变成了.axaml。这个小小的"a"前缀背后&#xff0c;其实隐藏着框架设计理念的重大转变。我刚…...

零基础鸿蒙应用开发第二十二节:类的继承与多态入门

【学习目标】 理解继承的核心意义&#xff0c;掌握ArkTS中extends关键字的使用规则&#xff0c;区分“单继承”特性在鸿蒙开发中的适配场景&#xff1b;掌握super关键字的核心作用&#xff08;调用父类构造函数、调用父类方法&#xff09;&#xff0c;规避继承中的常见语法错误…...

从零到上线:手把手教你调试若依(RuoYi) + 微信小程序登录的全流程(附排错清单)

若依框架与微信小程序登录集成实战指南 在当今移动互联网时代&#xff0c;微信小程序已成为企业服务用户的重要入口。本文将深入探讨如何基于若依(RuoYi)这一流行的Java快速开发框架&#xff0c;实现与微信小程序的一键登录功能集成&#xff0c;并重点解决开发过程中可能遇到的…...

TCP连接关闭的艺术:从FIN优雅挥手到RST强制终结

1. TCP连接关闭的两种核心机制 想象一下你正在和朋友通电话&#xff0c;结束通话时有礼貌地说"再见"和直接挂断有什么区别&#xff1f;这就是TCP连接关闭的FIN与RST两种方式的本质区别。作为后端工程师&#xff0c;我在处理线上服务连接异常时&#xff0c;发现90%的问…...

QMCFLAC2MP3终极指南:一键解锁QQ音乐格式限制的完整解决方案

QMCFLAC2MP3终极指南&#xff1a;一键解锁QQ音乐格式限制的完整解决方案 【免费下载链接】qmcflac2mp3 直接将qmcflac文件转换成mp3文件&#xff0c;突破QQ音乐的格式限制 项目地址: https://gitcode.com/gh_mirrors/qm/qmcflac2mp3 你是否曾经从QQ音乐下载了心爱的歌曲…...

别再死记硬背了!用‘借位法’5分钟搞定子网划分,网工面试必看

别再死记硬背了&#xff01;用‘借位法’5分钟搞定子网划分&#xff0c;网工面试必看 刚入行的网络工程师最怕什么&#xff1f;十个人里有九个会说是子网划分。那些密密麻麻的二进制数字、复杂的计算公式&#xff0c;简直像天书一样让人望而生畏。但今天我要告诉你一个秘密&…...