首页 > 其他分享 >CF1187E sol

CF1187E sol

时间:2024-09-13 21:28:30浏览次数:1  
标签:sz int sum sol son fa CF1187E 为根

首先不难发现,确定了根以后答案是固定的。

设 \(sz_i\) 表示以 1 为根的树中,以 1 为根的子树大小;\(f_i\) 表示以 1 为根的树中,以 \(i\) 为根的子树得到的最大权值,可以得到转移

\[f_u = sz_u + \sum_{v \in son_u} f_v \]

然后设 \(g_v\) 表示先选 \(v\) 的最大权值,\(v\) 的父亲为 \(u\)。

\[g_1 = f_1 \]

\[g_j = n + (n - sz_j) + \sum_{v \in j} f_v + \sum_{v \in son_i | v \neq j} f_v \]

\[g_j = 2n - sz_j + f_j - sz_j + \sum_{v \in son_i | v \neq j} f_v \]

\[g_j = 2n - 2sz_j + \sum_{v \in son_i} f_v \]

\[g_j = f_i + n - 2sz_j \]

dp 即可。

#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N = 1e6 + 7;
vector<int> g[N];
int sz[N], ans[N];
int f[N], ff[N];
int n;
void dfs1(int u, int fa) {
    sz[u] = 1;
    for(int v : g[u]) {
        if(v == fa) continue;
        dfs1(v, u);
        sz[u] += sz[v];
        f[u] += f[v];
    }
    f[u] += sz[u];
}
void dfs2(int u, int fa) {
    for(int v : g[u]) {
        if(v == fa) continue;
        ff[v] = n + ff[u] - 2 * sz[v];
        dfs2(v, u);
    }
}
signed main() {
    
    cin >> n;
    for(int i = 1; i < n; i ++) {
        int u, v;
        cin >> u >> v;
        g[u].push_back(v), g[v].push_back(u);
    }
    
    dfs1(1, 0);
    ff[1] = f[1];
    dfs2(1, 0);
    int ans = -1;
    for(int i = 1; i <= n; i ++) ans = max(ans, ff[i]);
    cout << ans << endl;
    return 0;
}

标签:sz,int,sum,sol,son,fa,CF1187E,为根
From: https://www.cnblogs.com/wyyqwq/p/18412893

相关文章

  • solidworks案例3-20240910
    使用到的命令:扫描,薄壁特征,等距实体......
  • solidworks软件许可优化解决方案
    Solidworks软件介绍SolidWorks是达索系统(DassaultSystemes )下的子公司,专门负责研发与销售机械设计软件的视窗产品,公司总部位于美国马萨诸塞州。达索公司是负责系统性的软件供应,并为制造厂商提供具有Internet整合能力的支援服务。该集团提供涵盖整个产品生命周期的系统,包括设计......
  • 【题解】Solution Set - NOIP2024集训Day27 树形 dp
    【题解】SolutionSet-NOIP2024集训Day27树形dphttps://www.becoder.com.cn/contest/5521「HDU4661」MessagePassing「BZOJ3935」Rbtree「ARC101E」RibbonsonTree「AGC034E」CompleteCompress「COCI2014.10」Kamp「SCOI2015」小凸玩密室「AGC008F」Black......
  • SolidJS-每日小知识(9/12)
    知识介绍对SVG元素实现拖拽视图的功能代码分析对于SVG元素的viewBox属性(x,y,w,h),我们设置x,y作为信号量const[boxLocation,setboxLocation]=createSignal({x:0,y:0});添加拖拽所需的变量和事件letisDragging=false;letstartX:number;letst......
  • 在comsol中设置具有空间折射率分别的材料
    通常来说,BIC都是一个点。因此,当偏离BIC这个点时,对应的Qfactor会急剧下降。尽管最近有大量工作提出利用mergingBIC(Observationoftopologicallyenabledunidirectionalguidedresonances(2020,nature);MergingBoundStatesintheContinuumatOff-HighSymmetryPoints......
  • konsole奇怪的command bar
    WTF今天以打开konsole就发生了一件让我“高兴”的事情,我在无意间打开了konsole的一个commandbar!!!我寻思这功能挺好的,虽然我还不知道怎么触发,但是可以后面在研究嘛。然后我就开始了罪恶之旅,这个功能的触发键是esc,我一老年vim用户,你把esc抢走了这让我怎么活又折腾半天,终于我......
  • SolidJS-每日小知识(9/11)
    知识介绍对指定SVG元素实现滚轮zoom代码分析1.对指定SVG元素实现滚轮zoom设置viewBox属性{x,y,w,h}以及缩放系数scale为信号量const[scale,setScale]=createSignal(1);//初始缩放比例const[boxLocation,setboxLocation]=createSignal({x:0,y:0});......
  • solidworks卸载工具,专用卸载修复工具,一键卸载solidworks ae ai ansys arcgis catia c
    XXClean是一款专业的系统清理工具,旨在帮助用户彻底卸载和清理各种软件残留。它支持广泛的软件列表,aeaiansysArcGlSCatiaCDRCreoDaVinciMastercamMatlabMultisimofficeOriginProepsRhinoSketchupSPSSsolidworksTIAPortalUGNX软件等。以下是XXClean的简介......
  • Solidworks学习:在新建零件时总是提示「默认模板无效」的解决方案
    在我们打开Solidworks新建零件或装配体时,总是提示我们「默认模板无效」。然而,即便我们对其置之不理并继续创建,依然能够顺利完成,貌似此“默认模板无效”的提示对我们毫无影响。可若真无影响,那它又为何要显现这一提示呢?其实,这个默认模板的作用主要是新建文件的时候,让新建零件里......
  • C# Console application start wpf window via Application, Encapsulates a Windows
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Media.Imaging;namespaceConsoleApp73......