zoukankan      html  css  js  c++  java
  • 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,再也不会被删除

    作者:xxy
    本文版权归作者和博客园共有,转载请用链接,请勿原文转载,Thanks♪(・ω・)ノ。
  • 相关阅读:
    使用docker-client创建NFS挂载
    递归遍历JSON树
    electron-builder中NSIS相关配置
    nodejs调试基础【转载】
    node-java模块
    NodeJs中使用jQuery?
    如何实现electron多页面间通信
    转载:【知乎Live】狼叔:如何正确的学习Node.js
    js对象替换键值名称
    Eclipse 调试 darknet 代码
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/15362326.html
Copyright © 2011-2022 走看看