当前位置: 首页 > 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;
}
http://www.lryc.cn/news/465657.html

相关文章:

  • HCIE-Datacom题库_11_IPsecVPN【17道题】
  • Dongle Sentinal在Jenkins下访问不了的问题
  • X射线衍射(X-ray Diffraction,XRD)小白版
  • Nordic 定时器系统app timer[获取时间戳]
  • 【Linux】实验:mkdir 命令 、 tee 命令
  • asp.net core mvc发布时输出视图文件Views
  • 服务器模块测试
  • ATTCK 框架讲解
  • ADC在STM32F1系列的使用详解
  • 网络空间安全之一个WH的超前沿全栈技术深入学习之路(一:渗透测试行业术语扫盲)作者——LJS
  • 中间件-概念
  • vscode离线状态ssh连接不断输入密码登不上:配置commit_id
  • Vim使用与进阶
  • python中frida的安装+frida-server(雷电模拟器)保姆级安装教程
  • Java线程安全集合之COW
  • 智能汽车制造:海康NVR管理平台/工具EasyNVR多品牌NVR管理工具/设备实现无插件视频监控直播方案
  • [渗透]前端源码Chrome浏览器修改并运行
  • SAP揭秘者-怎么查看SAP 版本及S4 HANA的版本
  • UE4 材质学习笔记13(格斯特纳波)
  • 简述 C# 二维数据集合 List 的创建、遍历、修改、输出
  • ps2024 一键安装教程 永久使用!
  • ScrollView 真机微信小程序无法隐藏滚动条
  • 【日志】编辑器开发——修复根据Excel表格数据生成Json文件和配置表代码报错
  • C#线性查找算法
  • GPT+Python)近红外光谱数据分析与定性/定量建模技巧
  • Spark动态资源释放机制 详解
  • 基于径向基神经网络(RBF)的构网型VSG自适应惯量控制MATLAB仿真模型
  • 简单汇编教程9 字符串与字符串指令
  • Taro构建的H5页面路由切换返回上一页存在白屏页面过渡
  • 【学习笔记】网络设备(华为交换机)基础知识 9 —— 堆叠配置