洛谷P2884 [USACO07MAR]Monthly Expense S

题目描述
Farmer John is an astounding accounting wizard and has realized he might run out of money to run the farm. He has already calculated and recorded the exact amount of money (1 ≤ moneyi ≤ 10,000) that he will need to spend each day over the next N (1 ≤ N ≤ 100,000) days.

FJ wants to create a budget for a sequential set of exactly M (1 ≤ M ≤ N) fiscal periods called “fajomonths”. Each of these fajomonths contains a set of 1 or more consecutive days. Every day is contained in exactly one fajomonth.

FJ’s goal is to arrange the fajomonths so as to minimize the expenses of the fajomonth with the highest spending and thus determine his monthly spending limit.

给出农夫在n天中每天的花费,要求把这n天分作m组,每组的天数必然是连续的,要求分得各组的花费之和应该尽可能地小,最后输出各组花费之和中的最大值

输入格式
Line 1: Two space-separated integers: N and M

Lines 2…N+1: Line i+1 contains the number of dollars Farmer John spends on the ith day

输出格式
Line 1: The smallest possible monthly limit Farmer John can afford to live with.

输入输出样例
输入 #1复制
7 5
100
400
300
100
500
101
400
输出 #1复制
500
说明/提示
If Farmer John schedules the months so that the first two days are a month, the third and fourth are a month, and the last three are their own months, he spends at most $500 in any month. Any other method of scheduling gives a larger minimum monthly limit.

题目大意:有n个数,要分成m份,每份的和要尽可能小,求这个情况下和最大的一份的和。

解题思路:
二分+贪心

代码如下:

