当前位置: 首页 > news >正文

ABC447F题解

题目链接
\(in_u\) 表示 \(u\) 节点的度数。
我们发现一条链能作为毛毛虫主干的充要条件是首尾的节点的度数 \(in_u \ge 3\),其他节点的度数 \(in_u \ge 4\)
这样我们只用讨论主干,忽略其他支链。接下来就是经典的树形 dp。
\(dp_u\) 表示以 \(u\) 子树内某个节点为起点,到 \(u\) 能形成一侧主干的链的最长长度。
如果 \(in_u = 3\),那么它只能作为起点,否则它可以从子节点那接收。

\[dp_u=\begin{cases} 0,&in_u<3\\ 1,&in_u=3\\ \max (dp_v)+1,&in_u>3 \end{cases}\]

如何统计答案?
\(ans_u\) 表示所有以 \(u\) 为转折点的链中最长的那条。
\(max1\) 表示子节点中 \(dp\) 的最大值, \(max2\) 表示次大值。

\[ans_u=\begin{cases} 0,&in_u<3\\ max1+1,&in_u=3\\ max1+max2+1,&in_u>3 \end{cases}\]

值得一提的是,当主干只有一个节点时,需要的最少度数不再是 \(3\),而是 \(2\)。这种情况需要特判。

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#define mp make_pair
#define fo(i , x , y) for(int i = x ; i <= y ; i++)
#define go(i , x , y) for(int i = x ; i >= y ; i--)
using namespace std;
const int maxn = 200000;
int n , in[maxn + 5] , dp[maxn + 5] , ans[maxn + 5];
vector<int> e[maxn + 5];
void dfs(int u , int fa){int max1 = 0 , max2 = 0;for(int v : e[u]){if(v == fa) continue;dfs(v , u);if(dp[v] >= max1) max2 = max1 , max1 = dp[v];else if(dp[v] > max2) max2 = dp[v];}if(in[u] >= 4) dp[u] = max1 + 1;else if(in[u] == 3) dp[u] = 1;if(in[u] >= 4)ans[u] = max1 + 1 + max2;else if(in[u] == 3) ans[u] = max1 + 1;
}
void solve(){cin >> n;fo(i , 1 , n - 1){int u , v;cin >> u >> v;in[u]++ , in[v]++;e[u].push_back(v) , e[v].push_back(u);}dfs(1 , 0);int res = 0;fo(i , 1 , n) res = max(res , ans[i]);if(res == 0)fo(i , 1 , n)if(in[i] == 2){res = 1;break;}cout << res << "\n";fo(i , 1 , n){in[i] = 0 , dp[i] = 0 , ans[i] = 0;e[i].clear();}
}
int main(){// ios :: sync_with_stdio(0) , cin.tie(0) , cout.tie(0);// freopen(".in" , "r" , stdin);// freopen(".out" , "w" , stdout);int Q = 1;cin >> Q;while(Q--) solve();
}
http://www.jsqmd.com/news/425150/

相关文章:

  • [Vitest] mockClear, mockReset, mockRestore
  • 沙拉查词 + AnkiConnect 完整操作指南
  • 设计模式--装饰器模式
  • C++进阶之bind绑定:用法实例(四百四十二)
  • 初中数学基础差?2026实测4家靠谱线上机构,精准补漏不踩坑|家长收藏 - 品牌测评鉴赏家
  • 改进粒子群算法优化混合储能系统容量配置程序
  • 《从0到1!AI应用架构师对比学习实践的快速入门指南》
  • Tic Tac DREAMIN’
  • go基础之流程控制
  • 中考数学提分|实测4家主流线上机构,避坑不踩雷,直接抄作业 - 品牌测评鉴赏家
  • 2026青木川古镇民宿权威排名|青云客栈蝉联第一,自驾亲子首选(附避坑指南) - 一个呆呆
  • 初中数学线上培训机构推荐|4家实测不踩坑,适配不同基础孩子 - 品牌测评鉴赏家
  • if language is ONLY for the sounds for chating。
  • 初中数学培优选对线上机构,少走1年弯路!实测4家主流平台,家长直接抄作业 - 品牌测评鉴赏家
  • 小学数学培优|2026实测3家线上机构,家长闭眼冲不踩坑 - 品牌测评鉴赏家
  • 100种思维模型概念(多个角度分析问题)
  • 小学数学基础差?4家靠谱线上机构实测推荐!家长闭眼抄作业 - 品牌测评鉴赏家
  • 多项式和生成函
  • 背单词 纯英文 2026年03月
  • 冲刺中考数学哪家线上辅导班好?实测5家,家长闭眼冲不踩坑 - 品牌测评鉴赏家
  • .NET周刊【月第期 --】
  • 定速风电机组:老派硬核选手的倔强
  • 成人高考在2026年怎么选?主要类型与适配场景分析 - 速递信息
  • 2026年单北斗GNSS水库变形监测系统推荐排行榜
  • 初中数学基础差?3家靠谱线上机构实测!避坑不花冤枉钱 - 品牌测评鉴赏家
  • 一生一芯学习:PA:输入输出
  • 初中数学线上培训实测!4家机构盘点,提分不踩坑(家长必看) - 品牌测评鉴赏家
  • 孩子皮肤敏感易泛红适配面霜品牌推荐 - 速递信息
  • 中考数学冲刺|实测!不踩坑、真提分,家长直接抄作业 - 品牌测评鉴赏家
  • ZKEACMS:基于ASP.Net Core开发的开源免费内容管理系统