我的二分之路(1)
来源:互联网 发布:java中两个list拼接 编辑:程序博客网 时间:2024/05/17 00:00
题目
拿到题目我最先想到的是暴利枚举区间搜索满足条件的最小值,然而看了下数据范围,知道这不是一个能够通过暴力解决的题目。必须对其进行优化,但是题目条件有每天的金额ai,fajomonths数量m;这样我们稍微考虑下就知道可以对每个fajomonths的金额通过二分进行枚举(每个fajomonths的金额必定在最大的a[i]跟所有金额之和sum之间),然后判断能否将所有的数据分割成m份,如此实现二分。
#include<iostream>#include<string.h>#include<math.h>#include<cstdio>#include<algorithm>#define MAX 100010using namespace std;int a[MAX];int judge(int mid,int n,int m){ int sum=0; int cot=1; for(int i=1;i<=n;i++) { if(sum+a[i]<mid) { sum+=a[i]; } else { sum=a[i]; cot++; } } return cot;}int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { int r=0; int l=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); r+=a[i]; if(l<a[i]) l=a[i]; } int mid; while(l<=r) { mid=(l+r)/2; if(judge(mid,n,m)<=m) r=mid-1; else l=mid+1; } cout<<mid<<endl; }}
0 0
- 我的二分之路(1)
- 我的ACM之二分查找
- 我的二分查找法(递归)
- 我的Java之路(1)
- 我的游戏之路(1)
- 我的站长之路(1)
- 我的程序员之路(1)
- 我的业务员之路(1)
- [Wf2014]Metal Processing Plant(金属加工厂) 之这是小少主我用二分答案用得最6的一次(所有数据共1S)
- 我的Java开发学习之旅------>Java经典排序算法之二分插入排序
- ACM之路(1)——对二分及三分的研究
- 我的程序员的成长之路(1)
- 二分图之二分图的判定
- 我的java学习之路(1)
- 我的顾问咨询之路(1)
- 我的ASP.NET学习之路(1)
- 我的css之路(总结1)
- 我的计算机成长之路(1)
- Django 学习 1 基础概念
- ssh-agent 与 ssh-add 基本用法
- UITabBar和UINavigation碰到的几个问题 (系统颜色)
- 计算两段yuv格式视频流中每一帧的psnr值
- 关于数据保存的四中方式
- 我的二分之路(1)
- SylixOS的BSP开发实例之S3C2416 【第五篇】S3C2416 启动模式之 NandFlash
- 禅道安装与升级总结
- oracle model 子句
- 第一次使用Android Studio时你应该知道的一切配置
- Objective-C学习笔记(二十四)——成员变量的访问修饰符学习
- Spring(八)编码剖析@Resource注解的实现原理
- Android—开发自学历程(1)-Activity(3)-第一个小程序
- [LeetCode] Lowest Common Ancestor of a Binary Search Tree