正题

题目链接:https://www.luogu.org/problem/P4343


题目大意

nnn个操作每个操作加几行代码或减几行代码,若代码积累到xxx行就自动删除所有代码并切掉一道题。

已知道切掉了kkk题,求最大和最小的xxx


解题思路

因为xxx和切题的数量单调,所以可以二分答案即可。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=100010;
ll n,k,a[N],sum,maxs,l,r;
bool check(ll x)
{ll now=0,z=0; for(ll i=1;i<=n;i++){now+=a[i];now=max(now,0ll);if(now>=x) z++,now=0;}return (z>=k);
}
bool check2(ll x)
{ll now=0,z=0; for(ll i=1;i<=n;i++){now+=a[i];now=max(now,0ll);if(now>=x) z++,now=0;}return (z<=k);
}
bool checks(ll x)
{ll now=0,z=0; for(ll i=1;i<=n;i++){now+=a[i];now=max(now,0ll);if(now>=x) z++,now=0;}return (z==k);
}
int main()
{scanf("%lld%lld",&n,&k);for(ll i=1;i<=n;i++)scanf("%lld",&a[i]),sum+=a[i],maxs=max(maxs,sum);l=1;r=(1e9)*n;while(l<=r){ll mid=(l+r)/2;if(check2(mid)) r=mid-1;else l=mid+1;}if(checks(l))printf("%lld ",l);else {printf("-1");return 0;}l=1;r=(1e9)*n;while(l<=r){ll mid=(l+r)/2;if(check(mid)) l=mid+1;else r=mid-1;}if(checks(r))printf("%lld",r);else printf("-1");
}

P4343-[SHOI2015]自动刷题机【二分答案】相关推荐

  1. P4343 [SHOI2015]自动刷题机

    P4343 [SHOI2015]自动刷题机 明显二分答案 然后对于一个mid直接按照题意模拟一下 如果cnt==k那么ans=x,只记录相等的答案 最后记得:-1只输出一个! 代码: #include ...

  2. P4343 [SHOI2015]自动刷题机 Python(二分答案)

    在这吐槽一下洛谷的OJ,对Python不是很友好,一样的思路实现下来大部分数据会TLE,需要不断的优化复杂度  :( 题目地址:[SHOI2015]自动刷题机 - 洛谷 优化不下去了,对比了一下Pyt ...

  3. 洛谷P4343 [SHOI2015]自动刷题机

    题目链接 由题可知,随着固定的长度n的递减,ac的题目数sum是递增的,n的递减区间: n1 n2 n3 n4-nm, 则有sum的递增区间sum1 sum2-sum m,题目需要求sum区间中的一段 ...

  4. Luogu P4343 [SHOI2015]自动刷题机

    题目链接:传送门 二分一个最大值一个最小值就好了 注意输出-1的情况,就是达不到k到题的时候 下面还特判了一下下 #include <iostream> #include <cstd ...

  5. [SHOI2015]自动刷题机

    [SHOI2015]自动刷题机 题目描述 曾经发明了信号增幅仪的发明家 SHTSC 又公开了他的新发明:自动刷题机--一种可以自动 AC 题目的神秘装置. 自动刷题机刷题的方式非常简单:首先会瞬间得出 ...

  6. [bzoj4590][Shoi2015]自动刷题机

    来自FallDream 的博客,未经允许,请勿转载,谢谢. 曾经发明了信号增幅仪的发明家ditoly又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动刷题机刷题的方式非常简单:首先 ...

  7. BZOJ4590 [Shoi2015]自动刷题机

    Description 一个自动刷题机,每次有两种操作:写下\(x\)行代码或删除\(x\)行代码(不足则全部删除).存在一个\(n\),每当代码量大于等于\(n\)时将提交一次并把代码全部删除.已知 ...

  8. 【P4343】【二分】[SHOI2015]自动刷题机

    用二分寻找最大于最小值. 二分的核心通常是寻找查找的方向即check()函数 check()函数:返回A了几道题目,A多了说明行数n取小了,否则行数n取大了. check()函数源码: ll chec ...

  9. BZOJ4590: [Shoi2015]自动刷题机

    [传送门:BZOJ4590] 简要题意: 有l秒时间,AC了k道题,给出每秒写的代码行数(行数>0表示写,<0表示删除,如果剩下的行数不够删,则为0),假设行数>=n时能够提交AC一 ...

  10. P4343 自动刷题机题解(二分)

    题目 题目背景 曾经发明了信号增幅仪的发明家 SHTSC 又公开了他的新发明:自动刷题机--一种可以自动 AC 题目的神秘装置. 题目描述 自动刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法, ...

最新文章

  1. 【转】Phong和Blinn-Phong光照模型
  2. Oracle其它数据库对象:视图、序列、同义词
  3. cisco 2600的密码破解
  4. 智能会议系统(6)---高效视频会议系统
  5. mock模拟的数据能增删改查吗_新课通知: React+Umi3+Typescript+Mock
  6. x=min(x, y)
  7. 数据库备份与快照备份
  8. 图解 Python 编程(5) | 运算符(附要点速查表·完结)
  9. 什么是通配符 计算机网络,通配符
  10. (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  11. VMware 虚拟化中:厚置备延迟置零、厚置备置零、Thin Provision三个的区别
  12. 图像的transformation与registration
  13. 一个关于容抗与感抗的实验
  14. Windows 7、8、8.1安装.NET 3.5报错问题
  15. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 5098-5099: invalid continuatio byte
  16. Oracle(11g)数据库教程之十:Oracle操作题 (复习课)
  17. 【每日更新】百度新闻!最新,最快的资讯速递!
  18. ajax请求是宏任务还是微任务_微服务编排引擎Cadence简介
  19. 《白夜行》读后感:忽视就是虐待
  20. 语言缩写c-a,常见的国家语言缩写以及语言的代码

热门文章

  1. element文件上传有文件但是后台接收为空_程序员提高篇:大规格文件(G)是如何做分片优化的?...
  2. java dos编译命令是什么_在DOS命令行状态下,如果源程序HelloWorld.java在当前目录下,那么编译该程序的命令是()...
  3. sm缩写代表什么意思_pe、PE在电气有代表什么意思,你发现没有,电气技术很有意思...
  4. java并发之CAS
  5. Java当中 报错 没有有任何类型 的外层实例可访问
  6. 转 android anr 分析示例,[摘]Android ANR日志分析指南之实例解析
  7. java jlist 图标_java – 将图像添加到JList项目
  8. [Java基础]类加载
  9. 数据结构与算法--这个需求很简单怎么实现我不管(发散思维)
  10. Linux和unix发行版本,UNIX发展历史和发行版本