【洛谷P4343】自动刷题机【二分答案】

用Python写的自动答题脚本,正确率99%,刷课必备 咱们上学的时候,有些课程,不是很重要所以没去看,但是又要刷题,这时候,自动答题脚本就很关键,全程全自动,正确率还嘎嘎高!所以咱们今天来用Python写一个自动答题脚本,正确率99%! 阅读详情

题目大意:

题目链接:https://www.luogu.org/problem/P4343
曾经发明了信号增幅仪的发明家 SHTSC 又公开了他的新发明:自动刷题机——一种可以自动 AC 题目的神秘装置。

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

  1. 写了 x x x行代码

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

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


思路:

明显二分答案。然后直接 O ( n ) O(n) O(n)判断即可。
最小值相当于写 k − 1 k-1 k−1道题目的最大值+1。
时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn)


代码:

#include <cstdio>
using namespace std;
typedef long long ll;

const int N=100010;
ll l,r,mid,a[N];
int n,m;

bool check(ll x,ll p)
{
	ll sum=0,cnt=0;
	for (int i=1;i<=n;i++)
	{
		sum+=a[i];
		if (sum<0) sum=0;
		if (sum>=x)
			sum=0,cnt++;
	}
	return cnt>=p;
}

ll sum(ll x)
{
	ll sum=0,cnt=0;
	for (int i=1;i<=n;i++)
	{
		sum+=a[i];
		if (sum<0) sum=0;
		if (sum>=x)
			sum=0,cnt++;
	}
	return cnt;
}

int main()
{
	scanf("%d%d",&n,&m);
	for (int i=1;i<=n;i++)
		scanf("%lld",&a[i]);
	l=1; r=100000000000000LL;
	while (l<=r)
	{
		mid=(l+r)>>1;
		if (check(mid,m+1)) l=mid+1;
			else r=mid-1;
	}
	if (sum(l)>=m-1) printf("%lld ",l);
		else
		{
			printf("-1 ");
			return 0;
		}
	l=1; r=100000000000000LL;
	while (l<=r)
	{
		mid=(l+r)>>1;
		if (check(mid,m)) l=mid+1;
			else r=mid-1;
	}
	if (sum(l-1)>=m) printf("%lld ",l-1);
		else printf("-1 ");
	return 0;
}
深度学习&故障诊断初学者 - 学习路线 针对初学者,一头雾水,不知如何学习,本文给出了一个学习路线 Python学习 - 打好编程基础 https://www.bilibili.com/video/BV1vA411b7Rn?spm_id_from=333.337.search-card.all.click B站免费课程 学到P49 建议时长 2周 深度学习理论 - 浅浅理解神经网络 https://www.bilibili.com/video/BV1FT4y1E74V?p=41 建议时长 2周............... 阅读详情

相关推荐

find命令

命令是 Linux/Unix 系统中用于搜索文件和目录的强大工具,支持多种搜索条件组合,并能对搜索结果执行各种操作。以下是其详细说明、常用参数及示例: 搜索路径:指定起始目录(如 、 或 表示当前目录)。 查找条件:基于文件名、类型、大小、时间等属性过滤。 处理动作:对匹配结果执行操作(如打印、删除、执行命令等)。 常用参数及示例 1. 按名称查找 :区分大小写匹配文件名。 :不区分大小写匹配文件名。 2. 按文件类型查找 :指定文件类型。 文件类型: :普通文件 :目录 :符号链接

qiao2458的博客 1134

刷课必备!用Python实现网上自动做题

python制作自动答题脚本,100%准确率哦,喜欢的同学记得关注、收藏哦。

dsuiofh的博客 3583

UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台

创建如下所示的目录结构: 2.在tb的文件下:顶层的testbench如下:在tb中,第24行的代码将uvm宏相关的内容include进来,第26行的代码把uvm_pkg包导入进来,然后将agent相关的包(ahb_pkg/sram_pkg),testcase相关的包(uvm_ahb_sram_test_pkg)以及env相关的包(uvm_ahb_sram_env_pkg)都导入进来,在第38行和39行将接口以virtual interface的形式配置给ahb_agent和sramc_agent下

ZhangShuHuai11的博客 9476

【BZOJ4590】自动刷题机

【思路分析】 比赛的时候想到了用二分+贪心,二分的部分与贪心的部分也写对了,但是由于数据范围未看没有开long long,且二分左端点赋值过小导致WA掉 正解:二分+贪心 二分代码的长度,贪心判断能否达到,算法上没什么好说的,主要是细节处理上 关于细节处理: 开long long 右端点数据可以开的尽量大一点 输出-1的点要特别小心 代码: #incl...

zheng_lw的博客 1117

PC微信逆向:破解聊天记录文件!_读取别人pc微信msg文件

本文详细介绍了PC版微信数据库的解密方法,总结了前人经验并补充了关键细节。通过OllyDbg调试工具从微信内存中获取32字节加密密钥,使用C++结合OpenSSL库实现解密程序。重点解决了开发环境配置问题,包括Visual Studio项目设置和OpenSSL库的版本适配,将原本固定的数据库路径改为参数化输入,提高了工具的通用性。该方案为电子取证中的微信数据提取提供了完整的技术路径,避免了研究者重复探索已解决的问题。

