在树上游玩【牛客tracker 每日一题】
📅 2026/7/22 18:58:37
👁️ 次浏览
在树上游玩时间限制1秒 空间限制1024M知识点动态规划网页链接牛客tracker牛客tracker 每日一题完成每日打卡即可获得牛币。获得相应数量的牛币能在【牛币兑换中心】换取相应奖品助力每日有题做丰盈牛币日益多题目描述对于给定的由n nn个节点组成的无根树每一条边都可以被染上颜色初始时全部边均为白色。现在选中树上k kk个不同的点并将它们标记随后定义如果一条树边( u , v ) (u,v)(u,v)满足节点u uu和v vv同时被标记那么这条树边自动被染为红色不需要花费任何代价。现在你可以额外选择一些树边将它们染成红色每染一条边需要花费1 11点代价。请你计算最小的染色代价使得任意一个被标记的点都可以通过被染成红色的边到达至少一个未被标记的点。并输出不同的染色方案数量。输入描述第一行输入两个整数n , k ( 2 ≦ n ≦ 10 5 ; 1 ≦ k n ) n,k(2≦n≦10^5; 1≦kn)n,k(2≦n≦105;1≦kn)代表树的节点数、被标记的点数。第二行输入k kk个不同的整数a 1 , a 2 , … , a k ( 1 ≦ a i ≦ n ) a_1,a_2,…,a_k(1≦a_i≦n)a1,a2,…,ak(1≦ai≦n)代表被标记的点的编号。此后n − 1 n−1n−1行第i ii行输入两个整数u i , v i ( 1 ≦ u i , v i ≦ n , u i ≠ v i ) u_i,v_i(1≦u_i,v_i≦n,u_i≠v_i)ui,vi(1≦ui,vi≦n,uivi)代表第i ii条树边连接u i u_iui和v i v_ivi。输出描述在一行上输出两个整数代表最小的染色代价、满足条件的染色方案数量。由于染色方案数量可能很大请输出对10 9 7 10^971097取模后的结果。示例1输入11 6 8 2 4 7 9 6 8 10 8 9 1 8 1 11 1 3 11 2 5 6 2 5 4 2 7 6输出3 4说明在这个样例中树的形态如下图所示。解题思路本题是树的连通分量划分 乘法原理计数的经典题型核心是将问题转化为标记点连通块的出口边统计通过DFS遍历求解连通块并计数可选边最终得到最小代价与方案总数。1. 问题等价转化免费红边规则两端均为标记点的边会自动染成红色无需花费。这些边将所有标记点分割为若干个互不连通的「标记连通块」块内部的所有标记点已经通过免费红边互相可达。目标要求拆解每个标记点必须能通过红边到达至少一个未标记点等价于每个标记连通块至少额外染红一条通往未标记区域的边出口边让整个块连接到未标记的部分。最小代价结论最小染色代价 标记连通块的总个数每个块恰好染一条出口边即可达到最优。方案数结论每个连通块对应若干条可选的出口边一端在块内标记点、另一端为未标记点的边总方案数为所有连通块的可选边数相乘结果对10 9 7 10^971097取模。2. 算法实现DFS遍历连通块建图与标记用邻接表存储整棵树的边用布尔数组记录哪些节点是被标记的点。连通块遍历遍历所有节点每遇到一个未访问过的标记点就启动DFS遍历整个连通块递归仅沿着标记点延伸保证只在连通块内部遍历同时标记访问状态避免重复。遍历当前节点的所有邻居若邻居是未标记点则对应一条出口边计数加1。结果聚合每找到一个连通块最小代价加1总方案数乘以该块的出口边数全程取模。3. 复杂度分析时间复杂度O ( n ) O(n)O(n)每个节点和每条边仅被访问一次线性遍历整棵树。空间复杂度O ( n ) O(n)O(n)邻接表、标记数组与访问数组的空间开销适配十万级节点规模。总结核心逻辑免费红边将标记点划分为多个连通块每个块至少选一条出口边连接未标记区域最小代价为块的数量方案数为各块可选出口边数的乘积。关键操作标记点连通块划分、出口边逐条计数、乘法原理计算总方案数。效率保障单次DFS线性遍历无冗余计算十万级数据可毫秒级处理完成。代码简要说明全局数组定义masked[]布尔数组标记节点是否为被选中的标记点。vis[]访问标记数组用于DFS遍历连通块时去重。G[]邻接表存储树的所有无向边。DFS连通块遍历函数接收当前节点与出口边计数变量cnt引用传递直接修改外部计数。若当前节点已访问直接返回否则标记为已访问。遍历所有邻接节点若邻居是未访问的标记点递归深入扩展连通块若邻居未被访问必为未标记点说明找到一条出口边cnt自增1。主函数逻辑读入总节点数与标记点数将所有标记点对应位置标记为true。读入n-1条边构建无向邻接表。从1到n遍历所有节点每发现一个未访问的标记点启动DFS统计该连通块的出口边数最小代价加1总方案数乘以当前块的边数并对模数取余。最终按顺序输出最小代价与方案总数。输入优化关闭流同步并解绑cin与cout大幅提升十万级数据的读取与输出效率。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1e310;constll INF1e18;constll M1e610;constll mod1e97;constll MAXN200005;boolvis[MAXN]{false};boolmasked[MAXN]{false};vectorllG[MAXN];voiddfs(ll v,llcnt){if(vis[v])return;vis[v]true;for(ll i0;i(ll)G[v].size();i){if(masked[G[v][i]]!vis[G[v][i]])dfs(G[v][i],cnt);elseif(!vis[G[v][i]])cnt;}}intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);ll n,k;cinnk;for(ll i0;ik;i){ll v;cinv;masked[v]true;}for(ll i0;in-1;i){ll u,v;cinuv;G[u].push_back(v);G[v].push_back(u);}ll ans1,cost0;for(ll i1;in;i){if(masked[i]!vis[i]){ll cnt0;dfs(i,cnt);cost;ans(ans*cnt)%mod;}}coutcost ans\n;return0;}
SMD封装红外测温传感器的市场背景在红外测温传感器的封装形态中,TO金属管壳封装占据了绝大多数份额,主要服务于家电、工业等传统领域。但随着消费电子和IoT设备的小型化趋势加速,SMD贴片封装的红外传感器正在成为一个快速增长的细分赛道。这类…
📅 2026/7/22 18:58:37
C20 无栈协程与异步控制流:微观状态机与零堆分配压榨📌 导读摘要在构建高性能分布式总线(如 LanBus)或者语音信号流处理模块(如 STTOSView)时,高并发下的异步 I/O 调度与复杂的业务状态机是传统…
📅 2026/7/22 18:58:37
本文关键词:geo pro怎么用你是不是也遇到过这种情况:明明看着Geo Pro的界面挺高大上,功能介绍写得花里胡哨,结果一上手,脑子学会了,手却没学会。搜了一圈“geo pro怎么用”,出来的全是复制粘贴的官方说明书,看得人头疼。我也曾是个小白,为了搞懂这个工具,熬了三个大夜…
📅 2026/7/22 18:57:27
CM2221是士模推出的一款全正向自研16位单通道1MSPS SAR ADC, CM2221(完全兼容AD7980, VDD2.5V)适用于工业自动化设备、精密仪表、医疗仪器模拟量采集等场景。【CM2221产品亮点】1、完美替代 AD7980: 引脚定义、SPI 时序…
📅 2026/7/22 20:25:06
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
📅 2026/7/22 20:25:06
CM2220是士模推出的全正向自研16位单通道1MSPS SAR ADC,CM2220管脚兼容AD7982, VDD1.8V,适用于仪器仪表、自动化测试设备、高精度数据采集卡、医疗仪器和工业自动化设备等场景。【产品亮点】1、管脚兼容 AD7980,VDD1.8V2、性能对标、谐波指标更优&#x…
📅 2026/7/22 20:25:06
由于博主自己的电脑总是喜欢弹出“更新并关机”这个强制选项,而且每次更新都不成功,占用大量时间,如下图: 于是在github上找到了一款开源的自动更新软件:
Hudrig0/Windows-Update-Blocker: A simple and effective to…
📅 2026/7/22 20:25:06
1.嘉立创新建个图纸放置需要的元件,然后更新到PCB图。2.嘉立创导出3D模型3.使用SolidWorks打开文件,隐藏掉元件底部的PCB板。4.文件另存为STEP AP214格式,高版本格式无法导入AD。5.AD16打开元件封装库编辑页面,放置 3D元件体&…
📅 2026/7/22 20:25:06
上周二,老张在自家后院挖个游泳池,结果一铲子下去,火花四溅。不是比喻,是真的短路了。那一刻,他脑子里除了“完了”,就是“谁赔”。很多人觉得,挖土挖断管线是运气不好,是倒霉蛋专属。但在我看来,这根本不是运气问题,而是认知盲区。你以为是挖坑,其实是拆炸弹。而 G…
📅 2026/7/22 20:23:47
1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…
📅 2026/7/22 0:00:13
1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…
📅 2026/7/22 0:00:13
甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…
📅 2026/7/22 0:00:13
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/22 1:05:21
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/22 1:05:21
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/22 1:05:21
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/22 7:05:39
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/22 17:06:14
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/22 5:05:32