算法-二分与差分-503.借教室

题目

思路

  1. 代码不超时:限制在10的8次方以内;线段树能处理的数据上限是10^5
  2. 二分:具有二段性,第一个订单不满足,后面的订单也不用去考虑
  3. 差分(前缀和的逆运算):题目的要求是将一个区间整体减去一个数,最终去判断是否存在某个数小于零
  4. 二分完之后利用差分将前面若干个订单判断一遍,如果前面存在订单小于0,说明不满足
  5. AcWing 503. 借教室(寒假每日一题) - AcWing

代码

n, m = map(int, input().split())
r = [0] + list(map(int, input().split()))
d = [0] * (m+5)  
s = [0] * (m+5)  
t = [0] * (m+5)  
b = [] def check(mid):b = [0] * (n+5)  # 将 b 初始化为与 r 相同长度的列表,并全部填充为 0for i in range(1, n+1):b[i] = r[i] - r[i-1]  # 差分数组的初始化for i in range(1, mid+1):  # 处理前 mid 个订单b[s[i]] -= d[i]  # 有订单之后,区间的值要减少 d[i]b[t[i] + 1] += d[i]  # 差分的基本操作for i in range(1, n+1):  # 求差分数组的前缀和,相当于求原数组b[i] += b[i-1]if b[i] < 0:return False  # 说明订单不能满足return Truefor i in range(1, m+1):d[i], s[i], t[i] = map(int, input().split())L, R = 1, m
while L < R:mid = (L + R) >> 1if check(mid)==False:R = midelse:L = mid + 1  
if check(m) :print("0")
else :print("-1")print(R)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/740739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shell学习 - 2.22 Shell数学计算(算术运算,加减乘除运算)

如果要执行算术运算&#xff08;数学计算&#xff09;&#xff0c;就离不开各种运算符号&#xff0c;和其他编程语言类似&#xff0c;Shell 也有很多算术运算符&#xff0c;下面就给大家介绍一下常见的 Shell 算术运算符&#xff0c;如下表所示。 Shell 算术运算符一览表 算术运…

【leetcode热题】反转字符串中的单词

给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意&#xff1a;输入字符串 s中可能会存在前导空格、尾随…

VulnHub - DarkHole

希望和各位大佬一起学习&#xff0c;如果文章内容有错请多多指正&#xff0c;谢谢&#xff01; 个人博客链接&#xff1a;CH4SER的个人BLOG – Welcome To Ch4sers Blog DarkHole 靶机下载地址&#xff1a;DarkHole: 1 ~ VulnHub 0x01 信息收集 Nmap扫描目标主机&#xf…

深度学习——第10章 优化神经网络:如何防止过拟合(DNN)

第10章 优化神经网络:如何防止过拟合(DNN) 目录 10.1 什么是过拟合 10.2 L1、L2正则化 10.3 L2正则化的物理解释 10.4 Dropout正则化 10.5 其它正则化技巧 10.6 总结 上一课,我们一步步搭建了一个深层神经网络来实现图片的分类。结果显示,随着网络层数加深,隐藏层数…

C语言自学笔记3-----C语言运算符及优先级

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了丰富的运算符&#xff0c;并提供了以下类型的运算符&#xff1a; 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 算术运算符 下表显示了 C 语言支持的所有算术运算符。 假设变量 A 的…

Kafka 实现之接口设计 —— 生产者 API、消费者 API

目录 一. 前言 二. 生产者 API 三. 消费者 API 3.1. 低级别 API 3.2. 高级别 API 一. 前言 Kafka 强大的应用程序层的基础是用于访问存储的两个基本 API&#xff0c;即用于写入事件的生产者 API和用于读取事件的消费者 API。在这两个 API 之上构建了用于集成和处理的 API。…

在域控批量导出用户及其所在路径的信息

在Windows Server的Active Directory环境中&#xff0c;要批量导出用户及其所在OU&#xff08;组织单位&#xff09;的信息&#xff0c;可以使用PowerShell命令来实现。以下是一个简单的示例&#xff1a; Get-ADUser -Filter * -Properties CanonicalName | Select-Object Nam…

力扣-160. 相交链表(双指针)

给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结果后&a…

ARTS Week 20

