I - Monthly Expense POJ - 3273
ZYH学长非常菜,这一天他看到了这一题:
给你一个长度为N的序列,现在需要把他们切割成M个子序列(所以每一份都是连续的),使得每个子序列和均不超过某个值X
但是ZYH学长实在太菜了,这个问题困扰了他很久,你可以帮他敲个代码吗?
输入 多组输入输出
每组数据第一行是2个整数N,M(1<=M<=N<=100000),接着是N行,每行一个整数vj,1<=v[j]<=10000,表示这个序列.输出 输出X的最小值
输入样例 7 5 100 400 300 100 500 101 400
输出样例 500
思路
二分答案,在一个Judge函数进行检验答案是否正确
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;#define ll long long
const ll mxn = 200005;
const ll INF = 0x3f3f3f3f;
ll ar[mxn];
ll n,m;bool Judge(ll mid)
{ll cnt = 0;ll sum = 0;for(ll i = 1; i <= n; i ++){sum += ar[i];if(sum == mid){sum = 0;cnt ++;}else if(sum > mid){sum = ar[i];cnt ++;}}if(sum)cnt ++;return cnt > m; //这里一定 大于不能是大于等于,因为 当 cnt == m时候我们考虑能否让这个二分的答案更小呢,所以要让 jude 函数返回假值,是 r = mid - 1,来减小上限
}int main()
{/* freopen("A.txt","r",stdin); *//* freopen("Ans.txt","w",stdout); */while(scanf("%lld %lld", &n, &m)!= EOF){ll l = 0;ll r = 0;for(ll i = 1; i <= n; i ++){scanf("%lld", &ar[i]); l = max(l, ar[i]);r += ar[i];}ll ans = l; while(l <= r) {ll mid = (l + r) >> 1;if(Judge(mid)){l = mid + 1;}else{ans = mid;r = mid - 1;}}printf("%lld\n", ans);}return 0;
}
总结:做了,好几遍都没有能懂弄明白好 二分时的调整上下限的条件,自己应该反思一下
I - Monthly Expense POJ - 3273相关推荐
- Monthly Expense POJ - 3273(二分最大值最小化)
Farmer John is an astounding accounting wizard and has realized he might run out of money to run the ...
- Monthly Expense【二分】
B - Monthly Expense POJ - 3273 Farmer John is an astounding accounting wizard and has realized he mi ...
- 二分搜索 POJ 3273 Monthly Expense
题目传送门 1 /* 2 题意:分成m个集合,使最大的集合值(求和)最小 3 二分搜索:二分集合大小,判断能否有m个集合. 4 */ 5 #include <cstdio> 6 #incl ...
- 【POJ 3273】 Monthly Expense (二分)
[POJ 3273] Monthly Expense (二分) 一个农民有块地 他列了个计划表 每天要花多少钱管理 但他想用m个月来管理 就想把这个计划表切割成m个月来完毕 想知道每一个月最少花费多少 ...
- USACO Monthly Expense
洛谷 P2884 [USACO07MAR]每月的费用Monthly Expense https://www.luogu.org/problem/P2884 POJ 3273 Monthly Expen ...
- bzoj1639[Usaco2007 Mar]Monthly Expense 月度开支*
bzoj1639[Usaco2007 Mar]Monthly Expense 月度开支 题意: n天,每天有一个花费,现在要将它们分成连续的m段,要求所有段的总花费的最大值最小.求这个值.n,m≤10 ...
- BZOJ 1639: [Usaco2007 Mar]Monthly Expense 月度开支( 二分答案 )
直接二分答案然后判断. ----------------------------------------------------------------------------- #include&l ...
- bzoj 1639: [Usaco2007 Mar]Monthly Expense 月度开支(二分)
1639: [Usaco2007 Mar]Monthly Expense 月度开支 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1057 Solve ...
- Monthly expense(二分)
又又又又是二分啦 憨憨桃子又来啦 题目链接:monthly expense 题目描述: Farmer John is an astounding accounting wizard and has r ...
最新文章
- 【工具软件】webstorm配置
- 06 Scratch等级考试(一级)模拟题
- spring 自定义标签的实现
- Linux运行jmeter
- datatables每页显示数据刷新后不变_2019北京积分落户名单数据的一些分析
- 容器编排技术 -- Kubernetes kubectl create 命令详解
- 【Spring】Spring NoSuchMethodError okhttp3.internal.platform.Platform.log(ILjava/lang/String;Ljava/lan
- 在pcduino开发板上写驱动控制板载LED的闪烁
- Linux下定时切割nginx日志并删除指定天数前的日志记录
- android中的progressbar,Android中ProgressBar用法简单实例
- 工业相机基础知识五十问
- CSS单位:em、rem、%、vh、vw、vmin、vmax
- android botton控件基本属性
- 利用Python自动生成及发送Excel报表
- JS逆向-某乎x-zse-96参数(2023-2-6)
- 非齐次线性方程的通解和特解
- 【buuctf】cscctf_2019_qual_babyheap
- NLP-神经语言模型:文本生成
- 解决Typecho站点Sitemap插件不可用问题
- 所有神经网络的特点及优缺点分析总结