【AcWing】蓝桥杯集训每日一题Day23|树形DP|字典序最小3465.病毒溯源(C++)

5G NR 双连接与载波聚合:PCell、SCell、PScell、SpCell 角色全解析 本文全面解析了5G NR中双连接与载波聚合技术的关键概念,详细介绍了PCell、SCell、PScell和SpCell的角色与功能。通过实际案例和配置示例,帮助读者理解这些小区在提升网络覆盖和速率方面的作用,以及在实际组网中的优化策略。 阅读详情
3465.病毒溯源
3465. 病毒溯源 - AcWing题库
难度:中等
时/空限制:0.4s / 64MB
总通过数:2108
总尝试数:4379
来源:

CCCC天梯赛L2-038
算法标签

树形DP求方案

题目内容

病毒容易发生变异。
某种病毒可以通过突变产生若干变异的毒株,而这些变异的病毒又可能被诱发突变产生第二代变异,如此继续不断变化。
现给定一些病毒之间的变异关系,要求你找出其中最长的一条变异链。
在此假设给出的变异都是由突变引起的,不考虑复杂的基因重组变异问题 —— 即每一种病毒都是由唯一的一种病毒突变而来,并且不存在循环变异的情况。

输入格式

输入在第一行中给出一个正整数 N,即病毒种类的总数。于是我们将所有病毒从 0 到 N−1 进行编号。
随后 N 行,每行按以下格式描述一种病毒的变异情况:
k 变异株1 …… 变异株k
其中 k 是该病毒产生的变异毒株的种类数,后面跟着每种变异株的编号。第 i 行对应编号为 i 的病毒(0≤i<N)。题目保证病毒源头有且仅有一个。

输出格式

首先输出从源头开始最长变异链的长度。
在第二行中输出从源头开始最长的一条变异链,编号间以 1 个空格分隔,行首尾不得有多余空格。如果最长链不唯一,则输出最小序列。
注:我们称序列 {a1,…,an} 比序列 {b1,…,bn} “小”,如果存在 1≤k≤n 满足 ai=bi 对所有 i<k 成立,且 ak<bk。

数据范围

1≤N≤10^4

输入样例:
10
3 6 4 8
0
0
0
2 5 9
0
1 7
1 2
0
2 3 1
输出样例:
4
0 4 9 1
题目解析

一开始是一个病毒,有可能会变异成多个不同的病毒,变异的病毒还可能变异成新的病毒
保证了变异的方式是一颗树,不会发生交叉变异和循环变异,一定是从父节点向子节点变异
在整个树中从根节点开始的最长的一条路径,并且把路径输出
如果有多个方案的话,输出字典序最小的方案

数据范围是10000
时间复杂度只需要在 O ( n log ⁡ n ) O(n\log n) O(nlogn)

要分成两步来看
怎么去求最大值

可以看成递归问题或简单的树形DP问题
考虑某一个局部,从当前节点开始,如果往下搜的话,最长的链有多长
比如当前节点有三个儿子的话,从当前节点往下走有三条路径,应该选哪条路径走呢
因为这个题要求最长的路径,要从三个儿子中选择一条能往下走的最长的路径
如果当前节点是u,三个儿子是abc的话
用f[u]来表示从u往下走的最长路径,f[a],f[b],f[c]分别表示从abc往下走的最长路径
f [ u ] = m a x ( f [ a ] , f [ b ] , f [ c ] ) + 1 f[u] = max(f[a], f[b], f[c])+1 f[u]=max(f[a],f[b],f[c])+1
所以这个题就是非常简单的树形DP
只要按照这个递推方程,递归地求一遍就可以了,遍历一下整棵子树就可以了

如何去求方案,以及如何求字典序最小的方案

根节点是root
每次要知道,根节点要取最长路径的话,应该是往哪个儿子走

  1. 当然可以后面动态计算
    最后求方案的时候可以再递归一遍
    递归的时候,判断一下f[root]是从哪个儿子转移过来的,判断一下哪个儿子取了最大值就可以了
  2. 记忆化存储
    转移的时候,对u来说,记录一下u是从哪个儿子转移过来的,如果最大值是f[a]的话,就把son[u]记成a
    存下来之后,第一个点是root,第二个点就是son[root],接下来的点就是每次套一个son就可以了
    只要在转移的时候求一下son数组,就可以把整个路径找出来了
如何找字典序最小的方案

在求f[u]的时候,这三个链当中,只有唯一的一个最长
因为要保证最长,所以方案是唯一的
如果有两个儿子都可以取到最长