zz96405784848的博客 9753

VNC Viewer建立多个图形界面,来远程访问同一个服务器(Ubuntu)

如题。目前已经有了一个VNC viewer连接,那么如果再开一个图形界面呢? 思路主要是:新建一个用户,从这个用户新建一个vnc连接,然后访问图形界面。

the Blog of 等不到天亮丶等时光 5900

用python实现自动刷题(正确率达99%)学习使用,无不良用途

--------------------------关键修改:指定驱动路径--------------------------# ==========浏览器初始化(已修复驱动问题 + 保留原有功能)==========print(f"\n程序异常:{str(e)[:50]}")# ==========精准获取答案(零错题关键)==========# ==========主答题逻辑(丝滑+零错)==========# ==========精准匹配选项(零错题)==========

2503_92264705的博客 976

STM32版CCD线性摄像头寻线寻迹小车_stm32接ccd

目前大多数的小车寻线寻迹都是用红外对管寻线,这是比较简单也比较成熟的技术方案,且成本也低。本文将介绍使用CCD线性摄像头寻线寻迹。TSL1401 线性传感器由一个 1x128 的光电二极管阵列、相关的电荷放大电路以及一个内部像素数据保功能组成。内部像素数据保功能可以为所有像素点提供同时积分的开始和停止时间。该阵列由 128 个像素组成,每个像素的感光面积为 3,524.3 平方微米。像素之间的间隔为 8μm。内部控制逻辑简化了操作,该模块需要串行输入(SI)信号和时钟信号(CLK)。

2401_87557129的博客 3229

bzoj4590: [Shoi2015]自动刷题机

bzoj4590: [Shoi2015]自动刷题机 Time Limit:10 SecMemory Limit:256 MBSubmit:32Solved:13[Submit][Status][Discuss] Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置。自动 刷题机刷题的方式非常简...

weixin_30654419的博客 274

【模型实战】MiMo-VL-7B讲解与实战

维度成绩MMMU70.6(图像理解最难测试之一)VideoMME70.8(视频理解标杆)59.4(超越78B参数模型)56.1(超过专用GUI模型)Elo评分开源VLM排名第一(7B~72B)社区热度过去一个月下载超1,600次(RL+SFT)📌一句话概括MiMo-VL 是目前性能最强、推理最稳、体验最佳、生态最全的7B级开源视觉语言模型。

m0_47867638的博客 1198

【离线OCR】微信离线实现图片OCR文本和表格识别

基于微信本地OCR引擎(由最新版微信自动安装)。通过Python对其官方调用逻辑进行完整翻译和封装,使开发者可以用简单的API调用其强大的OCR功能。

专注于医院数据分析技术与系统开发的创作与分享。 2623

