【思路分析】

比赛的时候想到了用二分+贪心,二分的部分与贪心的部分也写对了,但是由于数据范围未看没有开long long,且二分左端点赋值过小导致WA掉

正解:二分+贪心

二分代码的长度,贪心判断能否达到,算法上没什么好说的,主要是细节处理上

关于细节处理:

  1. 开long long
  2. 右端点数据可以开的尽量大一点
  3. 输出-1的点要特别小心

代码:

#include<cstdio>
#include<cmath>
#include<cctype>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
using namespace std;
inline long long read()
{
char chr=getchar();
long long f=1,ans=0;
while(!isdigit(chr)) {if(chr=='-') f=-1;chr=getchar();}
while(isdigit(chr)) {ans=(ans<<1)+(ans<<3)+chr-'0';chr=getchar();}
return ans*f;
}
long long n,m,a[100005],l=1,r,mid,ans1=-1,ans2=-1;
inline long long check(long long x){//贪心判断解是否可行
long long s=0,num=0;
for(int i=1;i<=n;i++){
s+=a[i];
if(s<0) s=0;
if(s>=x) s=0,num++;
}
return num;
}
int main(){
n=read(),m=read();
for(int i=1;i<=n;i++)
a[i]=read();
r=1e18;//开得尽量大一点
while(l<=r){
mid=l+r>>1;
if(check(mid)<=m) ans1=mid,r=mid-1;
else l=mid+1;
}//取最小值
l=1,r=1e18;
while(l<=r){
mid=l+r>>1;
if(check(mid)<m) ans2=mid,r=mid-1;
else l=mid+1;
}//取最大值
ans2--;
if(ans1>ans2||ans1==-1||ans2==-1) {//如果ans1没有更新过 或者 ans2没有更新过 或者
//小的答案大于大的答案
printf("-1");
return 0;
}
printf("%lld %lld",ans1,ans2);
return 0;
}

最新文章

  1. &lt;input type=&quot;file&quot;&gt;上传文件并添加路径到数据库
  2. 给HashMap排序,使之成为有序Map
  3. F2工作流引擎之-纯JS Web在线可拖拽的流程设计器(八)
  4. NTDLL未文档化函数RtlGetNtVersionNumbers获取操作系统版本
  5. 用node.js实现简单的web服务器
  6. 可接受多个值的文件上传字段HTML5新特性
  7. Adobe Edge Animate –Edge Commons强势来袭,Edge团队开发成为现实
  8. Session 原理
  9. [Android]如何创建一个View的分割线
  10. 在eclipse中创建web项目
  11. DooDigestAuth php(后台)授权管理类 web浏览器授权
  12. SLAM入门之视觉里程计(2):两视图对极约束 基础矩阵
  13. GC垃圾回收
  14. Beautifulsoup关于find的测试
  15. Redis客户端连接以及持久化数据(三)
  16. thinkphp 伪静态 自定义后缀
  17. 【LeetCode】120. Triangle (3 solutions)
  18. 《FDTD electromagnetic field using MATLAB》读书笔记之一阶、二阶偏导数差商近似
  19. SQL 语句case when
  20. 网站apache环境S2-057漏洞 利用POC 远程执行命令漏洞复现

热门文章

  1. MFC CAD控制权问题
  2. 【Android】登陆界面设计
  3. 啥是SQL?
  4. The meaning of the number displayed on the man page in Linux
  5. selenium等待
  6. Mysql中文乱码以及导出为sql语句和Excel问题解决
  7. 同余方程 2012年NOIP全国联赛提高组
  8. 51Nod——T 1242 斐波那契数列的第N项
  9. 利用DTrace实时检测MySQl
  10. EXP/IMP version