P4343-[SHOI2015]自动刷题机【二分答案】
正题
题目链接: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]自动刷题机【二分答案】相关推荐
- P4343 [SHOI2015]自动刷题机
P4343 [SHOI2015]自动刷题机 明显二分答案 然后对于一个mid直接按照题意模拟一下 如果cnt==k那么ans=x,只记录相等的答案 最后记得:-1只输出一个! 代码: #include ...
- P4343 [SHOI2015]自动刷题机 Python(二分答案)
在这吐槽一下洛谷的OJ,对Python不是很友好,一样的思路实现下来大部分数据会TLE,需要不断的优化复杂度 :( 题目地址:[SHOI2015]自动刷题机 - 洛谷 优化不下去了,对比了一下Pyt ...
- 洛谷P4343 [SHOI2015]自动刷题机
题目链接 由题可知,随着固定的长度n的递减,ac的题目数sum是递增的,n的递减区间: n1 n2 n3 n4-nm, 则有sum的递增区间sum1 sum2-sum m,题目需要求sum区间中的一段 ...
- Luogu P4343 [SHOI2015]自动刷题机
题目链接:传送门 二分一个最大值一个最小值就好了 注意输出-1的情况,就是达不到k到题的时候 下面还特判了一下下 #include <iostream> #include <cstd ...
- [SHOI2015]自动刷题机
[SHOI2015]自动刷题机 题目描述 曾经发明了信号增幅仪的发明家 SHTSC 又公开了他的新发明:自动刷题机--一种可以自动 AC 题目的神秘装置. 自动刷题机刷题的方式非常简单:首先会瞬间得出 ...
- [bzoj4590][Shoi2015]自动刷题机
来自FallDream 的博客,未经允许,请勿转载,谢谢. 曾经发明了信号增幅仪的发明家ditoly又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动刷题机刷题的方式非常简单:首先 ...
- BZOJ4590 [Shoi2015]自动刷题机
Description 一个自动刷题机,每次有两种操作:写下\(x\)行代码或删除\(x\)行代码(不足则全部删除).存在一个\(n\),每当代码量大于等于\(n\)时将提交一次并把代码全部删除.已知 ...
- 【P4343】【二分】[SHOI2015]自动刷题机
用二分寻找最大于最小值. 二分的核心通常是寻找查找的方向即check()函数 check()函数:返回A了几道题目,A多了说明行数n取小了,否则行数n取大了. check()函数源码: ll chec ...
- BZOJ4590: [Shoi2015]自动刷题机
[传送门:BZOJ4590] 简要题意: 有l秒时间,AC了k道题,给出每秒写的代码行数(行数>0表示写,<0表示删除,如果剩下的行数不够删,则为0),假设行数>=n时能够提交AC一 ...
- P4343 自动刷题机题解(二分)
题目 题目背景 曾经发明了信号增幅仪的发明家 SHTSC 又公开了他的新发明:自动刷题机--一种可以自动 AC 题目的神秘装置. 题目描述 自动刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法, ...
最新文章
- 【转】Phong和Blinn-Phong光照模型
- Oracle其它数据库对象:视图、序列、同义词
- cisco 2600的密码破解
- 智能会议系统(6)---高效视频会议系统
- mock模拟的数据能增删改查吗_新课通知: React+Umi3+Typescript+Mock
- x=min(x, y)
- 数据库备份与快照备份
- 图解 Python 编程(5) | 运算符(附要点速查表·完结)
- 什么是通配符 计算机网络,通配符
- (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
- VMware 虚拟化中:厚置备延迟置零、厚置备置零、Thin Provision三个的区别
- 图像的transformation与registration
- 一个关于容抗与感抗的实验
- Windows 7、8、8.1安装.NET 3.5报错问题
- UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 5098-5099: invalid continuatio byte
- Oracle(11g)数据库教程之十:Oracle操作题 (复习课)
- 【每日更新】百度新闻!最新,最快的资讯速递!
- ajax请求是宏任务还是微任务_微服务编排引擎Cadence简介
- 《白夜行》读后感:忽视就是虐待
- 语言缩写c-a,常见的国家语言缩写以及语言的代码
热门文章
- element文件上传有文件但是后台接收为空_程序员提高篇:大规格文件(G)是如何做分片优化的?...
- java dos编译命令是什么_在DOS命令行状态下,如果源程序HelloWorld.java在当前目录下,那么编译该程序的命令是()...
- sm缩写代表什么意思_pe、PE在电气有代表什么意思,你发现没有,电气技术很有意思...
- java并发之CAS
- Java当中 报错 没有有任何类型 的外层实例可访问
- 转 android anr 分析示例,[摘]Android ANR日志分析指南之实例解析
- java jlist 图标_java – 将图像添加到JList项目
- [Java基础]类加载
- 数据结构与算法--这个需求很简单怎么实现我不管(发散思维)
- Linux和unix发行版本,UNIX发展历史和发行版本