洛谷 P3748 [六省联考 2017] 摧毁“树状图”

news/2026/1/19 19:41:28/文章来源:https://www.cnblogs.com/ymz0913/p/19441016

题目链接

看来这次出题人拉了坨大的,他还真有勇气,我一看,可以分成两种情况讨论:

  1. 两条链相交。因为题目要求交点最多一个,所以可以枚举交点,下面挂 \(0 \sim 4\) 条最大的链计算答案。

  2. 两条链无交。这时候可以把树分割成两棵子树,枚举割断的边计算答案。不妨可以钦定下面子树的根节点被链经过。

然后就可以换根 dp 了,状态设计和转移可以参考下面代码。

但是,出题人给了我们 \(x = 0/1/2\) 三种情况。不过,由于题目保证给出的路线最优,全部都当成 \(x = 0\) 来做就行啦。

时间复杂度 \(\text O (n)\)

/*
“答案”表示连通块数最大值 f[x][0~3]:x 下面挂的链的第 1~4 大答案 
g[x]:链端点是 x 的答案
h[x]:链在 x 子树内,经过 x 的答案 
p[x]:链在 x 子树内,不经过 x 的答案
*/#include<cstdio>
#include<algorithm>
#define N 500005
using namespace std;int T,cxk;
int read() {int x=0; char c=getchar();for(;c<'0'||c>'9';c=getchar());for(;c>='0'&&c<='9';c=getchar()) x=x*10+c-'0';return x;
}
void write(int x) {if(x>9) write(x/10);putchar('0'+x%10);
}
int n,ans,deg[N],g[N],h[N];
int tot,head[N],nxt[N*2],ver[N*2];
void insert(int x,int y) {ver[++tot]=y,nxt[tot]=head[x],head[x]=tot;
}
struct kmax {int k,mx[4],id[4];int& operator[](int x) {return mx[x];}void init(int u) {k=u;for(int i=0;i<k;i++) mx[i]=id[i]=0;}void ins(int x,int c) {if(c>mx[k-1]) {mx[k-1]=c,id[k-1]=x;for(int j=k-1;j&&mx[j]>mx[j-1];j--)swap(mx[j],mx[j-1]),swap(id[j],id[j-1]);}}void del(int x) {for(int i=0;i<k-1;i++)if(id[i]==x)swap(mx[i],mx[i+1]),swap(id[i],id[i+1]);if(id[3]==x)mx[3]=id[3]=0;}
} f[N],p[N];
void upd(int x) {g[x]=max(deg[x],f[x][0]+deg[x]-1);h[x]=max(g[x],f[x][0]+f[x][1]+deg[x]-2);
}
void dp(int x,int fa) {deg[x]=0,f[x].init(4),p[x].init(2);for(int i=head[x],y;i;i=nxt[i]) {if((y=ver[i])==fa) continue;dp(y,x),deg[x]++,f[x].ins(y,g[y]),p[x].ins(y,max(h[y]+1,p[y][0]));}upd(x);
}
void dfs(int x,int fa) {int sum=deg[x]; ans=max(ans,sum);for(int i=0;i<4;i++) sum+=f[x][i]-1,ans=max(ans,sum);int deg_=deg[x]; kmax f_=f[x],p_=p[x];for(int i=head[x],y;i;i=nxt[i]) {if((y=ver[i])==fa) continue;deg[x]--,f[x].del(y),p[x].del(y),upd(x);ans=max(ans,h[y]+max(h[x],p[x][0]));deg[y]++,f[y].ins(x,g[x]),p[y].ins(y,max(h[x]+1,p[x][0]));dfs(y,x),deg[x]=deg_,f[x]=f_,p[x]=p_;}
}
int main() {scanf("%d%d",&T,&cxk);XJX:while(T--) {tot=0;for(int i=1;i<=n;i++) head[i]=0;n=read();for(int _=1;_<=cxk;_++) read(),read();for(int i=1,x,y;i<n;i++) {x=read(),y=read();insert(x,y),insert(y,x);}ans=0,dp(1,0),dfs(1,0);write(ans),putchar('\n');}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1184720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷 P5071 [Ynoi Easy Round 2015] 此时此刻的光辉

题目链接 令 \(V = 10 ^ 9\),先把 \(\sqrt V\) 内的所有质数筛出来,然后对每个 \(a _ i\) 分解质因数,所有不同的质因数只有 \(\text O (\sqrt V + n)\) 个。 考虑莫队,由于一个 \(a _ i\) 只有不超过 \(10\) 个不…

第四章:网络编程

互联网协议介绍 互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网。我们理解了这些协议,就理解了互联网的原理。由于这些协议太过庞大和复杂,没有办法在这里一概而全,只能介绍一下我们日常开发中接触较…

营销型网站建设避坑要点:内容本地化和广告素材匹配怎么做

在跨境电商企业进入欧洲市场的早期阶段&#xff0c;营销型网站建设中“内容本地化”和“广告素材匹配”的问题往往决定了广告投放的ROI。结论是&#xff1a;若未建立语言、文化与投放渠道之间的匹配逻辑&#xff0c;企业在多语言广告环境下的转化效率极易下降。要评估成效&…

2026企业微信私域运营工具推荐:微盛·企微管家为何成腾讯认证增长工具

2026年私域运营&#xff1a;从流量争夺到效率突围的关键转折2026年&#xff0c;企业微信私域流量竞争已进入深水区。据报告显示&#xff0c;2025年企业微信用户规模突破4亿&#xff0c;但企业客户平均留存率处于较低水平。在服务大量企业的过程中发现&#xff0c;多数企业仍被三…

大数据情感分析:助力在线社交平台的安全管理

大数据情感分析:助力在线社交平台的安全管理 关键词:大数据、情感分析、自然语言处理、社交平台安全、文本分类 摘要:社交平台每天产生数亿条用户内容,如何快速识别有害信息(如网络暴力、诈骗、极端言论)成为安全管理的核心挑战。本文将从“情感分析”这一核心技术出发,…

如何培养学生学习word的兴趣?

引言&#xff1a;当工具遇见心灵在许多计算机课堂上&#xff0c;Word教学却常常陷入“菜单讲解-功能演示-学生模仿”的机械循环&#xff0c;学生们面对那些看似冰冷的按钮、繁杂的菜单&#xff0c;眼中闪烁的往往不是好奇的火花&#xff0c;而是疲惫的迷茫。如何将Word从“不得…

寒假生活记录

2026年1月17日我的qq号被盗了,以下是我的qq号被盗过程: 骗子假冒我的同学给我发送了一个txt文件, 文件标题为秋季度个人综合评估,内容为一个网址,还有一段文字(大意是教务处搞的一个秋季学期的个人综合测评,个人…

奥比中光 Gemini 336L - 调试记录(Ubuntu 24.04)

按照Readme安装ROS2 SDK:https://github.com/orbbec/OrbbecSDK_ROS2/tree/v2-main开启ROS2自动补全:eval "$(register-python-argcomplete ros2)" eval "$(register-python-argcomplete colcon)"…

2026年深圳评价高的氮化铝陶瓷片厂家推荐,主要有哪些陶瓷片品牌? - 睿易优选

在深圳,众多氮化铝陶瓷片厂家以其优质产品和良好口碑脱颖而出。比较各厂家,客户普遍关注产品的导热性能、耐高温能力及抗电磁干扰性。市场调研显示,评价高的厂家如深圳市佳日丰泰电子科技有限公司在这些方面表现尤为…

即插即用系列(代码实践) | AMD核心模块:自适应多尺度分解框架——纯MLP架构吊打Transformer,时间序列预测新SOTA

论文题目:Adaptive Multi-Scale Decomposition Framework for Time Series Forecasting 中文题目:用于时间序列预测的自适应多尺度分解框架 论文出处:arXiv 2024 (清华大学深圳国际研究生院 & 同济大学) 应用任务:时间序列预测 (Time Series Forecasting)、长期预测 核…

Spark与Flink对比:流批一体架构的技术选型

Spark与Flink对比&#xff1a;流批一体架构的技术选型关键词&#xff1a;Spark&#xff0c;Flink&#xff0c;流批一体架构&#xff0c;技术选型&#xff0c;实时计算&#xff0c;批处理摘要&#xff1a;在当今大数据处理领域&#xff0c;流批一体架构成为了热门趋势&#xff0…

全网最全2026研究生AI论文平台TOP9:开题文献综述神器测评

全网最全2026研究生AI论文平台TOP9&#xff1a;开题文献综述神器测评 一、不同维度核心推荐&#xff1a;9款AI工具各有所长 学术写作包含开题、初稿、查重、降重、排版等多个环节&#xff0c;不同工具在细分场景中优势各异。以下结合实测体验&#xff0c;按综合适配性排序推荐。…

禁止血压飙升:阿里大佬写的Controller太优雅了!

见过几千行代码的 controller吗&#xff1f;我见过。见过全是 try catch 的 controller 吗&#xff0c;我见过。见过全是字段校验的 controller 吗&#xff0c;我见过。见过全是业务代码的 controller 吗&#xff1f;不好意思&#xff0c;我们公司很多业务写在 controller 的。…

Office 2021安装包免费版永久使用,附永久破解工具+详细安装教程

一、Office 2021软件下载 软件名称:Office 2021 软件大小:5.21GB 安装环境:Win10\Win11 下载链接: (建议手机保存后到电脑端打开,无需任何密码) 夸克下载:https://pan.quark.cn/s/a10ffe56e295 二、Office 2021…

微调与安全隐私:AI定制时代的机遇与防线

引言:当AI定制遇上安全挑战 在AI技术飞速普及的今天,大模型早已从实验室走进实际应用场景。我们可能在工作中用AI生成行业报告,在生活中依赖智能助手解答问题,在创业项目中借助AI提升效率——但通用大模型往往存在…

阿里跳槽来的工程师,写个try catch的方式都这么优雅!

软件开发过程中&#xff0c;不可避免的是需要处理各种异常&#xff0c;就我自己来说&#xff0c;至少有一半以上的时间都是在处理各种异常情况&#xff0c;所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块&#xff0c;不仅有大量的冗余代码&#xff0c;而…

Redis 分片集群 完整性能测试报告

目录标题redis-2ffca4ed 分片集群 完整性能测试报告目录一、测试概述1.1 测试目标1.2 测试工具1.3 测试架构二、环境配置2.1 集群信息2.2 Redis 组件状态2.3 Predixy 配置演变三、测试阶段总结3.1 测试时间线3.2 各阶段关键指标3.3 性能提升总览四、详细性能数据4.1 初始测试 (…

接口防刷处理,这样实现更优雅!

前言本文为描述通过Interceptor以及Redis实现接口访问防刷Demo这里会通过逐步找问题&#xff0c;逐步去完善的形式展示原理通过ip地址uri拼接用以作为访问者访问接口区分通过在Interceptor中拦截请求&#xff0c;从Redis中统计用户访问接口次数从而达到接口防刷目的如下图所示工…

安克创新与飞书联合发布“安克 AI 录音豆” 手指可握仅重 10 克

2026 年 1 月 19 日&#xff0c;安克创新与飞书联合发布了最新 AI 硬件——安克 AI 录音豆&#xff0c;飞书提供了该产品的软件 AI 适配与服务。这款产品以极轻的"磁吸纽扣”形态实现无感随身佩戴&#xff0c;基于飞书 AI 能力&#xff0c;支持声纹识别、实时转写与翻译、…

深入探讨大数据领域数据工程的发展趋势

好的&#xff0c;请看这篇关于大数据领域数据工程发展趋势的深度技术博客。数据工程的未来图景&#xff1a;从ETL到智能数据网格的演进之路 引言&#xff1a;我们正站在数据洪流的十字路口 想象一下&#xff0c;你是一家大型电商公司的首席数据官。每天&#xff0c;你的系统需要…