[洛谷]P4343 [SHOI2015]自动刷题机 (#二分答案)

题目描述 曾经发明了信号增幅仪的发明家 SHTSC 又公开了他的新发明:自动刷题机——一种可以自动 AC 题目的神秘装置。 自动刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写程序。每秒,自动刷题机的代码生成模块会有两种可能的结果: 1.写了xx行代码 2.心情不好,删掉了之前写的yy行代码。(如果yy大于当前代码长度则相当于全部删除。) 对于一个 OJ,存在某个固定的...

A.pro的博客 777

物联网系列③——基于ESP8266与点灯科技平台的温湿度计设计(接入小爱同学)

物联网系列③——基于ESP8266与点灯科技平台的温湿度计设计(接入小爱同学)一、设计目标二、电路展示三、存在的问题四、代码五、需要注意的问题 一、设计目标       前一阵子偶然接触到点灯科技平台,产生了制作一块ESP8266电路板,拥有以下功能: 使用CH340对ESP8266进行程序下载 使用DHT11进行温湿度数据读取 使用点灯科技平台接入物联网,可通过手机APP获得室内温湿度 接入小爱同学,通过语音获取室内温湿度信息 Mico US

weixin_43278295的博客 8853

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

正题 题目链接:https://www.luogu.org/problem/P4343 题目大意 nnn个操作每个操作加几行代码或减几行代码,若代码积累到xxx行就自动删除所有代码并切掉一道题。 已知道切掉了kkk题,求最大和最小的xxx 解题思路 因为xxx和切题的数量单调,所以可以二分答案即可。 codecodecode #include<cstdio> #include&l...

QuantAsk 544

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

记录洛谷刷题阿斯蒂芬阿斯蒂芬

WoBuHuiC的博客 363

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

洛谷 P4343 [SHOI2015] 自动刷题机 刷题笔记

更小或者更大 的答案满足条件 求更小或更大 答案数用注释************的语句控制。这里的cheak 返回 个数用以判断对于k来说二分出的答案是大了还是小了从而进行调整。如果mid返回个数大于k说明门槛小了 所以mid要增大 让l=mid+1;int check(int x)//这里直接模拟即可。这里二分答案 试一试是否满足 进行验证。while(l<=r)//二分左边界。while(l<=r)//二分右边界。//如果 ans修改过 则存在答案。//判断是否存在这样的区间。

2301_78763076的博客 556

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

打卡信奥刷题(2839)用C++实现信奥题 P4343 [SHOI2015] 自动刷题机

摘要: 本文介绍了SHOI2015竞赛中的自动刷题机题目,要求根据日志计算OJ系统参数n的可能范围。题目描述了自动刷题机的工作机制:通过日志记录代码增减情况,当代码量≥n时自动提交题目。给定l行日志和实际提交数k,需找出n的最小和最大值。通过二分查找算法实现,分别处理n的可能上下界。若不存在符合条件的n,则输出-1。文末附有C++实现代码,并预告将继续分享算法竞赛相关内容。

Loge谈信奥--一个专注于信奥人的博客 388

luoguP4343自动刷题机

https://www.luogu.org/problem/P4343 又是一题二分答案.....自主思考吧....不熟悉的可以选择看看我之前写的二分博文,当然也可以在网上找一些.... (主要原因是作者要写luogu里的考试题....又一次菜掉了.... 标题就是注意事项,这里的二分求最大最小值中,ans的取值位置是不一样的... int : 好好好,都是我的错emm..... #in...

weixin_30697239的博客 118

洛谷P4343 [SHOI2015]自动刷题机

题目链接 由题可知,随着固定的长度n的递减,ac的题目数sum是递增的,n的递减区间: n1 n2 n3 n4…nm, 则有sum的递增区间sum1 sum2…sum m,题目需要求sum区间中的一段sumi sumi+1…sumj皆等于k,输出最小值ni,最大值nj. 当sum序列中不存在sumi=k则无最大值和最小值,输出-1. 结题方法: 显然的二分答案,由与n和sum都是有序序列,满足二分...

qq_39887142的博客 304

一个动态更新的洛谷综合题单(原版)

洛谷试炼场的题目确实很具有代表性,但是近几年以来,又有许多经典题目出现在 OI 界中,这个大题单就是作为洛谷试炼场的扩展和补充。

yfdai8的专栏 2411

二分答案实战:从网线切割到算法优化——以OpenJudge NOI 1.11 04为例

本文深入探讨了二分答案算法在信息学竞赛中的实战应用,以OpenJudge NOI 1.11 04网线切割问题为例,详细解析了整数域与实数域二分的优劣、两种经典写法对比及优化技巧。文章还提供了典型应用场景、常见错误调试方法,并推荐了洛谷等平台的进阶题目,帮助读者全面掌握这一高效算法。

dropout6artist的博客 835

从‘河中跳房子’到算法竞赛:二分答案的实战拆解与避坑指南(附USACO/NOI真题)

本文深入解析了算法竞赛中二分答案的核心技巧,以经典'河中跳房子'问题为例,详细拆解了从问题抽象到代码实现的完整过程。文章涵盖二分模板、验证函数设计、边界处理等关键知识点,并附有USACO/NOI真题分析,帮助竞赛选手掌握这一高效算法思想,提升解题能力。

weixin_30731305的博客 437

保姆级教程:手把手带你用C++搞定洛谷P2855‘河中跳房子’(含无序数据处理)

本文提供了一份详细的C++教程,手把手教你解决洛谷P2855‘河中跳房子’问题,涵盖二分答案算法和无序数据处理技巧。通过实战案例和优化策略,帮助信息学奥赛选手高效掌握解题方法,提升算法竞赛能力。

weixin_30633405的博客 357

前缀和和差分笔记

​ 是不是在找距离的最大值,那就距离入局找出这个距离的边界,check函数变复杂了,check函数一定是以距离为接收值的,但是如何判断这个接收值呢,举个例子就知道,我们的接收值太大导致我们的cnt变化了,题目又给了cnt具体值,所以便可利用他来作为限制条件。为什么呢,我们知道,前缀和会怎么样,会加上前面的数,我的前面比原来大了2,那么通过前缀和求出来的现在的值也就大了2,那后面我不想改变怎么办,简单,在不想改变的那个位置减2,不就抵消了吗?对于一个问题,它的答案属于一个区间,当这个区间很大时,暴力超时。

打铁还需自身硬 975

26日 二分 总结

1、砍树 题目描述 伐木工人米尔科需要砍倒M米长的木材。这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林。不过,米尔科只被允许砍倒单行树木。 米尔科的伐木机工作过程如下:米尔科设置一个高度参数H(米),伐木机升起一个巨大的锯片到高度H,并锯掉所有的树比H高的部分(当然,树木不高于H米的部分保持不变)。米尔科就行到树木被锯下的部分。 例如,如果一行树的高度分别为20,15,10和17,米尔科把锯片升到15米的高度,切割后树木剩下的高度将是15,15,10和15,而米尔科将从

Skywalker_____的博客 626
上一篇: 【P5253】丢番图【数论,数学】
下一篇: 【JZOJ3833】平坦的折线【dp】【二分】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值