Algorithm 本周的算法题为 1222. 可以攻击国王的皇后 在一个 下标从 0 开始 的 8 x 8 棋盘上&#xff0c;可能有多个黑皇后和一个白国王。 给你一个二维整数数组 queens&#xff0c;其中 queens[i] [xQueeni, yQueeni] 表示第 i 个黑皇后在棋盘上的位置。还给你一个长度为 2 的…

【JVM】字节码指令 invokevirtual

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;invokevirtual 是一个字节码指令&#xff0c;用于调用对象实例的方法。它的主要作用是执行对象的虚方法调用&#xff0c;遵循Java语言中的动态分派机制。 例如&#xff0c;假设我们有以下Java代码&#xff1a; Java 1…

AI与广告创意:大模型在广告生成中的应用与挑战

AI与广告创意&#xff1a;大模型在广告生成中的应用与挑战 摘要&#xff1a; 本文将探讨AI大模型在广告创意生成中的应用&#xff0c;并分析其面临的挑战。 引言&#xff1a; 在当今信息爆炸的时代&#xff0c;广告创意生成的重要性不言而喻。广告创意需要吸引目标受众的注…

多维时序 | Matlab实现VMD-CNN-BiLSTM变分模态分解结合卷积神经网络结合双向长短期记忆神经网络多变量时间序列预测

多维时序 | Matlab实现VMD-CNN-BiLSTM变分模态分解结合卷积神经网络结合双向长短期记忆神经网络多变量时间序列预测 目录 多维时序 | Matlab实现VMD-CNN-BiLSTM变分模态分解结合卷积神经网络结合双向长短期记忆神经网络多变量时间序列预测预测效果基本介绍程序设计参考资料 预测…

stm32是用标准库还是hal库?

我大学几年一直都是使用标准库&#xff0c;然后17年毕业第一份工作转为HAL库&#xff0c;主要也是公司需求没办法。然后之后的数年我都是建议转HAL库&#xff0c;并不是这个库有多好&#xff0c;相反小问题很多&#xff0c;但是有一个&#xff0c;这是官方一直在开发维护的库&a…

软件开发秘籍:打造高效的分支管理策略

版本控制策略&#xff1a;如何制定合理的分支管理策略 引言 版本控制是软件开发中至关重要的一环&#xff0c;而合理的分支管理策略则是版本控制成功的关键。本文将介绍如何制定合理的分支管理策略&#xff0c;并通过实际案例和技巧&#xff0c;帮助读者更好地理解和应用。 …

SpringBoot3快速入门

目录 一、快速创建项目 二、手动创建一个工程 一、快速创建项目 1、使用官网提供的spring组件创建一个springboot3工程&#xff0c;springboot3要使用JDK17以上的版本 选择配置点击finish&#xff0c;刷新maven 创建一个controller层&#xff0c;写一个demo&#xff0c;点击运…

学习vue3第四节(ref以及ref相关api)

主要记录以下api&#xff1a;ref()、isRef()、unref()、 shallowRef()、triggerRef()、customRef() 1、ref() 定义 接受一个内部值&#xff0c;返回一个响应式的、可更改的 ref 对象&#xff0c;此对象只有一个指向其内部值的属性 .value&#xff0c;.value属性用于追踪并且存…

二十、HTML

一、什么是HTML 超文本标记语言&#xff0c;不是一种编程语言&#xff0c;而是一种标记语言&#xff0c;描述网页的语言&#xff0c;HTML使用标签描述网页中图片、文本、音乐、视频、超链接等。 二、常用标签 1、标题标签 <h1>一级标题</h1> 1-6 2、段落标签<p&…

Github 2024-03-13 C开源项目日报 Top10

根据Github Trendings的统计,今日(2024-03-13统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目10C++项目1Curl:用于传输数据的命令行工具和库 创建周期:5067 天开发语言:C协议类型:OtherStar数量:32994 个Fork数量:6208 次关注人…

vscode使用npm命令无反应,而终端可以的解决办法

如若你遇到这种情况 使用命令 get-command npm 去下面这个路径把它删掉就可以了

在linux中如何后台运行java项目(详细)

目录 1.查看是否安装有jdk环境 2.将打包好的jar上传到linux服务器上 3.运行java程序 直接运行&#xff1a; 使用 & 使用 nohup & 扩展知识 1.查看是否安装有jdk环境 java -version 如果可以查看到jdk版本 &#xff0c;那就代表环境配置好了 2.将打包好的jar上…