zoukankan      html  css  js  c++  java
  • 二分查找扩展——pku3273

    题目要求如何将月份分组就可以 使月份中的最大值最小

    二分查找

    上届:sum(a[i])

    下届:max(a[i])

    while(l<=r)

    {

      if(求的组别大于 题目要求)

        l=mid+1;

      else

        r=mid-1;

      ....统计 (随时记录符合条件的月份中的最大值 的最小值)

    }

    注意 count<=m时就可以更新,count<m时一定可以分成m组

    View Code
    #include<stdio.h>

    int a[100009];
    int rmax;

    int zu(int max,int n)//可以分成几组
    {
    int i;
    int add=1,t=0;
    rmax
    =0;
    for(i=0;i<n;i++)
    {
    if((t+a[i])<=max)
    {
    t
    +=a[i];

    }
    else
    {
    add
    ++;
    t
    =a[i];
    }
    if(t>rmax)
    rmax
    =t;
    }
    return add;
    }

    int main()
    {
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
    int i,all=0,max=0;
    for(i=0;i<n;i++)
    {
    scanf(
    "%d",&a[i]);
    if(max<a[i])
    max
    =a[i];

    all
    +=a[i];
    }

    int l=max,r=all,mid=(l+r)/2;
    int count=zu(mid,n);
    int min=999999999;
    if(count<=m)
    if(min>rmax)min=rmax;


    while(l<=r)
    {
    if(count>m)
    {
    l
    =mid+1;
    }
    else
    {
    r
    =mid-1;
    }

    mid
    =(l+r)/2;
    count
    =zu(mid,n);

    if(count<=m)//分组小于要求时就可以更新
    if(min>rmax)min=rmax;
    }

    printf(
    "%d\n",min);
    }
    }

      

  • 相关阅读:
    LVS NAT模式
    lvs部署-DR模式
    Lvs原理
    iOS判断UIScrollView的滚动方向
    Swift开发必备技巧:内存管理、weak和unowned
    Swift2.0异常处理
    Swift中的延迟加载(懒加载)
    Swift和OC混编时, 关于@objc的作用
    Swift函数的定义建议
    Swift隐式可选型简单介绍
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2158337.html
Copyright © 2011-2022 走看看