f[a] = f[b] > f[c]

这时如何选a和b
由于要字典序最小,就看一下a和b哪个编号更小,取编号更小的那一个就可以了

输出方案可以用DP

递归求完每个状态之后,再从根节点再递归一遍就可以了
或者动态判断一下

没有告诉根节点,需要判断一下根节点是谁,看一下哪个点没有父节点
用bool数组标记

代码
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 10010;

int n;
int h[N], e[N], ne[N], idx;
int son[N];
bool st[N]; //标记有没有父节点

//加边函数模板
void add(int a, int b)
{
	e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
}

int dfs(int u)
{
	int res = 0;
	//当前点如果没有儿子的话,标记成-1
	son[u] = -1;

	//枚举一下当前点的所有子节点
	//~i等价于i != -1
	for (int i = h[u]; ~i; i = ne[i])
	{
		//用j表示当前子节点的编号
		int j = e[i];
		//递归求一下从j往后走的最大长度
		int d = dfs(j);
		//如果距离更长 或者 距离相等而且编号更小的话
		if (d > res || d == res && j < son[u])
		{
			res = d;
			son[u] = j;
		}
	}

	//最后返回最长路径+自己
	return res + 1;
}

int main()
{
	scanf("%d", &n);
	//先把路径表表头清空
	memset(h, -1, sizeof h);

	//读入每个点的所有儿子
	for (int i = 0; i < n; i ++)
	{
		//先读入每一个点儿子的数量
		int cnt;
		scanf("%d", &cnt);
		//依次读入所有的儿子
		while (cnt --)
		{
			int x;
			scanf("%d", &x);
			//添加一条边
			add(i, x);
			//i的儿子是x,所以x有父节点
			st[x] = true;
		}
	}

	//编号从0开始
	int root = 0;
	//找根节点
	while (st[root]) root ++;

	//递归求一下,从根节点开始的最大的路径长度
	int d = dfs(root);

	printf("%d\n", d);

	//行内没有空格
	printf("%d", root);

	for (int cur = son[root]; cur != -1; cur = son[cur])
		printf(" %d", cur);

	return 0;
}
基于simulink的低通滤波器(Low-pass Filter, LPF) 摘要:本文详细介绍了如何在Simulink中搭建低通滤波器进行噪声抑制仿真。通过定义系统需求(50Hz信号+250Hz噪声)、添加信号源、设计6阶巴特沃斯低通滤波器(截止频率100Hz)、连接各模块并配置仿真参数,最终实现高频噪声的有效滤除。该教程包含从模型创建到结果分析的完整流程,为信号处理系统开发提供了基础框架,并可进一步扩展为自适应滤波等高级应用。所需MATLAB版本为R2023a及以上,需安装Simulink和DSPSystemToolbox。 阅读详情

相关推荐

优化问题-半正定规划(Semi-Definite Program, SDP)

半正定规划(Semi-Definite Program, SDP)在MIMO无线通信相关的信号处理中具有广泛的应用,在某些场景可以分析证明SDP的得到的解释原问题的全局最优化或者次优解。

qq_33668008的博客 1万+

AcWing打卡记录day 1

