HDU6035 2017多校第一场1003 树形DP
来源:互联网 发布:芭蕾练功服推荐 知乎 编辑:程序博客网 时间:2024/06/08 03:40
参考:Bahuia的博客
重点在于理清子树的层次关系,对于单个点进行逐子树更新时的转移
#pragma comment(linker, "/STACK:1024000000,1024000000") #include<bits/stdc++.h>#include<stdio.h>#include<algorithm>#include<queue>#include<string.h>#include<iostream>#include<math.h>#include<set>#include<map>#include<vector>#include<iomanip>using namespace std;#define ll long long#define pb push_back#define FOR(a) for(int i=1;i<=a;i++)const int maxn=2e5+7;int vis[maxn];int color[maxn];int siz[maxn];ll sum[maxn];//遍历到当前位置,颜色为x的最高一批节点为根的子树大小vector<int>G[maxn];ll ans;ll dfs(int u,int fa){siz[u]=1;ll allson=0;int sz=G[u].size();for(int i=0;i<sz;i++){int v=G[u][i];if(v==fa)continue;ll pre=sum[color[u]];//递归前的sum值siz[u]+=dfs(v,u);ll add=sum[color[u]]-pre;//新链上的块大小ans+=(siz[v]-add)*(siz[v]-add-1)/2;allson+=siz[v]-add;//记录儿子节点v组成的连通块大小}sum[color[u]]+=allson+1;return siz[u];}int main(){int n,kase=0;while(~scanf("%d",&n)){memset(vis,0,sizeof vis);memset(sum,0,sizeof sum);int cnt=0;for(int i=1;i<=n;i++){scanf("%d",&color[i]);if(!vis[color[i]])cnt++;vis[color[i]]=1;G[i].clear();}for(int i=1;i<n;i++){int u,v;scanf("%d%d",&u,&v);G[u].pb(v);G[v].pb(u);}printf("Case #%d: ",++kase);if(cnt==1){printf("%lld\n",1ll*n*(n-1)/2);continue;}ans=0;dfs(1,-1);for(int i=1;i<=n;i++){if(!vis[i])continue;ans+=(n-sum[i])*(n-sum[i]-1ll)/2ll;}printf("%lld\n",1ll*n*(n-1)/2ll*cnt-ans);}}
阅读全文
0 0
- HDU6035 2017多校第一场1003 树形DP
- 【dp】树形dp真好玩,hdu6035多校第一场的 colorful tree
- hdu6035树形dp
- HDU6035 Colorful Tree(树形dp)
- HDU 6035(2017多校第一场)。color tree (树形dp)
- 【2017多校】HDU6035 Colorful Tree 【听说是树形DP】
- hdu6035-树形dp-2017多校(2)&难-Colorful Tree
- 【HDU6035】Colorful Tree(dfs,树形dp)
- 多校第一场 1006 hdu 5293 Tree chain problem(离线LCA+时间戳+树形dp)
- hdu 5293 Tree chain problem(15多校第一场1006)(树形dp+树状数组+LCA)
- 2017河南省多校第一场-F(状压DP)
- HDU6035-Colorful Tree 补集思想+树形DP
- hdu 4616 经典树形dp 多校第二场
- 多校第一场 1003
- 多校第一场:hdu(4301)dp
- 多校第一场——hdu4604——dp
- hdu 4870 Rating 多校第一场 概率dp
- 多校第一场 1010(HDU4870) rating---DP
- ZM-Net: Real-time Zero-shot Image Manipulation Network 论文理解
- MST (最小生成树)
- 【华为】简单错误记录
- android studio gradle
- jquery将serializeArray转为可用的json对象
- HDU6035 2017多校第一场1003 树形DP
- ubuntu 14.04安装codeblocks
- JQuery基本的知识
- VTK重切
- 一种RESTful接口的约定
- Tip9 习惯重载运算符
- 团队git使用指南
- Codeforces 835C Star sky【思维+暴力预处理二维前缀和】
- Leetcode 600 Non-negative Integers without Consecutive Ones