#2036. 「SHOI2015」自动刷题机

内存限制:256 MiB时间限制:1000 ms标准输入输出
题目类型:传统评测方式:文本比较

题目描述

曾经发明了信号增幅仪的发明家 SHTSC 又公开了他的新发明:自动刷题机——一种可以自动 AC 题目的神秘装置。

自动刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写程序。每秒,自动刷题机的代码生成模块会有两种可能的结果:

  1. 写了 xxx 行代码;
  2. 心情不好,删掉了之前写的 yyy 行代码。(如果 yyy 大于当前代码长度则相当于全部删除。)

对于一个 OJ,存在某个固定的长度 n>0n>0n>0,一旦自动刷题机在某秒结束时积累了大于等于 nnn 行的代码,它就会自动提交并 AC 此题,然后新建一个文件(即弃置之前的所有代码)并开始写下一题。SHTSC 在某个 OJ 上跑了一天的自动刷题机,得到了很多条关于写代码的日志信息。他突然发现自己没有记录这个 OJ 的 nnn 究竟是多少。所幸他通过自己在 OJ 上的 Rank 知道了自动刷题机一共切了 kkk 道题,希望你计算 nnn 可能的最小值和最大值。

输入格式

第一行两个整数 l,kl, kl,k,表示刷题机的日志一共有 lll 行,一共了切了 kkk 题。
第二行 lll 个整数 x1,…,xl。xi≥0x_i \geq 0x​i​​≥0 表示写了 xix_ix​i​​ 行代码,xi<0x_i < 0x​i​​<0 表示删除了这道题的 −xi-x_i−x​i​​ 行代码。

输出格式

输出两个数 a,ba, ba,b,分别代表 nnn 可能的最小值和最大值。如果不存在这样的 nnn 则输出 −1-1−1。

样例

样例输入

4 2
2
5
-3
9

样例输出

3 7

样例解释

如果 n=2n = 2n=2 那么刷题机就会切掉 333 题。但如果 n>7n > 7n>7 刷题机最多只能切 111 题。考虑 n=4n = 4n=4 时发生了什么。

  • 第一秒:刷题机写了 222 行。
  • 第二秒:刷题机又写了 555 行,共有 777 行,提交,自信 AC。
  • 第三秒:刷题机删掉了 333 行,共有 000 行。
  • 第四秒:刷题机写了 999 行,共有 999 行,提交,自信 AC。一共 AC 了两题。

数据范围与提示

对于 20%20\%20% 的数据,n≤10n \leq 10n≤10;
对于 40%40\%40% 的数据,n≤100n \leq 100n≤100;
对于 60%60\%60% 的数据,n≤2000n \leq 2000n≤2000;
对于 100%100\%100% 的数据,n≤100000n \leq 100000n≤100000,−109≤xi≤109-10^9 \leq x_i \leq 10^9−10​9​​≤x​i​​≤10​9​​。

/*
两遍二分答案
*/
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
using namespace std;
int a[],n,m;
int check(long long it){
int cnt=;
long long now=;
for(int i=;i<=n;i++){
now+=a[i];
if(now>=it){
now=;
cnt++;
}
if(now<)now=;
}
return cnt;
}
long long l,r,mx,ans1,ans2;
int main(){
//freopen("Cola.txt","r",stdin);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d",&a[i]),mx+=abs(a[i]);
l=;r=mx;
while(l<=r){
long long mid=(l+r)>>;
if(check(mid)<=m)r=mid-,ans1=mid;
else l=mid+;
}
l=;r=mx;
while(l<=r){
long long mid=(l+r)>>;
if(check(mid)>=m)l=mid+,ans2=mid;
else r=mid-;
}
if(check(ans1)!=m||check(ans2)!=m){
printf("-1");return ;
}
cout<<ans1<<' '<<ans2;
}

