• HDU2280 Adding Edges


      题目的意思求标号为1的点的最小可能的度,即在满足给定的条件下,如何连线能够使得连到1上的边尽可能的小。

      由于题中要求  ① degree(i) != degree(j), (i != j, 1 <= i, j <= N).   所以每个点的度一定会是 1,2,3,4 ... N 分布,产生一个度为N的点,那么该点就要与其余N - 1个点以及标号为 “A”的点相连,一次这样的操作后,假设该次选择的点为X,那么N个点中除了 度为N的 X点,度为 1的与 X 相对的点 外,其余所有点的度均为 2,此时我们要选取出度为N-1的点,由于度为1的点(仅存的度为1的点)不能够改变它,所以下一步要在度为2的点中选取一个点添加到同为度为2的 N - 3个点的连线,这时又会产生度为 3 和 度为 N - 1的一对点,一直进行下去,由于“A”点不能够占用度数,所以1也就留到了最后才来连,这样产生的才是合法的,同时这个时候1的度也是最小的,为 ( N + 1 )/ 2。

      代码如下:

    #include <cstdlib>
    #include
    <cstring>
    #include
    <cstdio>
    using namespace std;

    void getint( int &t )
    {
    char c;
    while( c = getchar(), c < '0' || c > '9' ) ;
    t
    = c - '0';
    while( c = getchar(), c >= '0'&& c <= '9' )
    {
    t
    = t * 10 + c - '0';
    }
    }

    int main()
    {
    int N;
    while( getint( N ), N )
    {
    printf(
    "%d\n", ( N + 1 ) >> 1 );
    }
    return 0;
    }

      

  • 相关阅读:
    Yeelink 初探
    Macbook被格式化之后
    linux 代码分析工具 gprof
    Writing Clean Code 读后感
    0 bug 读后感
    STM32 控制红外线收发
    HomeKit 与老旧设备
    树莓派控制红外线收发
    苹果没法删除部分照片的问题
    route处理
  • 原文地址:https://www.cnblogs.com/Lyush/p/2155509.html
Copyright © 2020-2023  润新知