zoukankan      html  css  js  c++  java
  • Codeforces D

    D - High Load

    因为要出口节点距离最小,所以除了根节点(根节点连接k个儿子)其他节点的儿子只能有一个,其他情况下的距离都比这个长,因为如果不是这样,那么根节点连接的子树数量就小与k,那么每个子树的长度就更长了(显然,画图可证)。

    n-1个节点平均分配到k条子树上,如果画图的话,是这样的

     

    只要讨论一下最后一层的的个数((n-1)%k)情况即可,连接方式也如上图。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int n,k;
        while(cin>>n>>k)
        {
            int m=(n-1)/k;
            if((n-1)%k==0)
            {
                cout<<m*2<<endl;
            }
            else if((n-1)%k==1)
            {
                cout<<m*2+1<<endl;
            }
            else cout<<m*2+2<<endl;
            int i=0;
            for(i=2;i<=k+1&&i<=n;i++)cout<<i<<' '<<1<<endl;
            while(i<=n)
            {
                cout<<i<<' '<<i-k<<endl;
                i++;
            }
        }
        return 0;
    }
  • 相关阅读:
    理解Restful 架构
    CLR 异步函数
    CLR 线程池
    CLR 线程基础
    CLR 序列化
    CLR 垃圾回收和应用程序集
    CLR的垃圾回收机制
    定制特性
    枚举和迭代器
    接口
  • 原文地址:https://www.cnblogs.com/widsom/p/7156308.html
Copyright © 2011-2022 走看看