poj 3273

来源:互联网 发布:发展环境优化月报 编辑:程序博客网 时间:2024/06/08 17:39

题目链接:http://poj.org/problem?id=3273

题目大意:给n个数,把他们分成m组,使每组和的最大值最小

二分法。。呵呵呵呵呵呵呵呵呵呵

AC代码:

#include<stdio.h>int money[100005];int main(){    int n,m,i,num,min=0,max,a,ans,mm;    scanf("%d%d",&n,&m);    for(i=0;i<n;i++)    {        scanf("%d",&money[i]);        if(money[i]>min)min=money[i];        max+=money[i];    }    while(min<max)    {        mm=0;        ans=0;        a=(min+max)/2;        for(i=0;i<n;i++)        {            mm+=money[i];            if(mm>a){mm=money[i];ans++;}        }        if(ans<m)max=a;        else min=a+1;//printf("%d %d %d\n",min,max,ans);    }    printf("%d",min);    return 0;}
AC截图:

我对着女王大人的节操发誓,这绝对不是水题。。

0 0
原创粉丝点击