zoukankan      html  css  js  c++  java
  • poj 3273(二分)

    http://acm.pku.edu.cn/JudgeOnline/problem?id=3273

    把N天分为M段连续区域,求M段区域中的最小最大值。

    其实自己还没怎么完全理解二分的实现,下面的代码是看别人写的。惭愧。

    #include<stdio.h>
    int main()
    {
    int N,M,max,min,mid,i,k,sum,money[100001];
    while(scanf("%d%d", &N, &M)!=EOF)
    {
    max
    =0;
    min
    =-1;
    for(i=1; i<=N; i++)
    {
    scanf(
    "%d", &money[i]);
    max
    +=money[i];
    if(min<money[i]) min=money[i];
    }
    //max为所有money的总和
    //min为money里的最大值
    while(min<max)
    {
    mid
    =(min+max)>>1;
    sum
    =0;
    k
    =0;
    for(i=1; i<=N; i++)
    {
    sum
    +=money[i];
    if(sum>mid)
    {
    sum
    =money[i];
    k
    ++;
    }
    }
    //重新分配上下界
    if(k<M) max=mid;
    else min=mid+1;
    }
    printf(
    "%d\n", max);
    }
    return 0;
    }
  • 相关阅读:
    ASP.NET线程相关配置
    ECshop 数据库表结构
    PHPnow 升级后 PHP不支持GD、MySQL
    C# 创建iis站点以及IIS站点属性,iis不能启动站点
    CSPS_107
    CSPS_106
    CSPS_105
    CSPS_104
    CSPS_103
    CSPS_102
  • 原文地址:https://www.cnblogs.com/submarinex/p/1941239.html
Copyright © 2011-2022 走看看