#include <iostream>
using namespace std;
typedef long long LL;
int n, k;
const int N = 100010;
int a[N];bool check(int mid) {int p = 1;LL sum = 0;for (int i = 0; i < n; i++) {if (a[i] + sum <= mid) {sum += a[i];} else {p++;sum = a[i];if (sum > mid)return false;}}return p <= k;
}int main() {LL sum = 0;cin >> n >> k;for (int i = 0; i < n; i++) {cin >> a[i];sum += a[i];}LL l = 1, r = sum;while (l < r) {LL mid = l + r >> 1;if (check(mid)) {r = mid;} else {l = mid + 1;}}cout << r << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++中计算2得n次方_七上,一元一次方程,知识点综合学霸笔记在手

一元一次方程的解定义&#xff1a;使一元一次方程左右两边相等的未知数的值叫做一元一次方程的解&#xff0e;把方程的解代入原方程&#xff0c;等式左右两边相等&#xff0e;解一元一次方程(1)解一元一次方程的一般步骤&#xff1a;去分母、去括号、移项、合并同类项、系数化为…

abp vnext2.0核心组件之DDD组件之实体结构源码解析

接着abp vnext2.0核心组件之模块加载组件源码解析和abp vnext2.0核心组件之.Net Core默认DI组件切换到AutoFac源码解析集合.Net Core3.1,基本环境已经完备,接下去就是构建领域层,vnext整个领域层大致分为聚合根、实体、值对象、事件实体、仓储、服务等等,内容较多,所以我打算分…

[蓝桥杯2017初赛]方格分割-dfs+思维

解题思路&#xff1a; 这是大佬的思路&#xff1a; 这道题可能上来会想到搜格子&#xff0c;但搜格子意味着更高的复杂度以及判连通的需要&#xff0c;本题似乎搜索要切开的边更优。由题意&#xff0c;这一条切割线必定经过图的中心点&#xff0c;那么我们一旦确定了半条到达边…

数据结构---Kruskal最小生成树

数据结构—Kruskal最小生成树 原理&#xff1a;参考趣学数据结构 代码&#xff1a; 快速排序&#xff1a; #pragma once #define elemType int typedef struct vER {elemType u;elemType v;int weight; }VER; int quickSort(VER a[], int l, int h) {//快速排序int i l, j…

电脑打字手指正确姿势_写字坐姿不正确的难题,已被家长攻克,果然高手在民间...

全文1000字&#xff0c;预计阅读需7分钟​进入小学&#xff0c;老师会教一年级学生如何坐正&#xff0c;如何正确拿笔&#xff0c;但由于学生人数较多&#xff0c;加之学习课本知识等&#xff0c;老师很难将每一个学生的坐姿都教得很好。什么样的坐姿才是正确的&#xff1f;怎样…

云原生 - Istio可观察性之监控(四)

作者&#xff1a;justmine头条号&#xff1a;大数据与云原生微信公众号&#xff1a;大数据与云原生创作不易&#xff0c;在满足创作共用版权协议的基础上可以转载&#xff0c;但请以超链接形式注明出处。为了方便阅读&#xff0c;微信公众号已按分类排版&#xff0c;后续的文章…

word List 09

word List 09 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢

[蓝桥杯2016决赛]一步之遥-枚举

题目描述 从昏迷中醒来&#xff0c;小明发现自己被关在X星球的废矿车里。矿车停在平直的废弃的轨道上。 他的面前是两个按钮&#xff0c;分别写着“F”和“B”。 小明突然记起来&#xff0c;这两个按钮可以控制矿车在轨道上前进和后退。按F&#xff0c;会前进97米。按B会后退1…

phpword 模板 多页_高中数学:各题型答题模板,吃透,灵活运用数学公式,解题更快!...

暑假已经接近尾声&#xff0c;部分地区已经开学了。最近有同学留言说&#xff0c;高三了&#xff0c;数学成绩很不好&#xff0c;该怎么办&#xff1f;数学拉分很多。针对高三复习&#xff0c;大家一定要注意题型的积累&#xff0c;每个题型都是有相应的答题模板&#xff0c;积…

使用.NET Core优雅获取并展示最新疫情数据

前言新型冠状病毒的出现&#xff0c;着实让人紧张。我每天一大早都会去查看今天的最新数据&#xff0c;可是每次的数据都挺让人揪心的。今天突然间很想看看过去的历史的数据&#xff0c;结果查了很多资料都不是很全。反正国家让我们待在家里做贡献&#xff0c;那我们也可以多做…

数据结构---排序算法的总结

数据结构—排序算法的总结 分类 冒泡排序&#xff0c;时间复杂度O(n x n)&#xff0c;空间复杂度O(1)&#xff0c;稳定 简单选择排序&#xff0c;时间复杂度O(n x n),空间复杂度O(1)&#xff0c;不稳定 希尔排序&#xff0c;时间复杂度O(n^1.3),空间复杂度O(1)&#xff0c;不…

[蓝桥杯2018决赛]最大乘积-dfs

题目描述 把 1~9 这9个数字分成两组&#xff0c;中间插入乘号&#xff0c; 有的时候&#xff0c;它们的乘积也只包含1~9这9个数字&#xff0c;而且每个数字只出现1次。 比如&#xff1a; 984672 * 351 345619872 98751 * 3462 341875962 9 * 87146325 784316925 … 符合这种…

linux源码_从linux源码看epoll及epoll实战揭秘

从linux源码看epoll前言在linux的高性能网络编程中&#xff0c;绕不开的就是epoll。和select、poll等系统调用相比,epoll在需要监视大量文件描述符并且其中只有少数活跃的时候&#xff0c;表现出无可比拟的优势。epoll能让内核记住所关注的描述符&#xff0c;并在对应的描述符事…

《ASP.NET Core 微服务实战》-- 读书笔记(第9章)

第 9 章 微服务系统的配置微服务系统中的配置需要关注更多其他方面的因素&#xff0c;包括&#xff1a;配置值的安全读写值变更的审计能力配置信息源本身的韧性和可靠性少量的环境变量难以承载大型、复杂的配置信息应用要决定是否支持配置值的在线更新和实时变更&#xff0c;还…

数据结构---简单插入排序

数据结构—简单插入排序 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> void simpleInsertSort(int a[], int length) {//简单插入排序int j;for (int i 2; i < length; i) {//从第二个元素开始比较插入if (a[i]…

[蓝桥杯2018初赛]小朋友崇拜圈

题目描述 班里N个小朋友&#xff0c;每个人都有自己最崇拜的一个小朋友&#xff08;也可以是自己&#xff09;。 在一个游戏中&#xff0c;需要小朋友坐一个圈&#xff0c; 每个小朋友都有自己最崇拜的小朋友在他的右手边。 求满足条件的圈最大多少人&#xff1f; 小朋友编号为…

python做接口自动化如何输出测试报告-python生成接口自动化测试报告模版

自动化测试报告&#xff1a;&test_data被测版本&#xff1a;&version 成功&#xff1a;&pass 失败&#xff1a;&fail 错误&#xff1a;&error 最后时间&#xff1a;&lasttime记录编号: 记录编号: 记录编号: 记录编号: 记录编号: 记录编号: 记录编号: 记…

前端 JS/TS 调用 ASP.NET Core gRPC-Web

前言在上两篇文章中&#xff0c;介绍了ASP.NET Core 中的 gRPC-Web 实现 和 在 Blazor WebAssembly 中使用 gRPC-Web&#xff0c;实现了 Blazor WebAssembly 调用 ASP.NET Core gRPC-Web。虽然 ASP.NET Core 中的 gRPC-Web 实现目前还是试验性项目&#xff0c;但是鉴于它在生态…

数据结构---哈夫曼树

数据结构—哈夫曼树 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 #define INF 2^31-1 typedef struct fNode {//哈夫曼树中每个节点的信息int c;//字符int parent;//父节点&#xff0c;左右孩子&am…

[蓝桥杯]错误票据---stringstream应用举例

题目描述 某涉密单位下发了某种票据&#xff0c;并要在年终全部收回。 每张票据有唯一的ID号。全年所有票据的ID号是连续的&#xff0c;但ID的开始数码是随机选定的。 因为工作人员疏忽&#xff0c;在录入ID号的时候发生了一处错误&#xff0c;造成了某个ID断号&#xff0c;另…