LibreOJ #2036. 「SHOI2015」自动刷题机
#2036. 「SHOI2015」自动刷题机
题目描述
曾经发明了信号增幅仪的发明家 SHTSC 又公开了他的新发明:自动刷题机——一种可以自动 AC 题目的神秘装置。
自动刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写程序。每秒,自动刷题机的代码生成模块会有两种可能的结果:
- 写了 xxx 行代码;
- 心情不好,删掉了之前写的 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 0xi≥0 表示写了 xix_ixi 行代码,xi<0x_i < 0xi<0 表示删除了这道题的 −xi-x_i−xi 行代码。
输出格式
输出两个数 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−109≤xi≤109。
/*
两遍二分答案
*/
#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」自动刷题机的更多相关文章
- Loj #2036. 「SHOI2015」自动刷题机
link : https://loj.ac/problem/2036 这个显然具有单调性,N小的话更容易A题,不仅因为A一次题减少的代码,并且A题的下限也低. 所以直接上二分就行了,注意上限一定不要设 ...
- 「BZOJ4590」「SHOI2015」 自动刷题机 解题报告
自动刷题机 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法, ...
- 「SHOI2015」自动刷题机
/* 有理有据的二分答案 因为在过程中最多减到零 所以n越小显然就能刷更多的题 无解时就是无论如何也无法得到k , 这个特判一下即可 */ #include<cstdio> #includ ...
- BZOJ_4590_[Shoi2015]自动刷题机_二分答案
BZOJ_4590_[Shoi2015]自动刷题机_二分答案 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题 ...
- BZOJ4590 Shoi2015 自动刷题机 【二分】
BZOJ4590 Shoi2015 自动刷题机 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机–一种可以自动AC题目的神秘装置.自动刷题机刷题的方式非常简 ...
- 【BZOJ4590】[Shoi2015]自动刷题机 二分
[BZOJ4590][Shoi2015]自动刷题机 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动刷题机刷题的方式 ...
- bzoj4590: [Shoi2015]自动刷题机(二分答案)
4590: [Shoi2015]自动刷题机 题目:传送门 题解: 很明显的一道二分题. 对于二分性的判断:如果n越大,那么AC的题就越少,n越小,AC的题就越多,那么最大最小值都满足单调性,直接瞎搞. ...
- 洛谷 P4343 [SHOI2015]自动刷题机
思路 二分答案 显然的二分答案,但是因为二分判定条件 \(\text{wa}\) 了好几遍-- 可以发现,\(n\) 越大,\(k\) 就越小,所以答案是有单调性的,因此可以用两个二分,一次求最大值, ...
- COGS2642 / Bzoj4590 [Shoi2015]自动刷题机
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 906 Solved: 321 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了 ...
随机推荐
- session,cookie的理解(总结)
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- 使用expect实现shell自动交互
expect 是一个自动交互功能的工具.expect 是开了一个子进程,通过 spawn 来执行 shell 脚本,监测到脚本的返回结果,通过 expect 判断要进行的交互输入内容. expect ...
- POJ2443 Set Operation —— bitset
题目链接:https://vjudge.net/problem/POJ-2443 Set Operation Time Limit: 3000MS Memory Limit: 65536K Tot ...
- CentOS7 网络管理工具nmcli
今天帮别人调试虚拟机的网络问题(CentOS 7系统),习惯性直接改/etc/sysconfig/network-scripts/ifcfg-xxx配置文件,但是不知道为什么重启network后静态i ...
- leetcode 111 Minimum Depth of Binary Tree(DFS)
Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...
- bzoj 2626: JZPFAR k-D树
题目大意: 平面上n个点,每次给出一个点,求这个点的k远点 题解: 什么叫做k远点呢... 1 2 3 4 5中5是第一远,4是第二远... 看来我语文学的不好 那么我们直接上k-D Tree求k邻近 ...
- Django 发送email配置详解及各种错误类型
跟随Django Book的内容发送邮件不成功,总结一下需要配置好settings.py文件,还要注意一些细节. 1.在settings文件最后添加以下内容,缺一不可! EMAIL_HOST= 'sm ...
- [转载]理解 I/O Completion Port (IOCP完成端口)
原文:理解 I/O Completion Port (IOCP完成端口)欢迎阅读此篇IOCP教程.我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你 ...
- tyvj1015公路乘车——DP
题目:http://www.joyoi.cn/problem/tyvj-1015 代码如下: #include<iostream> #include<cstdio> using ...
- 如何在kindle 3上无法进入 http://www.google.com/reader, 先登陆www.google.com, 然后选择阅读器。
如何在kindle 3上无法进入 http://www.google.com/reader, 先登陆www.google.com, 然后选择阅读器.