POJ 3273 二分答案
2024-08-31 14:03:06
思路:二分答案经典题吧。。。。注意边界就OK了
//By SiriusRen
#include <cstdio>
#include <algorithm>
using namespace std;
int n,m,a[100050],ans;
bool check(int x){
int jy=0,temp=0;
for(int i=1;i<=n;i++){
if(a[i]+jy>x){
jy=0;
temp++;
if(temp>m)return 0;
}
jy+=a[i];
if(temp>=m||jy>x)return 0;
}
return 1;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
int Left=0,Right=0x3fffffff;
while(Left<=Right){
int Mid=(Left+Right)>>1;
if(check(Mid))Right=Mid-1,ans=Mid;
else Left=Mid+1;
}
printf("%d\n",ans);
}
最新文章
- adaboost原理与实践
- php解析json数组
- KVM地址翻译流程及EPT页表的建立过程
- Java Interface是存放常量的最好地方吗?(转)
- Stm32高级定时器(一)
- JavaScript 基本类型值-String类型
- ajax VS websocket
- sql 注入命令大全
- px,em,rem,vw单位在网页和移动端的应用
- oracle存储过程的创建和使用
- Defeat the Enemy UVALive - 7146
- dom解析xml随笔
- unity的三种update
- element ui 栅格布局
- SSAS多维数据集以及维度的建立
- html中可以自定义属性,,,妈的竟然才知道..
- Loj10172 涂抹果酱
- HttpClient 解说 (1) 基础
- Windows和Linux系统下,虚拟环境安装的全面说明和详细步骤
- 通过浏览器查看nginx服务器状态配置方法