1639: [Usaco2007 Mar]Monthly Expense 月度开支
1639: [Usaco2007 Mar]Monthly Expense 月度开支
Time Limit: 5 Sec Memory Limit: 64 MB
Submit: 593 Solved: 295
Description
Farmer John是一个令人惊讶的会计学天才,他已经明白了他可能会花光他的钱,这些钱本来是要维持农场每个月的正常运转的。他已经计算了他以后N(1<=N<=100,000)个工作日中每一天的花费moneyi(1<=moneyi<=10,000),他想要为他连续的M(1<=M<=N)个被叫做“清算月”的结帐时期做一个预算,每一个“清算月”包含一个工作日或更多连续的工作日,每一个工作日都仅被包含在一个“清算月”当中。 FJ的目标是安排这些“清算月”,使得每个清算月的花费中最大的那个花费达到最小,从而来决定他的月度支出限制。
Input
第一行:两个用空格隔开的整数:N和M
第2..N+1行:第i+1行包含FJ在他的第i个工作日的花费
Output
第一行:能够维持每个月农场正常运转的钱数
Sample Input
7 5 100 400 300 100 500 101 400
Sample Output
500 输入细节 这里有7个工作日来被5个“清算月”划分。他花费100,400,100,500,101,和400元在他的每个工作日。 输出细节 如果FJ安排他的月度预算,他将把前两天划分在一个月中,把第三天、第四天划分在一个月当中,最后的三个工作日各自在一个月当中,所以他一个月最多花费500元,其他的方法总是得出一个较大的结果。 100 400 300 100 500 101 400 每天花费 ---1--- ---2--- -3- -4- -5- 月度标号 500 400 500 101 400 月度花费
HINT
Source
题解:坑坑坑坑坑——题目中写的是按照题目的顺序来划分“清算月”,可是我还是很逗比的排了个序,然后WA。。。这题要说也没啥说的,就是一道经典的二分答案题(解具有单调性的题目均可),先确定一个答案的上下限,然后开始先二分+判定是否可行,然后没有然后了。。。
1 var
2 i,j,k,l,m,n,x,y,t:longint;
3 a:array[0..100000] of longint;
4 procedure sort(l,r:longint);
5 var
6 i,j,x,y:longint;
7 begin
8 i:=l;j:=r;
9 x:=a[(l+r) div 2];
10 repeat
11 while a[i]<x do inc(i);
12 while a[j]>x do dec(j);
13 if i<=j then
14 begin
15 y:=a[i];
16 a[i]:=a[j];
17 a[j]:=y;
18 inc(i);dec(j);
19 end;
20 until i>j;
21 if i<r then sort(i,r);
22 if l<j then sort(l,j);
23 end;
24 function check(x:longint):boolean;
25 var
26 i,j,k,l:longint;
27 begin
28 l:=0;k:=0;
29 for i:=1 to n do
30 begin
31 l:=l+a[i];
32 if l>x then
33 begin
34 inc(k);
35 l:=a[i];
36 end;
37 if l>x then exit(false);
38 end;
39 exit(k<m);
40 end;
41 begin
42 readln(n,m);
43 for i:=1 to n do readln(a[i]);
44 //sort(1,n);
45 x:=a[n];y:=0;
46 for i:=n downto m do y:=y+a[i];
47 while x<y do
48 begin
49 t:=(x+y) div 2;
50 if check(t) then
51 y:=t
52 else
53 x:=t+1;
54 end;
55 writeln(x);
56 end.
57
- 分类模型的性能评估——以SAS Logistic回归为例: 混淆矩阵
- R语言,你要怎样画地图?
- R语言绘制中国地图,并展示流行病学数据
- 使用R语言构造投资组合
- R语言构建追涨杀跌量化交易模型
- 美团点评境外度假团队前端项目开发实践总结
- 在jfinal中使用druid,并配置查看权限
- java中遇到过的String的一些特性
- Kaggle案例——使用scikit-learn解决DigitRecognition问题
- 基于Kaggle数据的词袋模型文本分类教程
- javascript中遇到的字符串对象处理
- 传统企业站开发 - 页面布局
- AngularJS中使用service,并同步数据
- 2016.05 第四周 群问题分享
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 要想精通java,你必须得知道java的内存模型,不忽悠
- java类加载机制,再也不怕面试官的刁难
- 前端科普系列(4):Babel —— 把 ES6 送上天的通天塔
- JVM技术总结之五——JVM逃逸分析
- React源码解读【二】更新创建
- JVM技术总结之六——JVM的锁优化
- 每日两题 T12
- 删除列中的 NULL 值
- Linux生产环境CPU使用率100%,教你定位到具体函数
- Nginx技术总结之二——Nginx进程模型
- 「PostgreSQL技巧」Citus实时执行程序如何并行化查询
- Nginx技术总结之四——集群和负载均衡的算法与实现
- SQL 找出 100 以内的质数
- SQL 获取最长的日期序列
- Lucene基本知识入门