LibreOJ #2036. 「SHOI2015」自动刷题机的更多相关文章

  1. Loj #2036. 「SHOI2015」自动刷题机

    link : https://loj.ac/problem/2036 这个显然具有单调性,N小的话更容易A题,不仅因为A一次题减少的代码,并且A题的下限也低. 所以直接上二分就行了,注意上限一定不要设 ...

  2. 「BZOJ4590」「SHOI2015」 自动刷题机 解题报告

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

  3. 「SHOI2015」自动刷题机

    /* 有理有据的二分答案 因为在过程中最多减到零 所以n越小显然就能刷更多的题 无解时就是无论如何也无法得到k , 这个特判一下即可 */ #include<cstdio> #includ ...

  4. BZOJ_4590_[Shoi2015]自动刷题机_二分答案

    BZOJ_4590_[Shoi2015]自动刷题机_二分答案 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题 ...

  5. BZOJ4590 Shoi2015 自动刷题机 【二分】

    BZOJ4590 Shoi2015 自动刷题机 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机–一种可以自动AC题目的神秘装置.自动刷题机刷题的方式非常简 ...

  6. 【BZOJ4590】[Shoi2015]自动刷题机 二分

    [BZOJ4590][Shoi2015]自动刷题机 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动刷题机刷题的方式 ...

  7. bzoj4590: [Shoi2015]自动刷题机(二分答案)

    4590: [Shoi2015]自动刷题机 题目:传送门 题解: 很明显的一道二分题. 对于二分性的判断:如果n越大,那么AC的题就越少,n越小,AC的题就越多,那么最大最小值都满足单调性,直接瞎搞. ...

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

    思路 二分答案 显然的二分答案,但是因为二分判定条件 \(\text{wa}\) 了好几遍-- 可以发现,\(n\) 越大,\(k\) 就越小,所以答案是有单调性的,因此可以用两个二分,一次求最大值, ...

  9. COGS2642 / Bzoj4590 [Shoi2015]自动刷题机

    Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 906  Solved: 321 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了 ...

随机推荐

  1. File.basename

    File.basename函数 返回filename中的最后一条斜线后面的部分.若给出了参数suffix且它和filename的尾部一致时,该方法会将其删除并返回结果. 例: p File.basen ...

  2. com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '88888888' for key 'PRIMARY'

    严重: Servlet.service() for servlet jsp threw exceptioncom.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityC ...

  3. ActiveMQ持久化机制

    用户注册成功后发短信提醒 同步http 异步mq JMS中两种通讯模式: 发布订阅   一对多  topic   去过消费者集群的话 都会消费 消息队列   点对点 queue  去过消费者集群的话 ...

  4. Spring Boot2.0之 jar打包方式

    Jar类型打包方式 1.使用mvn celan  package 打包 2.使用java –jar 包名 war类型打包方式 1.使用mvn celan package 打包 2.使用java –ja ...

  5. C/C++的四大内存分区和常量的存储位置

    原文:https://blog.csdn.net/k346k346/article/details/45592329 正确的理解C/C++程序的内存分区,是合格程序猿的基本要求. 网络上流形两大版本内 ...

  6. homebrew cask安装launch rocket【转】

    简介 brew cask是一个用命令行管理Mac下应用的工具,它是基于homebrew的一个增强工具. homebrew可以管理Mac下的命令行工具,例如imagemagick, nodejs,如下所 ...

  7. 数据结构与算法(3)----->队列和栈

    1. 栈和队列的基本性质 栈是先进后出;(像是子弹夹,后进先打出) 队列是先进先出;(像是平时排队买冰淇淋,按顺序轮流) 栈和队列在实现的结构上可以有数组和链表两种形式; (1)数组结构实现容易; ( ...

  8. 如何在kindle 3上无法进入 http://www.google.com/reader, 先登陆www.google.com, 然后选择阅读器。

    如何在kindle 3上无法进入 http://www.google.com/reader,  先登陆www.google.com, 然后选择阅读器.

  9. javascript 中的深复制 和 其实现方法

    首先,我们需要明白什么是深复制(侧重指对象方面)? 在javascript中,复制分为浅复制和深复制,个人理解,浅复制就是直接将引用复制,复制前后的两个对象指向同一个内存地址,对其中一个进行操作,另外 ...

  10. PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯

    转自:http://blog.csdn.net/vbvcde/article/details/7660497 我们提供 PPI协议的官方文档,协议更新时间为2005年,下面是我们根据文档解析的PPI读 ...