• 任务分配book


    上次写某道findpath的时候,没有写个二分答案没有过,之后就发现自己貌似一开始学分治那一块的时候就没有把二分学好....就打算重新回顾一下

    这道题还算水,就是太久没有写模拟wa了3次....对自己简直是无语,倍感基础弱没话说..
    不过算是清楚二分的原理,二分还算是比较好理解的了,可以说是把一个很大的东西不停的分成二份...
    就最近学的来看,基本上都会用到这样的代码:(大概是这样)
    int l=0,r=max,mid;
    
    while(){
       mid=(l+r)>>1;
       if (mid.....) l=....;
          else       r=....;
    }
    

     

     就这一道题来说的话,就是二分答案+模拟
                                        任务分配
    【问题描述】
    图书馆按顺序排列有N本书需要维护,每本书的总页数不相同。现有M位员工。可以给每个员工分配连续的一段书籍,让他进行维护。现在的问题是,怎么样分配,工作任务最重(需要维护的页数最多)的人维护的页数尽量少。 
    
    【输入格式】
    第一行两个数,N、M。接下来N行,每行一个整数,表示一本书的页数。
    
    【输出格式】
    任务最重的人最少需要维护的页数。
    
    【输入样例】
    5 3
    3
    2
    4
    1
    5
    
    【输出样例】
    5
    
    【数据范围】
    20%数据:N<=1000
    30%数据:N<=10000
    100%数据::N<=100000,M<=N。一本书的页数最多10000。
    题目
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int a[100001],n,m;
    bool check(int x){
    int now=x,tot=0;
        for (int i=0;i<n;i++){
          if (x<a[i]) return false;
          if (now-a[i]<0){
            now=x;
            tot++;
            now-=a[i];
            if (tot==m) return false;
          }
          else
            now-=a[i];
        }
        return true;
    }
    int main(){
        int i,j,s,t,tot=0;
        freopen("book.in","r",stdin);freopen("book.out","w",stdout);
        
        scanf("%d%d",&n,&m);
        for (i=0;i<n;i++){
            scanf("%d",&a[i]);
            tot+=a[i];
        }
        int r=tot,l=0;
        while (l<=r){
            int mid=(l+r)>>1;
            if(check(mid)) r=mid-1;
                      else l=mid+1;
        }
        printf("%d",l);
        return 0;
    }
    source
    哦。。对了,还有自己代码的习惯不太好,注意一下嗯
     


  • 相关阅读:
    ASP.NET 2.0 X64 引起的问题
    .net 俱乐部7月份资料下载 .net 开源项目
    用schemaSpy制作数据库文档
    IbatisNet支持2.0的版本Release 发布了
    Introduction to Model Driven Development with AndroMDA
    开放源代码与.NET应用程序平台的性能测试
    sqlserver 2000/2005 Ambiguous column error错误解决办法
    ASP.NET 2.0 中 Web 事件
    使用asp.net 2.0的CreateUserwizard控件如何向自己的数据表中添加数据
    Working with Windows Workflow Foundation in ASP.NET
  • 原文地址:https://www.cnblogs.com/polebug/p/3653243.html
Copyright © 2020-2023  润新知