Educational Codeforces Round 67 E.Tree Painting (树形dp)
题目链接
题意:给你一棵无根树,每次你可以选择一个点从白点变成黑点(除第一个点外别的点都要和黑点相邻),变成黑点后可以获得一个权值(白点组成连通块的大小) 问怎么使权值最大
思路:首先,一但根确定了,整棵树的权值就只需要模拟即可,所以思路就转换为求哪一个点为根的权值最大。
这题需要用到一个二次扫描换根的思想,我们可以先从任意一个点去进行树形dp 并且得到从这个点开始去逐渐更新他的儿子节点
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<vector> #include<stack> #include<bitset> #include<cstdlib> #include<cmath> #include<set> #include<list> #include<deque> #include<map> #include<queue> #define ll long long int using namespace std; inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;} inline ll lcm(ll a,ll b){return a/gcd(a,b)*b;} int moth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int dir[4][2]={1,0 ,0,1 ,-1,0 ,0,-1}; int dirs[8][2]={1,0 ,0,1 ,-1,0 ,0,-1, -1,-1 ,-1,1 ,1,-1 ,1,1}; const int inf=0x3f3f3f3f; const ll mod=1e9+7; int n; vector<int> G[200007]; ll dp[200007]; //表示i节点以下的所有贡献 ll f[200007]; //以i为根的权值 ll nump[200007]; //儿子节点数(包含自己) void dfs(int u,int fa){nump[u]=1;for(int i=0;i<G[u].size();i++){int v=G[u][i];if(v==fa) continue;dfs(v,u);nump[u]+=nump[v];} } void dfss(int u,int fa){for(int i=0;i<G[u].size();i++){int v=G[u][i];if(v==fa) continue;dfss(v,u);dp[u]+=dp[v];}dp[u]+=nump[u]; } void change(int u,int fa){for(int i=0;i<G[u].size();i++){int v=G[u][i];if(v==fa) continue;f[v]=f[u]-nump[v]-dp[v]+n-nump[v]+dp[v]; //核心代码change(v,u);} } int main(){ios::sync_with_stdio(false);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);}dfs(1,0); dfss(1,0);f[1]=dp[1];change(1,0);ll ans=0;for(int i=1;i<=n;i++){ans=max(ans,f[i]);}cout<<ans<<"\n";return 0; }
转载于:https://www.cnblogs.com/wmj6/p/11125918.html
Educational Codeforces Round 67 E.Tree Painting (树形dp)相关推荐
- Educational Codeforces Round 25 G. Tree Queries
题目链接:Educational Codeforces Round 25 G. Tree Queries 题意: 给你一棵树,一开始所有的点全是黑色,有两种操作. 1 x 将x这个点变为黑色,保证第一 ...
- Educational Codeforces Round 67 (Rated for Div. 2)(D思维题 线段树/E树形dp(换根dp) 二次扫描与换根法)
心得 D写了个假算法被hack了wtcl- E据涛神说是二次扫描与换根法,看了看好像和树形dp差不多 F概率dp G费用流 回头再补 思路来源 马老师 归神 贤神等代码 http://www.mami ...
- Educational Codeforces Round 67小结
已AC:C,D,E,F 很喜欢这场比赛的题目风格.而且也不难. C.Vasya And Array 题目大意: 给你mmm条两类限制:区间[L,R][L,R][L,R]单调非降 / 区间[L,R][L ...
- Educational Codeforces Round 8 D. Magic Numbers 数位DP
D. Magic Numbers 题目连接: http://www.codeforces.com/contest/628/problem/D Description Consider the deci ...
- CodeForces 771C Bear and Tree Jumps 树形DP
题意: 给出一棵树,一个人可以在树上跳,每次最多跳\(k(1 \leq k \leq 5)\)个点 定义\(f(s,t)\)为从顶点\(s\)跳到顶点\(t\)最少需要跳多少次 求\(\sum\lim ...
- C. Robot in a Hallway Educational Codeforces Round 133 (Rated for Div. 2)dp
dp问题 There is a grid, consisting of 22 rows and mm columns. The rows are numbered from 11 to 22 from ...
- Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...
- Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)
Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...
- Educational Codeforces Round 73 (Rated for Div. 2) F. Choose a Square 线段树 + 二维转一维
传送门 文章目录 题意: 思路: 题意: 给你nnn个点(xi,yi)(x_i,y_i)(xi,yi),每个点有个价值cic_ici,现在你可以框一个正方形,要求左下角和右上角的坐标(x,y)( ...
- Educational Codeforces Round 54 (Rated for Div.2)
Educational Codeforces Round 54 (Rated for Div.2) D. Edge Deletion 题意:一张n个点的无向图,保留其中k条边,使得有尽可能多的点与1的 ...
最新文章
- jquery textSlider 文字滚动
- 浅析网站开发的未来前景如何?
- java--遍历自定义数组
- Linux的secureCRT设置字体大小
- Django之ORM操作
- nssl1522-简单数数题【dp】
- lambda表达式优化反射_反射选择器表达式
- Gartner:PaaS 和平台架构领域的 4 大趋势 | 技术头条
- 闪退mac_幕布闪退怎么办?别着急看这里
- 一个开源的ORM框架——Light.Data
- VUE 注册验证码页面实例
- 14_按类别分页展示商品
- VVC/JEM代码学习17:xCheckRDCostMerge2Nx2NFRUC
- YUI 3 Cookbook 中文版
- SAR图像变化检测的评价指标
- 题解 [CF1682D] Circular Spanning Tree
- MySQL安装出现的问题
- 销售人员的月工资数量(月工资=基本工资+提成,提成=商品数*1.5)
- 阿里云ECS最新的实例规格族有哪些
- 泛微齐业成,一文告诉你如何实现全程数字化的预算管理
热门文章
- 简单解析三种JAVA调用方式-同步,异步,回调
- 【暴力搜索】[HDU 1016]Prime Ring Problem
- C++中的explicit关键字 - 抑制隐式转换(转)
- 不使用服务器控件的ASP.NET
- 手贱拆笔记本清灰记录
- Android客户端和服务器端数据交互的第三种方法
- VS2013打开项目出现未找到与约束contractname 匹配的导出的错误
- python3闭包通俗解释_python通俗解说闭包
- flask pyecharts_利用 Flask 动态展示 Pyecharts 图表数据的几种方法
- 自己配置外接屏幕和驱动,最终通过hdmi连接