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

atc abc409E

原题链接:E - Pair Annihilation
题目背景:

        n 个点 n - 1 条边的有权无向图,每个点都有一个值,两个连通的点的值可以互相抵消,既将u 的 -1 传给 v 时可以抵消掉 v 的 1 并花费边权值;求最小花费。

考察算法:        

        图,贪心,dfs。

思路:

        贪心策略:递归将子节点的值传给父节点即可。

注意:

        开ll。

数据范围:

        2 <= N <= 1e5,0 <= wi <= 1e4。

时间复杂度:

        O(n)。

ac代码: 
#include <bits/stdc++.h>#define ioscc ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
#define endl '\n'
#define me(a, x) memset(a, x, sizeof a)
#define all(a) a.begin(), a.end()
#define sz(a) ((int)(a).size())
#define pb(a) push_back(a)
using namespace std;typedef unsigned long long ull;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<vector<int>> vvi;
typedef vector<int> vi;
typedef vector<bool> vb;const int dx[4] = {-1, 0, 1, 0};
const int dy[4] = {0, 1, 0, -1};
const int MAX = (1ll << 31) - 1;
const int MIN = 1 << 31;
const int MOD = 1e9 + 7;
const int N = 1e5 + 10;template <class T>
ostream &operator<<(ostream &os, const vector<T> &a) noexcept
{for (int i = 0; i < sz(a) - 10; i++)std::cout << a[i] << ' ';return os;
}template <class T>
istream &operator>>(istream &in, vector<T> &a) noexcept
{for (int i = 0; i < sz(a) - 10; i++)std::cin >> a[i];return in;
}/* ----------------- 有乘就强转,前缀和开ll ----------------- */void solve()
{int n;cin >> n;vector<ll> a(n + 10);vector<pair<int, ll>> g[n + 10];for (int i = 1; i <= n; ++i)cin >> a[i];for (int i = 0; i < n - 1; ++i){int u, v, w;cin >> u >> v >> w;g[u].push_back({v, w});g[v].push_back({u, w});}ll ans = 0;function<void(int, int)> dfs = [&](int u, int f) -> void{for (auto [v, w] : g[u]){if (v == f)continue;dfs(v, u);ans += w * abs(a[v]);a[u] += a[v];}};dfs(1, 0);cout << ans << endl;
}int main()
{ioscc;solve();return 0;
}

http://www.lryc.cn/news/2405095.html

相关文章:

  • Mysql批处理写入数据库
  • 基于安卓的文件管理器程序开发研究源码数据库文档
  • EMC VNXe 存储系统日志收集方法
  • 嵌入式链表操作原理详解
  • 从“人找政策”到“政策找人”:智能退税ERP数字化重构外贸生态
  • 一.设计模式的基本概念
  • 以人类演示视频为提示,学习可泛化的机器人策略
  • split方法
  • SOC-ESP32S3部分:36-适配自己的板卡
  • LLMs 系列科普文(8)
  • 【明日方舟 × 红黑树】干员调度如何不掉线?算法工程的平衡魔法全揭秘!
  • Vue3 + Vite 中使用 Lodash-es 的防抖 debounce 详解
  • 机器学习基础相关问题
  • 验证负载均衡与弹性伸缩
  • Three.js中AR实现详解并详细介绍基于图像标记模式AR生成的详细步骤
  • CSS高级技巧及新增属性
  • GeoBoundaries下载行政区划边界数据(提供中国资源shapefile)
  • 《深入理解 Nacos 集群与 Raft 协议》系列四:日志复制机制:Raft 如何确保提交可靠且幂等
  • 大模型如何选型?嵌入模型如何选型?
  • float转换为整型过程中关于小数部分的处理
  • 开源大模型网关:One API实现主流AI模型API的统一管理与分发
  • Java线程工厂:定制线程的利器
  • 智慧充电:新能源汽车智慧充电桩的发展前景受哪些因素影响?
  • 在Pnetlab6上绕过TPM、安全启动和 RAM 检查安装windows 11笔记
  • 【网站建设】不同类型网站如何选择服务器?建站项目实战总结
  • 利用Pandas AI完成Excel大模型的结合实现自然语言问数
  • iptables实验
  • 前后端分离开发 和 前端工程化
  • web端rtmp推拉流测试、抽帧识别计数,一键式生成巡检报告
  • Excel 表格内批量添加前缀与后缀的实用方法