CF23 B. Party

Problem - 23B - Codeforces

 

题意:

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,再也不会被删除

 

上一篇:Linux后台运行任务 nohup &


下一篇:题解 party?