首页 > 其他分享 >Great Cow Gathering G

Great Cow Gathering G

时间:2023-08-16 21:57:00浏览次数:40  
标签:Great 子树 Cow int sum Gathering fa MaxN first

Great Cow Gathering G

思路

换根dp,Tree Distances I 强化版,同样的先思考单个的,那么对于子树 \(u\) 对于每一个儿子 \(v\) 都有:\(f_u = f_v+sum_v*w_{u, v}\) 其中 \(sum\) 是子树大小,而 \(w\) 则是边的长度,用这种方式可以求出以 1 为根的答案,然后考虑换根公式,首先要转移到的节点 \(v\) 的父亲 \(u\) 以上的所有节点的答案(可以理解为整棵树删掉子树 \(v\) 的其它所有节点)都要加上 \(u\) 到 \(v\) 的长度,然后 \(v\) 的子树的答案都要减掉一个 \(u\) 到 \(v\) 的长度,所以可以得到换根转移式子:\(f_v = f_u + (sum_1-sum_v)*w_{u,v}-sum_v*w_{u,v}\)。然后dp即可。

code

点击查看代码
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;
using ll = long long;
using P = pair<int, ll>;

const int MaxN = 1e5 + 10;

ll f[MaxN], sum[MaxN], c[MaxN], ans = 1e18, n;
vector<P> g[MaxN];

void dfs(int x, int fa) {
  sum[x] = c[x];
  for (P i : g[x]) {
    if (i.first == fa) continue;
    dfs(i.first, x);
    sum[x] += sum[i.first];
    f[x] += f[i.first] + sum[i.first] * i.second;
  }
}

void DFS(int x, int fa) {
  ans = min(ans, f[x]);
  for (P i : g[x]) {
    if (i.first == fa) continue;
    f[i.first] = f[x] + (sum[1] - sum[i.first]) * i.second - sum[i.first] * i.second;
    DFS(i.first, x);
  }
}

int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> c[i];
  }
  for (int i = 1, u, v, w; i < n; i++) {
    cin >> u >> v >> w;
    g[u].push_back({v, w});
    g[v].push_back({u, w});
  }
  dfs(1, -1);
  DFS(1, -1);
  cout << ans << endl;
  return 0;
}

标签:Great,子树,Cow,int,sum,Gathering,fa,MaxN,first
From: https://www.cnblogs.com/ybtarr/p/17636266.html

相关文章

  • 图文结合丨带你轻松玩转MySQL Shell for GreatSQL
    一、引言1.1什么是MySQLShell?MySQLShell是MySQL的一个高级客户端和代码编辑器,是第二代MySQL客户端。第一代MySQL客户端即我们常用的MySQL。除了提供类似于MySQL的SQL功能外,MySQLShell还提供JavaScript和Python脚本功能,并包括与MySQL一起使用的API。......
  • GreatSQL从单机到MGR扩展纪实
    一、前言原有的业务系统跑在MySQL主从架构中,高可用通过脚本完成,但存在切换数据丢失和切换不及时风险,调研了高可用更稳定的MGR后,准备入手一试。本篇文章主要记录GreatSQL从单机扩展到MGR的详细过程,遇到的问题及解决方法。二、基础环境服务器角色如下IP端口主机名作用......
  • 数据质量管理工具预研——Griffin VS Deequ VS Great expectations VS Qualitis
    开源数据质量管理工具预研——GriffinVSDeequVSGreatexpectationsVSQualitis。概述 数据质量监控(DQC)是最近很火的一个话题,也是数据治理中最重要的一环。有一句话说得好。数据质量未必是数据治理中最重要的一部分,但是数据质量可能是让数据治理工作全部崩盘的第一步。所以......
  • P6066 Watchcow S
    \(P6066\)\(Watchcow\)\(S\)一、题目描述\(Farmer\)\(John\)有\(N\)个农场(\(2≤N≤10^4\)),这些农场由\(M\)条道路连接(\(1\leqM\leq5\times10^4\))。不保证没有重边。\(Bassie\)从\(1\)号农场开始巡逻,每条路必须从两个方向各走恰好一遍,最后回到\(1\)号农场。请输出一......
  • 需求太多处理不过来?MoSCoW模型帮你
    一、MoSCoW模型是什么MoSCoW模型是在项目管理、软件开发中使用的一种排序优先级的方法,以便开发人员、产品经理、客户对每个需求交付的重要性达成共识。MoSCoW是一个首字母缩略词,代表:M(Musthave):必须有。这些是产品成功的关键任务功能,通常是MVP(最小可行产品)的功能,例如微信的聊天......
  • [刷题笔记] Luogu P2340 [USACO03FALL] Cow Exhibition G
    ProblemSolution乍看可能没有思路。我们注意到本题是牵扯到一头奶牛选or不选的问题,非常自然地想到01背包。接下来我们就尝试将本题背景转换成01背包问题。我们可以将智商转换成容量,情商转换成价值。(当然反过来也可)然后就可以套用01背包板子了:\[f_{i,j}=min(f_{i-1,j},f_{i-1......
  • NC106972 Cow Ski Area
    NC106972CowSkiArea一、题目\(N*M\)的滑雪场,每个点都有他的高度,滑雪的时候只能向四周相邻的不高于当前点的高度的点滑,现在滑雪场准备修建若干个缆车线路,使得奶牛可以从任意一个点运动到滑雪场的每个点,问最少需要建多少条缆车线路。二、题解本质还是有向图,通过加边使其强连......
  • P8271 [USACO22OPEN] COW Operations S 奶牛操作
    P8271[USACO22OPEN]COWOperationsS奶牛操作目录P8271[USACO22OPEN]COWOperationsS奶牛操作[USACO22OPEN]COWOperationsS题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示分析code[P8271USACO22OPEN]COWOperationsS-洛谷|计算机科学教育新生态(......
  • GreatSQL通过错误日志信息判断数据库实例是如何关闭的
    背景概述在一次客户的数据库实例连接不上了,需要我们排查一下原因,通过查看数据库实例进程已经不存在了,在错误日志中没有发现其他报错信息,发现有shutdown的字样出现,怀疑是某个用户手动关闭了实例。我们通过以下测试,发现是由于用户关闭了主机所导致的。问题复现本次测试基于GreatS......
  • 题解 P4183 [USACO18JAN] Cow at Large P
    带有小trick的点分治。建议先做完弱化版再看。假如奶牛在\(u\),那么所需的最少农夫数为\(\sum\limits_{v\inson(u)}[dis(u,v)\geg_v][dis(u,fa_v)<g_{fa_v}]\)。其中\(dis(u,v)\)为\(u,v\)在树上的距离,\(g_u\)为\(u\)到离它最近的出入口的距离(BFS预处理),\(fa_u\)......