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

P11529 [THUPC 2025 初赛] 辞甲猾扎

想了两年半砸贪心。

思路

设与黑点相邻,且不为黑点的点集为 \(S\)

不难发现答案上界是 \(|S|\)
如果对于两个点 \(i,j \in S\),存在 \((u,i)\)\((u,j)\),那么我们有可能通过选择 \(u\) 作为白点来优化答案。

实际我们要做的工作是使得 \(\forall i \in S\)\(i\) 为白点或者与一个白点相邻。

于是,我们在树上先删去所有黑点,再删去所有不属于 \(S\) 且与 \(S\) 中的点不相邻的点。
操作完后整个图变成了森林,我们要在这个森林上对 \(S\) 做类似最小支配集的东西。

考虑我们怎么对一个树做最小支配集。从叶子向上贪心,如果一个点 \(u\) 没有被支配且没在支配集中,那么将 \(fa_u\) 放入支配集中,这样可以使得 \(fa_{fa_u}\) 也被支配那么答案一定不劣。

我们在森林上做上面的过程就可以了,只不过条件变为只要 \(S\) 被支配即可。

代码

const int N = 1e6+10;
int n,m,ans;
struct{int to,nex;
}edge[N];
int head[N],edge_num;
inline void add(int x,int y){edge[++edge_num].to = y;edge[edge_num].nex = head[x];head[x] = edge_num;
}
struct Edge{int u,v;
}ed[N];
int B[N],W[N];
int is_dfs[N],vis[N],in_st[N],fa[N];
inline void dfs(int now,int fu){is_dfs[now] = 1;fa[now] = fu;for(int i=head[now];i;i=edge[i].nex){int tto = edge[i].to;if(tto==fu) continue;dfs(tto,now);}if(!vis[now] && W[now]){if(!in_st[fa[now]]){in_st[fa[now]] = 1;++ans;}vis[now] = 1;vis[fa[now]] = 1;vis[fa[fa[now]]] = 1;}
}
int main(){// freopen("in.in","r",stdin);// freopen("out.out","w",stdout);read(n,m);for(int i=1,x;i<=m;++i){read(x);B[x] = 1;}for(int i=1,u,v;i<n;++i){read(u,v);if(B[u] && !B[v]) W[v] = 1;if(B[v] && !B[u]) W[u] = 1;if(B[u] || B[v]) continue;ed[i] = {u,v};}for(int i=1;i<n;++i){if(W[ed[i].u] || W[ed[i].v]){add(ed[i].u,ed[i].v);add(ed[i].v,ed[i].u);}}for(int i=1;i<=n;++i){if(!is_dfs[i] && W[i]){dfs(i,i);}}printf("%d",ans);fclose(stdin);fclose(stdout);return 0;
}
http://www.hskmm.com/?act=detail&tid=22123

相关文章:

  • 2025年陕西品牌楼盘,西安城西优质楼盘,西咸新区核心楼盘住宅口碑推荐,地建嘉信臻境距吾悦广场一路之隔,商业配套完善
  • ARC113E Rvom and Rsrev
  • 2025年西咸新区高端楼盘,西安刚需楼盘,沣东改善楼盘住宅口碑推荐,地建嘉信臻境3分钟通达高新,区位优势明显
  • P12704 Retribution
  • Sunny Pro 网络验证- 仅需一键,即可为您的exe添加高强度防破加密!
  • 一条mysql数据库更新语句
  • 浅谈递归入门(1) - 指南
  • python+uniapp基于微信小工具的医院陪诊预约系统
  • [深度学习] 大模型学习5-高效微调框架Unsloth使用指北
  • 【APK安全】组件安全核心风险与防御指南 - 详解
  • 前端-JavaScript简介JavaScript模块化 - 努力-
  • 基本地址变换机构
  • 2025工业网线厂家权威推荐榜:千兆/拖链/高柔/网线/六类/超五类/6类/超5类/千兆/超六类/8芯/4芯/成品/相机/视觉数据工业网线高强屏蔽与稳定传输实力之选
  • gitee 使用安装教程
  • VisualMimic——基于视觉的人形行走-操作控制:低层策略负责平衡控制且跟踪高层下发的指令、高层策略则基于自我中心视觉输入生成任务跟踪指令 - 实践
  • 基本分页存储管理的基本概念
  • luogu P6503 [COCI 2010/2011 #3] DIFERENCIJA
  • 详细介绍:自动化接口框架搭建分享-pytest第三部分
  • Solon Plugin 自动装配机制详解
  • 2025宅基地纠纷律所权威推荐榜:专业调解与胜诉保障实力之选
  • 2025上海骨灰盒哪里买优质厂家权威推荐榜:匠心工艺与品质服务之选
  • 实用指南:华为 HCIA-Datacom 备考:VRP 通用路由平台原理-实操
  • Voice Agent Camp 结营!完整项目名单公布丨超音速计划 2025
  • 2025上海寿衣哪里买权威推荐:优质供货商与暖心服务之选
  • AI 真能胜任专业工程师的工作吗?
  • 容器中与内存相关的几个参数
  • 第一次软工作业
  • OpenWRT中备份多个docker容器的脚本 -
  • 动态分区分配算法
  • 上海殡葬一条龙服务权威推荐:寿衣、骨灰盒购买定制服务暖心陪伴与专业仪式之选