89 和 90都是快速幂的题目。 89是快速幂板子。 90是运用到了位运算,二进制,当a * b要大于long long 类型的话,因为要模p则可以,将b转换成二进制的数,然后一位一位的运算。 ll ksm(ll a,ll b,ll p){ ll ans=0; while(b){ if(b&1) ans=(ans+a)%p; a=(2*a)%p;//因为是二进制,所以每次都是乘2 b>>=1; } return ans; } 91是一个简单的状压dp的题目。 即用.

qq_52540927的博客 252

STM32F407编译下载全流程:从CubeMX到HEX烧录

嵌入式固件开发中,编译与下载是连接代码与硬件的关键闭环。其本质是将高级语言描述的逻辑,经交叉编译(ARM GCC)、链接(ELF生成)、格式转换(HEX/BIN)后,通过调试接口(SWD/UART)写入MCU Flash存储器的过程。该流程涉及工具链协同、二进制格式特性(如Intel HEX的地址映射与无元数据设计)、启动模式(System Memory Bootloader)、Flash选项字节(RDP/WRP)等底层机制,直接决定固件可运行性与安全性。典型应用场景包括STM32F407开发板调试、量产固

weixin_28840811的博客 260

2023/3/4天梯备战acwing刷题

刷题记录

qq_51955445的博客 530

避坑指南:Zabbix poller进程100%占用的5种常见原因及解决方案

本文深入剖析了Zabbix poller进程占用率高达100%的五大常见原因,包括监控项与进程数不匹配、不可达主机资源浪费、数据库性能瓶颈、监控项配置不合理以及版本缺陷。文章提供了从系统化诊断到针对性解决方案的完整指南,并重点介绍了如何通过优化zabbix_server.conf中的StartPollers等关键参数进行有效调优,帮助运维人员从根本上解决这一经典性能问题。

7z8x2c4v6b9的博客 250

计算机视觉-深度学习图像检测方法梳理

计算机视觉-深度学习图像检测方法梳理 由于之后要转方向啦,趁这段时间整理手中硕士研究方向的一些阅读笔记,这是一篇关于计算机视觉的基础知识梳理 先搞清一些小知识点 首先我们要弄清楚图像分类、目标定位、语义分割、实例分割的区别 a. 图像分类 :给定一张输入图像,图像分类任务旨在判断该图像所属类别; b. 目标定位 :在图像分类的基础上,我们还想知道图像中的目标具体在图像的什么位置,通常是以包围盒的(bounding box)形式; c. 语义分割 :语义分割是目标检测更进阶的任务,目标检测只需要框出每个目

qq_41662991的博客 9953

iOS 多语言本地化教程,VS Code KXApp 编辑 String Catalog .xcstrings

做 iOS 多语言本地化总要在 VS Code 和 Xcode 之间来回切?这篇讲用 KXApp(快蝎)在 VS Code 里直接编辑 String Catalog(.xcstrings):双击打开和 Xcode 一样的表格,`.xcstrings` 与老的 `.strings`、`.stringsdict` 同表编辑,加语言同步登记到工程、从源码扫描同步新 key,复数、设备变体和变量占位都在表里处理,改源语言文本后已有翻译自动标需复核。文件仍是标准格式,回 Xcode 打开一致。

2501_91592143的博客 167

别再手动算临界转速了!用ANSYS Workbench 2023 R2快速搞定转子坎贝尔图(附完整APDL命令流)

本文详细介绍了如何利用ANSYS Workbench 2023 R2快速生成转子坎贝尔图,实现全自动临界转速分析。通过对比传统手动计算与Workbench自动化流程的效率差异,展示了其在旋转机械设计中的革命性优势,包括大幅缩短分析周期、提升精度至98.7%。文章还提供了完整的APDL命令流和实战案例,帮助工程师快速掌握这一高效工具。

weixin_42699679的博客 470

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:三分法求单峰函数最值解析

最近正是刷题备赛的黄金窗口:第十八届蓝桥杯软件赛报名 2026-10-08 10:00—12-18 14:00,省赛(C/C++·Python 程序设计)定在 2027-04-10 9:00–13:00;二分大家都会,但二分只能处理"单调或判定性"问题,遇到"极值"就不灵了。(加权平均 x = (3·10+1·20+4·30+2·60+5·80)/15 = 46,不舒服度 = 3·36²+1·26²+4·16²+2·14²+5·34² = 11760。——这时三分法就是"万能钥匙":只要单峰,直接搜。

IT_Scratch的博客 229

认知建模:模拟人类决策过程的AI方法

认知建模的目的在于构建能够模拟人类认知和决策过程的模型,通过AI技术将人类的思维、判断和选择等过程以数字化的形式呈现出来。其范围涵盖了多个领域,包括心理学、人工智能、经济学、管理学等。在心理学领域,认知建模可以帮助研究人员更好地理解人类的认知机制;在人工智能领域,可用于开发具有更智能决策能力的系统;在经济学和管理学中,能辅助进行市场预测、战略规划等决策制定。本文首先介绍认知建模的背景知识,让读者对该领域有初步的了解。接着阐述核心概念和它们之间的联系,通过示意图和流程图直观展示。

AI 算法实战派 1165

AIGC游戏本地化:用AI实现多语言自动翻译

游戏本地化是游戏全球化战略的关键环节,传统人工翻译方式成本高、周期长。本文旨在探讨如何利用AIGC技术实现高效、准确、低成本的游戏多语言自动翻译解决方案。我们将覆盖从文本翻译到语音合成的完整本地化流程,重点关注AI技术在游戏特定语境下的应用优化。文章首先介绍游戏本地化的核心挑战和AI解决方案,然后深入讲解关键技术原理,接着通过实战项目演示具体实现,最后讨论应用场景和未来趋势。AIGC:人工智能生成内容,指利用AI技术自动生成文本、图像、音频等内容本地化(Localization)

AI 领航者的博客 1337

蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关

中国电子学会 12 月图形化考级报名 9/23–12/2、统考 12/12–13;全国青少年信息素养大赛 2026—2027 赛季也正处在报名与基础能力评估窗口(复赛 2027 年 5–7 月、总决赛 7–8 月,5 大主题赛项覆盖图形化)。这三大标志性赛事的图形化考点高度重合,今天用一个原创项目「校园华容道大闯关」,把。

IT_Scratch的博客 241

★教程3:Simulink学习教程入门60例目录

1.订阅本教程用户可以免费获得本博任意1个(包括所有免费专栏和付费专栏)博文对应代码;2.本Simulink课程的所有案例(部分理论知识点除外)均由博主编写而成,供有兴趣的朋友们自己订阅学习使用。未经本人允许,禁止任何形式的商业用途;3.本课程除了介绍常见的Simulink模块介绍之外,我们更侧重于各种实例的完整设计介绍。从通信,控制器,图像处理,语音处理,电力系统等诸多常用领域介绍了相关案例,如果对于某个较为复杂的案例,初学者无法正确复现,也可以私信博主获得完整Simulink模型文件。

FPGA/MATLAB学习教程/源码/项目合作开发 1万+

微软技术周报 11-02~11-09:VS Code 混装 Claude 与 Codex、EF Core 11 静默改行为、.NET 11 倒计时

11 月 6 日,Power Platform 通过消息中心通知管理员,Copilot Studio、Power Automate 和 Power Apps 里所有跑在 Anthropic Claude、xAI Grok 以及旧版 GPT 上的 prompt,12 月 2 日自动迁移到 GPT-6 系列,档位价格不变,模型选择收窄到一条产品线。效果是这样的:让 Claude 评审一个 Copilot chat 写出的方案,或者把同样的任务交给 Codex,两边并排跑在同一个会话里。更要紧的是下周的时间线。

海盗Sharp的博客 393

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

蓝桥杯LV1 - 找到最多的数

在一个 n×mn×m 的矩阵中,有一个数字出现了超过一半的次数,请设计一个高效算法找到这个数字。

2402_87421821的博客 84

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

蓝桥杯青少组图形化实战:校园俄罗斯方块解析(覆盖全国青少年信息素养大赛与电子学会图形化考级)

8 城线下测评 11 月 7 日—12 月 26 日陆续开赛,主题《星际拓荒纪元》;复赛(地区赛)定于 2027 年 5—7 月、总决赛 7—8 月,五大主题赛项覆盖图形化;报名 9/23—12/2、全国测试 12/10、统考 12/13(一级 14:00—15:00,二/三/四级 8:30—10:00)。三赛都看重「列表 + 循环 + 条件 + 变量 + 自制积木 + 广播」这套图形化基本功——下面这道原创项目题把它们一次性串起来。

IT_Scratch的博客 112

蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园成语接龙大挑战解析

备考季又到了——第十八届蓝桥杯 STEMA 11 月省考报名正热(,Scratch 组 90 分钟);中国电子学会报名 9 月 23 日—12 月 2 日、统考 12 月 12—13 日;也已进入报名 / 基础能力评估窗口。这三大标志性赛事的图形化考点高度重合,今天用一个原创项目「校园成语接龙大挑战」,把六件套一次性串起来,一篇顶三篇备考。

IT_Scratch的博客 444

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:分块算法巧解区间改查

代码比线段树短一大截,却足以应对绝大多数区间改查题。建议蓝桥杯、电子学会 C/C++·Python 考级、信息素养大赛备赛时,把「分块」作为线段树之前的保底武器熟练掌握。今天我们用一道原创题,把「分块(Square Root Decomposition)」从思想讲到可落地的双语言实现,并拆解 7 个高频易错点。这三类赛事的算法题里,有一类「看上去用朴素模拟会超时、上线段树又觉得杀鸡用牛刀」的题目特别常见——,代码量远小于线段树,是 CSP-J/S 与蓝桥杯省赛里性价比极高的「保底利器」。

IT_Scratch的博客 82

蓝桥杯 - 01背包 超通俗零基础讲解

1. dp[j] :背包容量为j时,可以装出的最大价值2. 下标 j ->代表背包体积3. dp数组里面存的值 -> 代表价值4. 举例: dp[5]=8 ,背包容量5,最多能拿到价值8。

2402_87421821的博客 279

蓝桥杯·全国青少年信息素养大赛·电子学会C/C++考级:分层图最短路解析

赛事锚点:第十八届蓝桥杯软件赛报名已开启(2026-10-08 10:00—12-18 14:00,省赛 2027-04-10,C/C++·Python 程序设计 9:00–13:00);,套在普通最短路外面,是蓝桥杯、全国青少年信息素养大赛算法赛项里反复出现的高频模型。刷题的同学一定见过这类"套路题":给你一张图,你手里还有几张"免费通行券",用掉一张就能让某一条路不花代价地走过去,问从起点到终点最少要多少代价。下面两份代码都采用"节点展开"的写法,最直观、最不容易写错。它把"已经用过几张券"变成一个。

IT_Scratch的博客 302

P15434 [蓝桥杯 2025 国 Python B] 三角形构造(构造,,数学,位运算)

0时当前的y就是可以使用的,具体的做法是:由于1<=y<=x,所以直接反过来算:合法数量=x-(x&y等于0的正整数数量),现在我们考虑x&y=0,设x的二进制最高位是第h位,那么在0...h这h+1个二进制位中:x为1的位置,y必须为0,x为0的位置,y可以填0或1,假设x中0的位数是z,那么x&y=0的选择有2^z种,包括y=0.因此正整数有:2^z-1个,所以答案就是x-2^z+1,但是数据范围较大,需要开ll。等价于统计与 `x` 按位与不为0的 `y` 个数。时间复杂度:O(logx)

2501_94316951的博客 128

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:Bellman-Ford与SPFA含负权最短路及负环检测全解析

一旦有负权边,一个“当前看起来更大”的距离,可能通过负边被后来者反超,但 Dijkstra 已经把它永久锁定了——于是答案错误。Bellman-Ford 每轮都扫全部边,很多边根本没有“被更新”,白扫。但蓝桥杯、电子学会考级里它仍是最常见的负权最短路写法,且代码短、好调试。前面我们讲过的 Dijkstra(堆优化)、Floyd、次短路、分层图最短路,都有一个共同前提——这道题的“优惠券套利”模型,在蓝桥杯里常伪装成“虫洞”“汇率兑换”“现金流”,本质都是同一套。如果存在,说明可以无限套利,输出提示即可。

IT_Scratch的博客 174

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:中缀表达式求值解析

蓝桥杯填空题常考带括号的四则运算,电子学会 C/C++ 考级把"栈与表达式求值"列为独立能力点,信息素养大赛的算法题也常借表达式解析建模。今天我们用一道原创题,把表达式求值从"人脑心算"打通到"栈 + 调度场算法"的完整能力链。

IT_Scratch的博客 168

蓝桥杯完全背包|和01背包对比速记

1. dp[j] :背包容量为j时,可以装出的最大价值2. 下标 j -> 背包体积3. dp里面存的值 -> 价值口诀:下标管体积,内容管价值。

2402_87421821的博客 660

蓝桥杯青少组省考(11/9报名截止·11/22开考)+电子学会图形化考级+信息素养大赛:校园极速跑酷闯关解析

速度随分数递增,挑战极限距离。(Scratch 组 10:00–11:30,90 分钟上机),准考证 11 月 18 日 14:00 起下载、成绩 12 月 4 日公布;才关门,全国测试 12 月 10 日、统考 12 月 13 日(一级 14:00–15:00、二/三/四级 8:30–10:00);今天距蓝桥杯 11 月省考报名截止只剩 4 天,想冲省考/国考、同时备考电子学会图形化考级与信息素养大赛的同学,这篇可以直接当练手题。1. 玩法完整:奔跑、起跳、躲避、计分、扣命、结束、重开,一个不少;

IT_Scratch的博客 183

B4292 [蓝桥杯青少年组省赛 2022] 路线

【代码】B4292 [蓝桥杯青少年组省赛 2022] 路线。

UIU114的博客 414

蓝桥杯DP入门——爬楼梯(一次可走1/2/3步)超详细底层推导

1. dp[i] 定义:走到第 i 级台阶的总方案数2. 最后一步只有 1、2、3步三种可能3. 递推式: dp[i] = dp[i-1] + dp[i-2] + dp[i-3]4. 初始化前3项:1、2、45. 循环从4推到n6. 结果较大,必须用 long long 防溢出。

2402_87421821的博客 519
上一篇: 4.Hexo 页面属性和模板设置
下一篇: 【AcWing】蓝桥杯集训每日一题Day24|快速幂|504.转圈游戏(C++)
ChoSeitaku
博客等级 码龄5年 3452粉丝 557原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值