算法竞赛之差分进阶——等差数列差分 python

目录

  • 前置知识
  • 进入正题
  • 实战演练


前置知识


给定区间 [ l, r ],让我们把数组中的[ l, r ] 区间中的每一个数加上c,即 a[ l ] + c , a[ l + 1 ] + c , a[ l + 2] + c , a[ r ] + c;

怎么做?很简单,差分一下即可

还不会的小伙伴点此进入学习


进入正题


进阶一下:
给定区间 [ l, r ],把数组[ l, r ] 区间中的数加上一个首项s、末项e、公差为d的等差数列,
即 a[ l ] + s , a[ l + 1 ] + s+d , a[ l + 2 ] + s+2d ······a[ r ] + e

怎么实现?先给出结论

a[l] += s,
a[l + 1] += d - s
a[r + 1] -=d + e
a[r + 2] += e

再对a数组做两次前缀和,即得到ans

为何?
下面听我娓娓道来~



简单举个例子:
假设数组a=【0,0,0,0,0,0,0,0】
现要求对 a[1] 到 a[5] 这5个数字 分别加上以s为首项,d为公差,e为末项的等差数列,即a=【0,s,s+d,s+2d,s+3d,s+4d(e),0,0】
如何得到呢?我们先做一次差分试试:
diff1=【0,s,d,d,d,d,-e,0】什么也看不出来对吧。
再对差分数组做差分:
diff2=【0,s,d-s,0,0,0,-e-d,e】
哎,这不是一开始所进行的操作吗?
a[1]+=s
a[2]+=d-s
a[6]-=d+e
a[7]+=e
一切终成闭环



好了,实际运用的时候到了

实战演练


P4231 三步必杀 https://www.luogu.com.cn/problem/P4231

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

不了解异或运算可点此进入

题解code:

n, m = map(int, input().split())
ans = [0] * (n + 3)
for i in range(m):l, r, s, e = map(int, input().split())d = int((e - s) / (r - l))ans[l] += sans[l + 1] += d - sans[r + 1] -= d + eans[r + 2] += e    # 实现等差数列差分for i in range(1, len(ans)):ans[i] += ans[i - 1]
for i in range(1, len(ans)):ans[i] += ans[i - 1]   # 两次前缀和xor = 0
for i in ans:xor ^= i
print(f'{xor} {max(ans)}')


如果有更多问题或需要进一步的帮助,可以在评论区留言讨论哦!
如果喜欢的话,请给博主点个关注 谢谢

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

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

相关文章

TDengine 做 Apache SuperSet 数据源

‌Apache Superset‌ 是一个现代的企业级商业智能(BI)Web 应用程序,主要用于数据探索和可视化。它由 Apache 软件基金会支持,是一个开源项目,它拥有活跃的社区和丰富的生态系统。Apache Superset 提供了直观的用户界面…

金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践

导读:中信银行信用卡中心每日新增日志数据 140 亿条(80TB),全量归档日志量超 40PB,早期基于 Elasticsearch 构建的日志云平台,面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此…

虚幻商城 Fab 免费资产自动化入库

文章目录 一、背景二、实现效果展示三、实现自动化入库一、背景 上一次写了个这篇文章 虚幻商城 Quixel 免费资产一键入库,根据这个构想,便决定将范围扩大,使 Fab 商城的所有的免费资产自动化入库,是所有!所有! 上一篇文章是根据下图这部分资产一键入库: 而这篇文章则…

游戏为什么失败?回顾某平庸游戏

1、上周玩了一个老鼠为主角的游戏,某平台喜1送的, 下载了很久而一直没空玩,大约1G,为了清硬盘空间而玩。 也是为了拔掉心中的一根刺,下载了而老是不玩总感觉不舒服。 2、老鼠造型比较写实,看上去就有些讨…

亲测有效!如何快速实现 PostgreSQL 数据迁移到 时序数据库TDengine

小T导读:本篇文章是“2024,我想和 TDengine 谈谈”征文活动的优秀投稿之一,作者从数据库运维的角度出发,分享了利用 TDengine Cloud 提供的迁移工具,从 PostgreSQL 数据库到 TDengine 进行数据迁移的完整实践过程。文章…

C#,入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程

通过本课程的学习,你可以掌握C#编程的重点,享受编程的乐趣。 在本课程之前,你无需具备任何C#的基础知识,只要能操作电脑即可。 不过,希望你的数学不是体育老师教的。好的程序是数理化的实现与模拟。没有较好的数学基础…

