解析

神仙题
关键在于找到一个满足题意的充要条件

结论:所有的合法答案一定是由树上一条链及其相邻的点组成的独立集

充分性比较显然,这个东西随便画画就可以构造出合法的解来
所以我们只要考虑必要性
考虑不满足这个结论的方案
可以“发现”它一定是无解的
为什么?
懒得写了
这篇博客已经“发现”的很明白了

转化完题意后的dp就比较简单了

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=5e5+100;
ll read() {ll x=0,f=1;char c=getchar();while(!isdigit(c)) {if(c=='-')f=-1;c=getchar();}while(isdigit(c)) {x=x*10+(c^48);c=getchar();}return x*f;
}
inline void Max(int &x,int y){if(x<y) x=y;}
int n,m;
struct edge{int to,nxt;
}p[N<<1];
int fi[N],cnt;
inline void addline(int x,int y){p[++cnt]=(edge){y,fi[x]};fi[x]=cnt;return;
}
int dp[N][2],du[N];
int ans(0);
void dfs(int x,int f){//dp[x][0]=du[x]-1;dp[x][1]=1;for(int i=fi[x];~i;i=p[i].nxt){int to=p[i].to;if(to==f) continue;dfs(to,x);Max(ans,dp[x][0]+max(dp[to][0],dp[to][1]));Max(ans,dp[x][1]+dp[to][0]);Max(dp[x][0],max(dp[to][1],dp[to][0])+du[x]-2);Max(dp[x][1],dp[to][0]+1);}//Max(dp[x][0],du[x]-1);Max(ans,max(dp[x][0],dp[x][1]));return;
}
int main() {#ifndef ONLINE_JUDGE//freopen("a.in","r",stdin);//freopen("a.out","w",stdout);
#endifmemset(fi,-1,sizeof(fi));cnt=-1;n=read();for(int i=1;i<n;i++){int x=read(),y=read();du[x]++;du[y]++;addline(x,y);addline(y,x);}dfs(1,0);printf("%d\n",ans);return 0;
}

CF1338D:Nested Rubber Bands(树形dp)相关推荐

  1. BNUOJ 52305 Around the World 树形dp

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...

  2. [树形dp] Jzoj P5233 概率博弈

    Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...

  3. fwt优化+树形DP HDU 5909

    1 //fwt优化+树形DP HDU 5909 2 //见官方题解 3 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ 4 5 #include ...

  4. BZOJ 1040 ZJOI2008 骑士 树形DP

    题目大意:给定一个基环树林,每一个点上有权值,要求选择一个权值和最大的点集,要求点集中的随意两个点之间不能直接相连 最大点独立集--考虑到n<=100W,网络流铁定跑不了,于是我们考虑树形DP ...

  5. POJ 3342 树形DP+Hash

    这是很久很久以前做的一道题,可惜当时WA了一页以后放弃了. 今天我又重新捡了起来.(哈哈1A了) 题意: 没有上司的舞会+判重 思路: hash一下+树形DP 题目中给的人名hash到数字,再进行运算 ...

  6. [NC15748]旅游 树形dp基础

    菜鸡第一次接触树形dp这个东西,不过这个东西还是很好理解的(可能是因为模板题吧) 个人感觉,相比线性dp,树形dp的状态转移方程更加的直观,难点主要是在"树"的结构上比较麻烦. 题 ...

  7. 容斥 + 树形dp ---- 2021 icpc 沈阳 L Perfect Matchings

    题目链接 题目大意: 就是给你一个2n2n2n个点的完全图,从这个图里面抽出2n−12n-12n−1条边,这些边形成一颗树,现在问你剩下的图里面点进行完美匹配有多少种方案? 解题思路: 一开始被完美匹 ...

  8. 树形dp ---- gym101667 A(贪心 + 树形dp + 两个dp方程组维护)

    题目链接 题目大意: 就是一棵5e35e35e3的树,可以选择一些点,放上基站,如果uuu上的基站价值为ddd,那么距离uuu小于等于ddd的点都会被覆盖,问使得整棵树被覆盖需要的最小价值. 解题思路 ...

  9. 树形dp ---- 2018年杭电多校第二场 H travel

    题目大意: 就是给你一个带点权的树,找到3条独立互不相交的路径使得权值和最大 解题思路: 很经典的树形dp 我们设dp[root][j][k]dp[root][j][k]dp[root][j][k]表 ...

最新文章

  1. 【Groovy】编译时元编程 ( 方法拦截时用到的 AST 语法树节点 MethodNode 节点 | MethodNode 节点分析 | MethodNode 节点中的BlockStatement)
  2. 解压与压缩ramdisk.img文件
  3. 面试官:你们前后端分离的接口规范是什么?
  4. 空白世界地图打印版_洪恩识字卡1300字十字帖+绘本,可打印成册
  5. linux mem cache,Linux内存:MemTotal、MemFree、MemAvailable三者区别
  6. 进程调度的时机切换与过程调度方式
  7. 页面间传值的新思路--PreviousPage
  8. 微信小程序input安卓手机获取焦点时候上移
  9. DS18B20温度传感器
  10. 手把手带你从零开始完整开发经典游戏【俄罗斯方块】,全部逻辑只用不到200行代码。
  11. UDP如何实现可靠性传输
  12. Steam项目推进 (一) ——项目情况简述
  13. 第二次作业:网易云音乐案例分析
  14. 测试之美(2)对测试的几点理解----谁是利益相关者?
  15. docker-compose 启动mysql、mongodb
  16. python ccf题解 201903-1 小中大
  17. 中国版权力的游戏构思
  18. 程序员如何明确职业与人生的目标
  19. 【数电】(组合逻辑电路)组合逻辑电路的分析和设计方法
  20. Mac根目录下无法创建文件或目录-报错 mount_apfs: volume could not be mounted: Operation not permitted mount: / fail

热门文章

  1. linux at java,Linux-Tutorial/Java-bin.md at master · linsanityHuang/Linux-Tutorial · GitHub
  2. bigint在java中用什么表示_为什么说开车最能看出一个人的人品和情商?这几条说的太精辟了...
  3. 连不上网_手机连不上网?四种方法教你如何解决,建议收藏以备不时之需
  4. excel筛选排序从小到大_excel表格怎么按字数的多少来排列!
  5. jenkins换服务器找不到包,服务器重启后Jenkins项目部分丢失问题解决方法
  6. java读取整数列表_Java-检查整数列表中的X类整数
  7. 算法设计与分析——递归与分治策略——全排列
  8. 共聚焦图片怎么加标尺_聚焦扶贫政策,打造小康生活
  9. 78. 子集022(回溯法)
  10. xml可以html标签吗,自定义html标签(XML)