“二維前綴和”算法原理及模板

在學習本篇內容前建議先學習一下“一維前綴和”

一維前綴和 算法https://blog.csdn.net/czt230610/article/details/148012923?fromshare=blogdetail&sharetype=blogdetail&sharerId=148012923&sharerefer=PC&sharesource=czt230610&sharefrom=from_link接下來我們就直接從題引入

如果一維的話,很容易想到創建“前綴和”數組進行相減,但到了二維,我們要在每一行、每一列都要創建一個“前綴和”數組嗎?顯然太麻煩了,我們用一下數學思維或許使這個問題更加簡單化。所以本題的暴力解我們就不多說了。

根據我們的算法原理:創建前綴和數組并使用,我們要“更便利“地創建這個數組。

首先,這個數組的含義是不能變的,dp[i][j]記錄的是從[1,1]到dp[i,j]的所有和(為什么下標從1開始在一維模板中有說明),現在我們求dp[i][j]

根據題意,就是把圖中arr的ABCD中所有元素求和即可(D就是arr[i][j]),如果我們直接求A+B+C+D,發現還是很麻煩,我們可以采用,(A+C)+(A+B)+D-A的方式,換成代碼就是dp[i][j-1]+dp[i-1][j]+arr[i][j]-dp[i-1][j-1],這就是前綴和數組的預處理。

接下來是使用

上圖是arr數組,我們要求出[x1,y1]-[x2,y2]之間的和(圖中的D),我們可以用A+B+C+D-(A+B)-(A+C)+A.即dp[x2,y2]-dp[x1-1,y2]-dp[x2,y1-1]+dp[x1-1,y1-1]。這里的坐標-1用一下3×3表格模擬即可得出原因。

現在我們可以寫題解(模板)了

