小明的花费预算
2014-02-17 21:20
218 查看
小明的花费预算
所以让你把这n个月分成正好m组。每个组至少包含一个月,每组之中的月份必须是连续的,请你为他分组,使得分得的组中最大的总花费最小。
接下来的n行是连续n个月的花费,第i+1行是第i个月的花费。
分析!!!
利用二分的方法因为最小也是全部每次花费的最大值,最大也超不过它们的和,因此low和high就有了,在选取符合情况的mid,从第一个开始向后加,如果当和>mid,就就从下一个在开始算,并且这种情况出现一次就使s++;最后判断是否s==m;如果满足就继续向下,因为可能满足的情况有多个,但要选取个最接近的,如果是s<m,就说明组数分多了,说明mid小了,如果s>m,就说明组数大了,mid大了!
Time Limit: 1000MS Memory limit: 65536K
题目描述
小明终于找到一份工作了,但是老板是个比较奇怪的人,他并不是按照每月每月的这样发工资,他觉得你想什么时候来取都可以,取的是前边连续几个月中没有取的工资,而小明恰好是一个花钱比较大手大脚的人,所以他希望每次取得钱正好够接下来的n个月的花费。所以让你把这n个月分成正好m组。每个组至少包含一个月,每组之中的月份必须是连续的,请你为他分组,使得分得的组中最大的总花费最小。
输入
第一行是两个整数,n(1 ≤ n ≤ 100,000)和m (1 ≤ m ≤ n)接下来的n行是连续n个月的花费,第i+1行是第i个月的花费。
输出
输出满足最大的总花费最小的那个组的总花费。示例输入
5 3 3 2 9 4 1
示例输出
9
提示
将5个月分为3组,第一组(3,2),第二组(9),第三组(4,1),第二组的总花费最大为9,若按其他的方式分,花费最大的那一组的总花费将>=9.分析!!!
利用二分的方法因为最小也是全部每次花费的最大值,最大也超不过它们的和,因此low和high就有了,在选取符合情况的mid,从第一个开始向后加,如果当和>mid,就就从下一个在开始算,并且这种情况出现一次就使s++;最后判断是否s==m;如果满足就继续向下,因为可能满足的情况有多个,但要选取个最接近的,如果是s<m,就说明组数分多了,说明mid小了,如果s>m,就说明组数大了,mid大了!
#include<stdio.h> #include<string.h> #include<stdlib.h> int dp[110000]; int main() { int n,m,i,j; while( ~scanf("%d%d",&n,&m)) { int maxx=0,s=0; for(i=0; i<n; i++) { scanf("%d",&dp[i]); s+=dp[i]; if(dp[i]>maxx) maxx=dp[i]; } int low=maxx,high=s,mid; while(low<=high) { int sum=0; int num=1; mid=(low+high)/2; for(i=0; i<n; i++) { if(sum+dp[i]<=mid) sum+=dp[i]; else { sum=dp[i]; num++; } } if(num>m) { low=mid+1; } if(num<=m) high=mid-1; } printf("%d\n",mid) ; } return 0; }
相关文章推荐
- SDUT 2778 小明的花费预算 (二分答案) -- 解题报告
- SDUT 2778 小明的花费预算
- SDUT 2778 小明的花费预算 二分
- SDUT 小明的花费预算 2778(二分)
- 寒假训练--二分哈希--小明的花费预算
- SDUT2778 小明的花费预算
- sdut2778 小明的花费预算(二分)
- [2778]小明的花费预算 (二分查找)SDUT
- [2778]小明的花费预算 (二分查找)SDUT
- SDUT 2778-小明的花费预算(二分答案)
- 小明历险记:规则引擎drools教程一
- 1976:搬运工小明
- NYOJ 469 擅长排列的小明 II
- 邮票分你一半小珂最近收集了些邮票,他想把其中的一些给他的好朋友小明。每张邮票上都有分值,他们想把这些邮票分成两份,并且使这两份邮票的分值和相差最小(就是小珂得到的邮票分值和与小明的差值最小),现在每张
- OJ 2512: 小明的惩罚
- 资源预算和项目约束
- BZOJ[2464]中山市选[2009]小明的游戏 SPFA
- 南阳理工学院OJ 擅长排列的小明
- codevs2605小明学数数(异或)
- 小慧过生日,小明要给小慧买鲜花作为礼物,每枝红玫瑰5元钱,满5枝赠送1枝,满20枝赠送5枝,小明一共有n(n>10)元钱,为了让小慧高兴,小明希望能买到最多的红玫瑰,请你帮小明明算算,他最多能买到多少