算法競賽之差分進階——等差數列差分 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.pswp.cn/web/66612.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66612.shtml
英文地址,請注明出處:http://en.pswp.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…