#include <iostream>using namespace std;
#include <vector>int main()
{//輸入數據int n=0,m=0,q=0;cin>>n>>m>>q;vector<vector<int>> arr(n+1,vector<int>(m+1));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>arr[i][j];
//預處理前綴和數組vector<vector<long long>> dp(n+1,vector<long long>(m+1));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+arr[i][j];//使用int x1=0=,y1=0,x2=0,y2=0;while(q--){cin >>x1>>y1>>x2>>y2;cout<<dp[x2][y2]-dp[x2,y1-1]-dp[x1-1,y2]+dp[x1-1,y1-1]<<endl;}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80402.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80402.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80402.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件設計師CISC與RISC考點分析——求三連

一、考點分值占比與趨勢分析&#xff08;CISC與RISC&#xff09; 綜合知識分值統計表 年份考題數量分值分值占比考察重點2018111.33%指令特征對比2019111.33%控制器實現方式2020222.67%寄存器數量/流水線技術2021111.33%尋址方式對比2022222.67%指令復雜度/譯碼方式2023111.3…

順 序 表:數 據 存 儲 的 “ 有 序 陣 地 ”

順 序 表&#xff1a;數 據 存 儲 的 “ 有 序 陣 地 ” 線 性 表順 序 表 - - - 順 序 存 儲 結 構順 序 表 的 操 作 實 現代 碼 全 貌 與 功 能 介 紹順 序 表 的 功 能 說 明代 碼 效 果 展 示代 碼 詳 解SeqList.hSeqList.ctest.c 總 結 &#x1f4bb;作 者 簡 介&#xf…

網絡安全深度解析:21種常見網站漏洞及防御指南

一、高危漏洞TOP 10 1. SQL注入(SQLi) 原理:通過構造惡意SQL語句突破系統過濾機制 典型場景: - 聯合查詢注入: union select 1,version(),3--+ - 布爾盲注:and (select substr(user(),1,1)=r) - 時間盲注:;if(now()=sysdate(),sleep(5),0)/ 防御方案: - 嚴格參數化查…

代碼上傳gitte倉庫

把代碼push上去就行

創建型:單例模式

目錄 1、核心思想 2、實現方式 2.1 餓漢式 2.2 懶漢式 2.3 枚舉&#xff08;Enum&#xff09; 3、關鍵注意事項 3.1 線程安全 3.2 反射攻擊 3.3 序列化與反序列化 3.4 克隆保護 4、適用場景 1、核心思想 目的&#xff1a;確保一個類僅有一個實例 功能&#xff1a;…

副業小程序YUERGS,從開發到變現

文章目錄 我為什么寫這個小程序網站轉小程序有什么坑有什么推廣渠道個人開發者如何變現簡單介紹YUERGS小程序給獨立開發者一點小建議 我為什么寫這個小程序 關注我的粉絲應該知道&#xff0c;我在碩士階段就已經掌握了小程序開發技能&#xff0c;并寫了一個名為“約球online”…

React路由(React學習筆記_09)

React路由 1,路由基礎 現代的前端應用大多都是SPA(單頁應用程序)&#xff0c;也就是只有一個HTML頁面的應用程序。因為它的用戶體驗更好、對服務器的壓力更小&#xff0c;所以更受歡迎。為了有效的使用單個頁面來管理原來多個頁面的功能&#xff0c;前端路由應運而生。 1, 安裝…

2009-2025計算機408統考真題及解析

整理2009-2025 年計算機408統考真題及解析PDF 目錄樹&#xff1a; └── 2025考研計算機408統考真題及答案&#xff08;回憶版&#xff09;.pdf ├── 2009-2024計算機408真題解析 │ ├── 2009年計算機408統考真題解析.pdf │ ├── 2010年計算機408統考真題解析.pdf …

Mysql、Oracle、Sql Server、達夢之間sql的差異

1&#xff1a;分頁查詢 Sql Server&#xff1a; <bind name"startRow" value"(page - 1) * limit 1"/> <bind name"endRow" value"page * limit"/> SELECT *FROM (SELECT ROW_NUMBER() OVER (<if test"sortZd!…

SQL Server 常用函數

一、字符串處理函數 1. CONCAT&#xff1a;拼接字符串 語法&#xff1a;CONCAT(string1, string2, ..., stringN) 實例&#xff1a; SELECT CONCAT(Hello, , World) AS Result; 輸出&#xff1a; Result ------------- Hello World 2. SUBSTRING&#xff1a;截取子字符串 …

【通用大模型】Serper API 詳解:搜索引擎數據獲取的核心工具

Serper API 詳解&#xff1a;搜索引擎數據獲取的核心工具 一、Serper API 的定義與核心功能二、技術架構與核心優勢2.1 技術實現原理2.2 對比傳統方案的突破性優勢 三、典型應用場景與代碼示例3.1 SEO 監控系統3.2 競品廣告分析 四、使用成本與配額策略五、開發者注意事項六、替…

ABP vNext 多租戶系統實現登錄頁自定義 Logo 的最佳實踐

&#x1f680; ABP vNext 多租戶系統實現登錄頁自定義 Logo 的最佳實踐 &#x1f9ed; 版本信息與運行環境 ABP Framework&#xff1a;v8.1.5.NET SDK&#xff1a;8.0數據庫&#xff1a;PostgreSQL&#xff08;支持 SQLServer、MySQL 等&#xff09;BLOB 存儲&#xff1a;本地…

FastDFS分布式文件系統架構學習(一)

FastDFS分布式文件系統架構學習 1. FastDFS簡介 FastDFS是一個開源的輕量級分布式文件系統&#xff0c;由淘寶資深架構師余慶設計并開發。它專為互聯網應用量身定制&#xff0c;特別適合以中小文件&#xff08;如圖片、文檔、音視頻等&#xff09;為載體的在線服務。FastDFS不…

基于單片機的防盜報警器設計與實現

標題:基于51單片機的防盜報警器設計 內容:1.摘要 本文圍繞基于51單片機的防盜報警器設計展開。背景在于現代社會安全需求不斷提高&#xff0c;傳統防盜方式存在諸多不足。目的是設計一款成本低、可靠性高且易于使用的防盜報警器。方法上&#xff0c;以51單片機為核心控制單元&…

IDE/IoT/搭建物聯網(LiteOS)集成開發環境,基于 LiteOS Studio + GCC + JLink

文章目錄 概述LiteOS Studio不推薦&#xff1f;安裝和使用手冊呢?HCIP實驗的源碼呢&#xff1f; 軟件和依賴安裝軟件下載軟件安裝插件安裝依賴工具-方案2依賴工具-方案1 工程配置打開或新建工程板卡配置組件配置編譯器配置-gcc工具鏈編譯器配置-Makefile腳本其他配置編譯完成 …

【高斯擬合最終篇】Levenberg-Marquardt(LM)算法

Levenberg-Marquardt(LM)算法是一種結合高斯-牛頓法和梯度下降法的優化方法,特別適合非線性最小二乘問題,如高斯函數擬合。它通過引入阻尼因子(damping factor)平衡高斯-牛頓法的快速收斂和梯度下降法的穩定性。以下是基于之前的 gaussian_fit.py,加入 LM 算法實現高斯擬…

信道編碼技術介紹

信息與通信系統中的編碼有4 種形式&#xff1a;信源編碼、信道編碼、密碼編碼和多址編碼。 其中信道編碼的作用是對信源經過壓縮后的數據加一定數量受到控制的冗余&#xff0c;使得數據在傳輸中或接收中發生的差錯可以被糾正或被發現&#xff0c;從而可以正確恢復出原始數據信息…

線性回歸策略

一種基于ATR(平均真實范圍)、線性回歸和布林帶的交易策略。以下是對該策略的全面總結和分析: 交易邏輯思路 1. 過濾條件: - 集合競價過濾:在每個交易日的開盤階段,過濾掉集合競價產生的異常數據。 - 價格異常過濾:排除當天開盤價與最高價或最低價相同的情況,這…

WordPress Relevanssi插件時間型SQL注入漏洞(CVE-2025-4396)

免責聲明 本文檔所述漏洞詳情及復現方法僅限用于合法授權的安全研究和學術教育用途。任何個人或組織不得利用本文內容從事未經許可的滲透測試、網絡攻擊或其他違法行為。使用者應確保其行為符合相關法律法規,并取得目標系統的明確授權。 對于因不當使用本文信息而造成的任何直…

支持selenium的chrome driver更新到136.0.7103.94

最近chrome釋放新版本&#xff1a;136.0.7103.94 如果運行selenium自動化測試出現以下問題&#xff0c;是需要升級chromedriver才可以解決的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only su…