CF23 B. Party
题意:
n个人参加聚会,他们中的某些人是朋友
首先朋友数为0的人会离开聚会
然后剩余朋友数为1的人(这1个人在之前还没有离开聚会)会离开聚会
然后剩余朋友数为2的人(这2个人在之前还没有离开聚会)会离开聚会
……
最后剩余朋友数为n-1的人(这n-1个人在之前还没有离开聚会)会离开聚会
请你构造他们的 朋友关系
使最后聚会剩下的人最多
结论:
n=1 剩余0人
其余都是剩余n-2人
问题转化为有一张n个点的图,给n个点随意加无向边
加完边后,先删去度数为0的点
然后删去度数为1的点和相关联的边
然后删去度数为2的点和相关联的边
……
最后删去度数为n-1的点和相关联的边
问最少可以删除多少点
首先度数最小的点一定会被删除,所以至少会删除一个点
证明至少要删除2个点:
假设只有1个点会被删除,设它的度数为d,则这个点是唯一度为d的点,且其他所有的点的度数>=d+1
删除这个点之后,与这个点有边相连的点的度数都会减1
接下来面临删除的点是度数>d且度数最小的点
如果其他的点都不会被删除,要求他们的现在度数都<=d,即初始度数都<=d+1
所以所有的点都从度数为d+1变为了度数为d
所以这个点与其他所有点都有边,即它的度数为n-1
这与这个点是唯一度数最小的点相悖
所以至少要删除2个点
能否构造出删除2个点的构图?
让n-2个点与除自己的所有点都有边
剩余2个点与那n-2个点都有边
这样的话会在删除度数为n-2时删去那2个点,那n-2个点的度数为变为n-2,再也不会被删除
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2020-10-02 UVA10325 The Lottery
2020-10-02 CF979C Kuro and Walking Route