博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
06:月度开销
阅读量:5126 次
发布时间:2019-06-13

本文共 1837 字,大约阅读时间需要 6 分钟。

题目链接:http://noi.openjudge.cn/ch0111/06/

总时间限制: 1000ms 内存限制: 65536kB

描述
  农夫约翰是一个精明的会计师。他意识到自己可能没有足够的钱来维持农场的运转了。他计算出并记录下了接下来 N (1 ≤ N ≤ 100,000) 天里每天需要的开销。

  约翰打算为连续的M (1 ≤ M ≤ N) 个财政周期创建预算案,他把一个财政周期命名为fajo月。每个fajo月包含一天或连续的多天,每天被恰好包含在一个fajo月里。

  约翰的目标是合理安排每个fajo月包含的天数,使得开销最多的fajo月的开销尽可能少。

输入

  第一行包含两个整数N,M,用单个空格隔开。
  接下来N行,每行包含一个1到10000之间的整数,按顺序给出接下来N天里每天的开销。
输出
  一个整数,即最大月度开销的最小值。

样例输入

7 5
100
400
300
100
500
101
400
样例输出
500
输入输出样例说明
  若约翰将前两天作为一个月,第三、四两天作为一个月,最后三天各自作为一个月,则最大月度开销为500。其他任何分配方案都会比这个值更大。

先看AC代码:

1 #include
2 #include
3 #include
4 int check(long *a,long N,long long mid,long M); 5 int main() 6 { 7 long N,M; 8 long *a=NULL,i; 9 long long left=0,right=0,mid=0;10 int res;11 12 scanf("%ld%ld",&N,&M);13 a=(long*)malloc(N*sizeof(long));14 memset(a,0,N);15 for(i=0;i
left) left=a[i];19 right=right+a[i];20 }21 22 while(left
M) return -1;//最大月开销太小,导致分的组太多了。45 }46 else return -1;//最大月开销mid太小了,导致某些开销比较大的天单独构成一个月都不行。47 }48 if(count>M) return -1;49 else if(count<=M) return 1;//最大月开销mid太大了,导致分的组太少了50 }

思路说明:

题目的意思一定要理解清楚!!!“合理安排每个fajo月包含的天数,使得开销最多的fajo月的开销尽可能少。”   “输出一个整数,即最大月度开销的最小值。

就是把所有天划分为若干个段,先求出每个段里面的数字之和,然后统计各段累加和的最大值,这个值要尽可能小。现在要找的就是这个“累加和的最大值”   最小可以是多少。

 首先,这个题目应该二分,因为解的区间是可以明确的,可以对该区间进行二分求的真正的解。

假设二分的区间left~right,其中left是n天开销中最大的那一个数字,right是n天开销的总和。  (设想一个极限情况,要使得每一个月开销尽量小,那么每一天都单独做一个月就好啦,于是这个时候的月开销最大值就是n天中每天开销最大的值,所以left可以取max(a1,......,an)。    再设想另一种极限情况,把所有天合并在一起组成一个月,那么这个时候月开销最大值就是sum(a1,a2,......,an),所以right取值就是n天的累加和。)

需要注意的一个地方是二分循环部分的代码:

1     while(left

其中left=mid+1这里必须加上1,否则可能会死循环的。

另外,输出值是left。这个地方也要特别注意。(请自己脑补为何是left吧)

关于子函数check(),嗯代码注释讲的很清晰,不说了。

 

转载于:https://www.cnblogs.com/huashanqingzhu/p/5607503.html

你可能感兴趣的文章
发布功能完成
查看>>
【原】小程序常见问题整理
查看>>
C# ITextSharp pdf 自动打印
查看>>
【Java】synchronized与lock的区别
查看>>
django高级应用(分页功能)
查看>>
【转】Linux之printf命令
查看>>
关于PHP会话:session和cookie
查看>>
STM32F10x_RTC秒中断
查看>>
display:none和visiblity:hidden区别
查看>>
C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
查看>>
牛的障碍Cow Steeplechase
查看>>
Zookeeper选举算法原理
查看>>
3月29日AM
查看>>
利用IP地址查询接口来查询IP归属地
查看>>
HTML元素定义 ID,Class,Style的优先级
查看>>
构造者模式
查看>>
http和https的区别
查看>>
Hbuild在线云ios打包失败,提示BuildConfigure Failed 31013 App Store 图标 未找到 解决方法...
查看>>
找到树中指定id的所有父节点
查看>>
今天新开通了博客
查看>>