Linux探秘坊-------3.开发工具详解(2)

1.动静态库和动静态链接(操作) 静态库是指编译链接时,把库⽂件的代码全部加⼊到可执⾏⽂件中,因此⽣成的⽂件 ⽐较⼤,但在运⾏时也就不再需要库⽂件了。其后缀名⼀般为“.a” 动态库与之相反,在编译链接时并 没有把库⽂件的代码加⼊到可执⾏⽂件中 ,⽽…

电脑开机出现Bitlock怎么办

目录 1.前言 2.产生原因: 1.系统异常关机 2.系统更新错误 3.硬件更换 4.CMOS电池问题 5.出厂设置 6.意外情况 3.解锁步骤: 3.1:记住密钥ID(前6位) 3.2:打开aka.ms/myrecoverykey网址 3.3&#…

C# 的 NLog 库高级进阶

一、引言 在 C# 开发的广袤天地中,日志记录宛如开发者的 “千里眼” 与 “顺风耳”,助力我们洞察应用程序的运行状态,快速定位并解决问题。而 NLog 库,无疑是日志记录领域中的璀璨明星,以其强大的功能、灵活的配置和出…

Avalonia系列文章之小试牛刀

最近有朋友反馈,能否分享一下Avalonia相关的文章,于是就抽空学习了一下,发现Avalonia真的是一款非常不错的UI框架,值得花时间认真学习一下,于是边学习边记录,整理成文,分享给大家,希…

10 为什么系统需要引入分布式、微服务架构

java技术的发展 在java开始流行起来之后,主要服务于企业家应用,例如ERP,CRM等等,这些项目是为企业内部员工使用,我们的思维是怎么用设计模式,如何封装代码。让开发人员关注到业务上去,系统也就那么几十几百…

第6章:Python TDD实例变量私有化探索

写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…

JDK 23 和 JDK 21 的区别

JDK 23 和 JDK 21 的区别主要在于支持周期和功能特性: 支持周期: JDK 23:此版本是一个常规发布版本,支持时间较短,通常是六个月。这种版本适合希望使用最新特性和改进的用户。JDK 21:这是一个长期支持&…

springboot自动配置原理(高低版本比较)spring.factories文件的作用

SpringBootApplication public class SpringSecurityApplication {public static void main(String[] args) {SpringApplication.run(SpringSecurityApplication.class, args);}}注解SpringBootApplication Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Doc…

使用Websocket进行前后端实时通信

1、引入jar&#xff0c;spring-websocket-starter <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2、配置websocket config import org.springframe…

vue2 - Day05 - VueX

Vuex 是 Vue.js 官方的状态管理库。它是一个让你能在应用中集中管理共享状态的工具。当应用的规模逐渐增大&#xff0c;组件之间的数据传递变得越来越复杂时&#xff0c;Vuex 就成为了救星&#xff0c;提供了一个集中式的存储来管理所有的组件状态&#xff0c;并且保证状态以一…

中型项目中 HTTP 的挑战与解决方案

一、引言 在当今数字化时代&#xff0c;HTTP&#xff08;超文本传输协议&#xff09;作为Web应用程序的基础通信协议&#xff0c;在中型项目的开发中扮演着至关重要的角色。它为客户端和服务器之间的数据传输提供了标准规范&#xff0c;使得各种类型的应用&#xff0c;从简单的…

IDEA导入Maven工程不识别pom.xml

0 现象 把阿里 sentinel 项目下载本地后&#xff0c;IDEA 中却没显示 maven 工具栏。 1 右键Maven Projects 点击IDEA右侧边栏的Maven Projects&#xff0c;再点击&#xff1a; 在出现的选择框中选择指定的未被识别的pom.xml即可&#xff1a; 2 Add as maven project 右键p…

VUE学习笔记(入门)5__vue指令v-html

v-html是用来解析字符串标签 示例 <!doctype html> <html lang"en"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document<…

OSPF的LSA的学习研究

OSPF常见1、2、3、4、5、7类LSA的研究 1、拓扑如图&#xff0c;按照地址表配置&#xff0c;激活OSPF划分相关区域并宣告相关网段 2、1类LSA&#xff0c;每台运行了OSPF的路由器都会产生&#xff0c;描述了路由器的直连接口状况和cost 可以看到R1产生了一条router lsa&#xff0…