• HihoCoder1650 : 扁平化管理([Offer收割]编程练习赛38)(二分)


    描述

    小Hi的公司包括CEO在内一共有N名员工。这N名员工的上下级关系形成树形结构,CEO处于树根,普通员工处于叶子节点。  

    现在公司希望管理扁平化,要求树形结构中的层级不超过L层。此外,假设A是B的直接上级,那么B管理的下属数目必须少于A管理的下属数目。  

    请你判断CEO至少要管理多少名下属?

    例如N=12,L=3则CEO至少要管理4名下属。因为假设CEO只管理3名下属,则整个公司最多容纳10名员工,如下图所示:

           1
        /  |  
       2   3   4
      /  /  / 
     5  6 7 8 9 10
    

    输入

    两个整数N和L。 (2 ≤ N, L ≤ 1018)

    输出

    一个整数代表答案。

    样例输入

    12 3

    样例输出

    4

    。。没敢写二分。。。结果数据这么水。。。所以直接借的别人代码,此题意义不大。

    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    ll N,L,l,r,mid,sum,tmp,t;
    int main()
    {
        scanf("%lld%lld",&N,&L);
        if(L==2){
            printf("%lld
    ", N-1);
            return 0;
        } l=1;r=N;
        while(l<r){
            mid=(l+r)>>1;
            sum=1,tmp=1,t=max(mid-L+2,(ll)1);
            for(ll i=mid;i>=t;i--){
                if(N/i<=tmp||sum>=N){ 
                    sum=N;
                    break;
                }  tmp*=i; sum+=tmp;
            }
            if(sum>=N) r=mid;
            else  l=mid+1;
        }
        printf("%lld
    ",l);
        return 0;
    }
  • 相关阅读:
    巧用nginx屏蔽对用户不可见的文件
    关于之前我的主页页面加载很慢的问题
    学习Entity Framework 中的Code First
    理解POCO
    浅谈依赖注入
    从Microsoft.AspNet.Identity看微软推荐的一种MVC的分层架构
    ASP.NET Identity V2
    泛型约束
    C# Serializable
    C#可扩展编程之MEF学习笔记(一):MEF简介及简单的Demo
  • 原文地址:https://www.cnblogs.com/hua-dong/p/8126762.html
Copyright © 2020-2023  润新知