首页 > 其他分享 >LG3174 [HAOI2009] 毛毛虫 题解

LG3174 [HAOI2009] 毛毛虫 题解

时间:2022-11-12 21:46:25浏览次数:79  
标签:max int 题解 LG3174 HAOI2009 毛毛虫 ans include dp

LG3174 [HAOI2009] 毛毛虫

对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大。给定一棵树,求其最大的毛毛虫的大小。

容易发现毛毛虫的主干就是树上的一条链。

定义 \(dp_u\) 为一条从 \(u\) 开始往其子树延申的一条链,满足这条链组成的毛毛虫节点数最多的点数具体是多少(并且 \(u\) 点本身不算在这个点数中)。转移

\[dp_u=\max_{v\in son_u}dp_v+deg_u-1 \]

其中 \(deg_u\) 中包含了一条去 \(v\) 的边,填补了 \(dp_v\) 中不包含的 \(v\) 点。而 \(dp_v\) 中显然包含了 \(u\) 点,而 \(dp_u\) 的定义中是不包含 \(u\) 点的,所以 \(-1\)。

统计答案:

\[ans\gets \max dp_{u}+1\\ ans\gets \max dp_u+dp_v\quad v\in son_u \]

\(dp_u,dp_v\) 中分别把对方的点填补上了。

想清楚后代码也就很好写了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cmath>

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int>ttfa;
inline ll read(){
	ll x=0,f=1;char ch=getchar();
	while(ch<'0'||'9'<ch){if(ch=='-')f=-1;ch=getchar();}
	while('0'<=ch&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
	return x*f;
}
const int N=1000006;
int n,m,deg[N],dp[N],fir[N],sec[N],ans;
vector<int>edge[N];
void dfs(int u,int f){
	dp[u]=deg[u];
	for(auto v:edge[u]){
		if(v==f)continue;
		dfs(v,u);
		ans=max(ans,dp[u]+dp[v]);
		dp[u]=max(dp[u],dp[v]+deg[u]-1);
	}
	ans=max(ans,dp[u]+1);
}
int main(){
	n=read(),m=read();
	for(int i=1;i<=m;++i){
		int u=read(),v=read();
		edge[u].push_back(v);
		edge[v].push_back(u);
		++deg[u],++deg[v];
	}
	dfs(1,0);
	printf("%d\n",ans);
	return 0;
}

标签:max,int,题解,LG3174,HAOI2009,毛毛虫,ans,include,dp
From: https://www.cnblogs.com/BigSmall-En/p/16884731.html

相关文章

  • error in anyjson setup command: use_2to3 is invalid.问题解决
    报错errorinanyjsonsetupcommand:use_2to3isinvalid.解决因为在setuptools58之后的版本已经废弃了use_2to3pipinstallsetuptools==57.5.0......
  • 11.12 直升考 D2T2 题解
    考场上觉得人均AB,然后上午砸了,就很慌。现在还是觉得上午很砸,仍很慌。T3暴力可过??题意:给定\(n\)个格子,初始全为白色,一个人按顺序染黑一些格子,当一个格子左右的格子都被......
  • 洛谷 P4135 作诗 题解
    题面。之前做过一道很类似的题目洛谷P4168蒲公英,然后看到这题很快就想到了解法,做完这题可以对比一下,真的很像。题目要求区间内出现次数为正偶数的数字的数量。数据范......
  • 题解 P5188 【[COCI2009-2010#4] PALACINKE】
    postedon2022-07-2520:12:26|under题解|source做法:矩阵优化DP+容斥原理。矩阵优化DP先不要考虑商品,写个不管约束条件的DP。令\(f_{t,u}\)表示在\(t\)......
  • 题解 ABC270G【Sequence in mod P】
    postedon2022-10-2013:58:54|under题解|source有个地方写错了,改一下problemSoso有一个无穷序列\(\{X_i\}\)定义如下:\[X_i=\begin{cases}S,&(i=0)\\(A\cdo......
  • 20221112 - Find Device closed unexpectedly 问题解决
    问题现象:小米手机屏幕下方每隔2秒弹出 FindDeviceclosedunexpectedly问题解决:备份数据;并恢复出厂设置(开机前,按住音量键上或下+开机键)。备注:也尝试了一些网上的说法......
  • 「题解」Codeforces 1342F Make It Ascending
    只会\(\mathcal{O}(3^nn^2)\),打开题解一看怎么还真是这个玩意/jy首先集合之间形成一个sum和pos的二维偏序,那么思路就是对一维扫描线,然后另一维搞个什么东西。具体到......
  • 牛客小白月赛60 题解
    比赛通道:牛客小白月赛60前言第二次小白月赛没有AK,感觉自己可以原地退役了QAQ。这次F题理论上我能做出来,但是由于没有打表状态不佳,导致没有AK。A.小竹与妈妈思路这题......
  • 2022/11/11 集训题解
    今天是双11又是疯狂星期四,所以vivo50。比赛链接T2Description给出\(n\)个点\(m\)条边的图,问有多少种边的子集使得全图是个联通的仙人掌。答案对\(998244353\)取......
  • P3167 [CQOI2014]通配符匹配 题解
    想了两种做法,第一种拿到了10分的好成绩。而第二种做法不用前缀和,而且还跑的飞快。目前最优解第三尝试卡进最优解未果。不得不说这是一道好题,做完对KMP有了更深的理解......