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

Codeforces Round 974 (Div. 3) F. Sheriff‘s Defense(树形DP)

题目链接

Codeforces Round 974 (Div. 3) F. Sheriff’s Defense

思路

我们定义 d p [ u ] [ 0 / 1 ] dp[u][0/1] dp[u][0/1]表示节点 u u u不选或选时,以 u u u为根的子树中,郡长能够保留的最多的黄金是多少。

状态转移方程为:

d p [ u ] [ 0 ] + = m a x ( d p [ j ] [ 0 ] , d p [ j ] [ 1 ] ) ( j ∈ s o n ( u ) ) dp[u][0] += max(dp[j][0],dp[j][1])(j \in son(u)) dp[u][0]+=max(dp[j][0],dp[j][1])(json(u))

d p [ u ] [ 1 ] = a [ u ] + ∑ j ∈ s o n ( u ) m a x ( d p [ j ] [ 0 ] , d p [ j ] [ 1 ] − c × 2 ) dp[u][1] = a[u] + \sum_{j \in son(u)} max(dp[j][0],dp[j][1] - c \times 2) dp[u][1]=a[u]+json(u)max(dp[j][0],dp[j][1]c×2)

最后的答案为: m a x ( d p [ u ] [ 0 ] , d p [ u ] [ 1 ] ) max(dp[u][0],dp[u][1]) max(dp[u][0],dp[u][1])

代码

#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> pii;
const int N = 2e5 + 5, M = 1e4 + 5;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f3f3f3f3f;int n, c, ans;
int a[N], dp[N][2];
vector<int>mp[N];
void dfs(int u, int fu)
{dp[u][1] = a[u];for (int j : mp[u]){if (j == fu) continue;dfs(j, u);dp[u][0] += max(dp[j][0], dp[j][1]);dp[u][1] += max(dp[j][0], dp[j][1] - c * 2);}
}
void solve()
{cin >> n >> c;for (int i = 1; i <= n; i++){mp[i].clear();dp[i][0] = dp[i][1] = 0;}for (int i = 1; i <= n; i++){cin >> a[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);cout << max(dp[1][0], dp[1][1]) << 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.mrgr.cn/news/56166.html

相关文章:

  • OpenR框架深度解读 - OpenAI启发的首个开源项目提升大型语言模型推理能力
  • docker-compose-lnmp-wordpress
  • 如何利用 Python抓取网页数据 其他方式抓取网页数据列举
  • 测试教程分享
  • 博客|基于springBoot的精简博客系统设计与实现(附项目源码+论文+数据库)
  • Vue前端开发2.2 数据绑定
  • 最佳简历--JAVA程序员的项目经验如何写
  • Linux 基础目录与命令操作
  • 创建型模式-----(单例模式)
  • 数据仓库-维度表和事实表
  • Linux: network: tcp:__sk_mem_raise_allocated;确保公平
  • C#第四讲:C#语言基本元素概览,初识类型、变量与方法,算法简介
  • 《SpringBoot+Vue》Chapter02_SpringBoot基础配置
  • 暴力破解+宝塔+xp_CAPTCHA+WIN2012+DVMA暴力破解+BP-PY+CMS+PY-MG+BP识别XP
  • 初探Vue前端框架
  • AtCoder Beginner Contest 376(C,E题题解)
  • 接口性能优化的11个小技巧
  • 什么是高水位线
  • MySQL 基础查询
  • 数据通路(Data Path)
  • Mybatis中 使用#和$ 需要注意的点
  • 大模型学习路径,零基础入门到精通,收藏这篇就够了
  • Aloop虚拟声卡
  • wsl2配置网络代理,访问外网
  • Qt学习笔记(二)Qt 信号与槽
  • 华为HarmonyOS实现实时语音识别转文本