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

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.xdnf.cn/news/12894.html

相关文章:

  • 【Vue3】(三)vue3中的pinia状态管理、组件通信
  • Linux--vsFTP配置篇
  • HNCTF 2025 Just Ping Write-up
  • 基于安卓的文件管理器程序开发研究源码数据库文档
  • 分类数据集 - 垃圾分类数据集下载
  • 19-Oracle 23 ai Database Sharding-知识准备
  • ffmpeg(四):滤镜命令
  • C++ 搜索二叉树(BST)详解:实现与应用
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十二)
  • DeepSeek10-RAG相关模型知识说明
  • Vue入门到实战之第一篇【超基础】
  • SeaweedFS S3 Spring Boot Starter
  • 三十五、面向对象底层逻辑-Spring MVC中AbstractXlsxStreamingView的设计
  • 网络编程(TCP编程)
  • NVIC (嵌套向量中断控制器)是什么?
  • AI智能驱动浏览器工具Browser Use详解
  • 【动画】Unity2D骨骼动画-Animation2D
  • 知名的WordPress模板团队
  • 【西门子杯工业嵌入式-5-串口实现数据收发】
  • 算法打卡17天(补)
  • 03.数据类型
  • vue项目使用svg图标
  • 软件工程的软件生命周期通常分为以下主要阶段
  • 计算机网络基础总结:TCP/IP 模型、TCP vs UDP、DNS 查询过程
  • React、Git、计网、发展趋势等内容——前端面试宝典(字节、小红书和美团)
  • Vue项目PDF目录功能集成【一】——方案深度思考
  • Android 线性布局中常见的冲突属性总结
  • 在网络排错中,经常会用到的操作命令和其作用
  • 剑指offer19_链表中倒数第k个节点
  • Jmeter(四) - 如何在jmeter中创建网络测试计划