【藍橋杯每日一題】3.25

Alt?

🏝?專欄:?【藍橋杯備篇】
🌅主頁:?f狐o貍x

“OJ超時不是終點,是算法在提醒你該優化時間復雜度了!”


目錄

3.25?差分數組

一、一維差分

? ? ? ? 題目鏈接:

? ? ? ? 題目描述:

? ? ? ? 解題思路:

? ? ? ? 解題代碼:

二、海底高鐵

? ? ? ? 題目鏈接:

? ? ? ? 題目描述:

? ? ? ? 解題思路:

? ? ? ? 解題代碼:

三、二維差分

? ? ? ? 題目鏈接:

? ? ? ? 題目描述:

? ? ? ? 解題思路:

? ? ? ? 解題代碼:

四、地毯

? ? ? ? 題目鏈接:

? ? ? ? 題目描述:

? ? ? ? 解題思路:

? ? ? ? 解題代碼:


3.25?差分數組

? ? ? ? 我們直接用一道題來了解差分數組吧

一、一維差分

? ? ? ? 題目鏈接:

????????【模板】差分

? ? ? ? 題目描述:

? ? ? ? 解題思路:

? ? ? ? 還是可以用暴力枚舉來搞定,我們把整個數組遍歷一遍,再把對應位置加上x就行了,但是這樣絕對是會超時長滴,不然我干嘛用這個例題?

? ? ? ? 對于類似的題,我們就可以用差分算法,和前綴和數組類似,我們需要預處理一個差分數組出來

? ? ? ? 這個數組的好處就是當你要在 l ~ r 的區間加上 x 的時候(圖中用2~5)來表示,就只需要在差分數組中的 l 位置加上 x ,r + 1 位置減去 x?,再還原為原數組就行

? ? ? ? ?也就是:a[ l ] += x; a[ r + 1 ] -= x;

? ? ? ? 此時還有人要問:煮波煮波,那怎么還原數組呢?其實把差分數組做一個前綴和運算即可還原?證明如下:

? ? ? ? 解題代碼:

#include <iostream>
using namespace std;typedef long long LL;const int N = 1e5 + 10;LL a[N];int n, m;int main()
{cin >> n >> m;// 利用差分的性質預處理差分數組for(int i = 1; i <= n; i++){LL x;cin >> x;a[i] += x;a[i + 1] -= x;}// m次操作while(m--){LL l, r, x; cin >> l >> r >> x;a[l] += x;a[r + 1] -= x;}// 利用前綴和還原數組for(int i = 1; i <= n; i++){a[i] = a[i - 1] + a[i];cout << a[i] << " ";}return 0;
}

二、海底高鐵

? ? ? ? 題目鏈接:

????????P3406 海底高鐵

? ? ? ? 題目描述:

? ? ? ? 解題思路:

? ? ? ? 這里我們只需要知道這個人每段鐵路一共坐了幾次,再判斷是直接買票劃算還是買卡劃算,最后累加輸出即可

? ? ? ? 解題代碼:

#include <iostream>using namespace std;const int N = 1e5 + 10;typedef long long LL;LL f[N];int n, m;int main()
{cin >> n >> m;int l, r; cin >> l;// 利用差分記錄每段鐵路經過的次數for (int i = 2; i <= m; i++){cin >> r;if (l <= r) f[l] += 1, f[r] -= 1;else f[r] += 1, f[l] -= 1;l = r;}// 還原數組for (int i = 1; i <= n; i++){f[i] = f[i - 1] + f[i];}LL ret = 0;for(int i = 1; i < n; i++){LL a, b, c; cin >> a >> b >> c;ret += min(a * f[i], c + b * f[i]);}cout << ret << endl;return 0;
}

三、二維差分

? ? ? ? 題目鏈接:

????????【模板】二維差分

? ? ? ? 題目描述:

? ? ? ? 解題思路:

? ? ? ? 如圖所示我們需要對以下結果數組進行操作:

f[x1][y1] + k

f[x2 + 1][y1] -?k

f[x1][y2 + 1] -?k

f[x2 + 1][y2 + 1] -?k

? ? ? ? ?這樣我們累加起來以后就可以得到二維數組中區間+k的操作

? ? ? ? 解題代碼:

#include <iostream>using namespace std;typedef long long LL;const int N = 1010;LL f[N][N];int n, m, q;void insert(int x1, int y1, int x2, int y2, int x)
{f[x1][y1] += x;f[x2 + 1][y1] -= x;f[x1][y2 + 1] -= x;f[x2 + 1][y2 + 1] += x;
}int main()
{cin >> n >> m >> q;// 預處理二維齊差分數組for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){LL a; cin >> a;insert(i, j, i , j ,a);}    }while(q--){LL x1, y1, x2, y2, a; cin >> x1 >> y1 >> x2 >> y2 >>a;insert(x1, y1, x2, y2, a);}for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){f[i][j] = f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1] + f[i][j];cout << f[i][j] << " ";}cout << endl;}return 0;
}

四、地毯

? ? ? ? 題目鏈接:

????????P3397 地毯

? ? ? ? 題目描述:

????????

? ? ? ? 解題思路:

? ? ? ? 這題其實就是把地毯對應的區域全加上一,最后再輸出數組即可解決

? ? ? ? 解題代碼:
?

#include <iostream>using namespace std;const int N = 1010;int f[N][N];int n, m;void insert(int x1, int y1, int x2, int y2, int a)
{f[x1][y1] += a;f[x2 + 1][y1] -= a;f[x1][y2 + 1] -= a;f[x2 + 1][y2 + 1] += a;
}int main()
{cin >> n >> m;while (m--){int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2;insert(x1, y1, x2, y2, 1);}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){f[i][j] = f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1] + f[i][j];cout << f[i][j] << " ";}cout << endl;}return 0;
}

? ? ? ? 今天就到這里吧,下一期我們將講解二分算法~886~

????????藍橋杯選手日常:
????????睡醒→看題→看不懂→搜題解→抄代碼→被卡常→怒刪重寫→提交→WA

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

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

相關文章

3.25學習總結 抽象類和抽象方法+接口+內部類+API

抽象類和抽象方法&#xff1a; 有抽象方法&#xff0c;那么類肯定是抽象類。父類不一定是抽象的&#xff0c;但如果父類中有抽象方法那一定是抽象類。 如果子類中都存在吃這個行為&#xff0c;但吃的具體東西不同&#xff0c;那么吃這個行為定義在父類里面就是抽象方法&#x…

Docker 數據卷與文件掛載

Docker 數據卷與文件掛載的區別與管理指南 在 Docker 中&#xff0c;數據卷&#xff08;Volume&#xff09;和文件掛載&#xff08;Bind Mount&#xff09;是兩種常用的數據持久化方式。它們的主要目的是將容器內的數據保存到主機上&#xff0c;以便在容器重啟或刪除后數據不會…

全面系統梳理多模態LLM對齊算法

1.alignment算法發展時間軸 2.MLMM alignment結構圖 3.目前alignment策略常見的損失函數形式 4.MLLM對齊數據構造與現有數據總結

廣告推薦算法 - 學習筆記

文章目錄 1、前言2、學習筆記2.1、什么是計算廣告系統&#xff1f; 1、前言 本篇博客&#xff0c;是我用來記錄學習廣告推薦算法的一些筆記和總結。 參考內容&#xff1a; 1、王喆&#xff1a;"深度"學習計算廣告 2、deepseek 2、學習筆記 2.1、什么是計算廣告系統…

ENSP學習day10

NAT地址轉換技術&#xff08;一&#xff09; NAT&#xff08;Network Address Translation&#xff09;地址轉換技術是一種在計算機網絡中常用的技術&#xff0c;在數據包從一個網絡傳輸到另一個網絡時&#xff0c;會對數據包中的源IP地址和目的IP地址進行修改的過程。這種技術…

數據分析中,文件解析庫解析內容樣式調整

CSV文件&#xff1a;使用Python標準庫中的csv模塊&#xff0c;通過簡單的文本解析來讀取數據。 Excel文件&#xff1a;使用專門的庫&#xff08;如openpyxl、xlrd&#xff09;來解析復雜的文件格式&#xff0c;或者使用pandas庫來簡化讀取過程。 在進行文件讀取后的格式調整時…

Swift 二分法求函數的近似解

在實際開發中會遇到一些工程問題&#xff0c;需要求解復雜函數方程的問題。使用傳統的數學方法比較難以處理。本文將使用二分法不斷獲取一個函數的近似解。 二分法&#xff1a;其基本思想是利用函數在某個區間內的連續性&#xff0c;通過不斷縮小區間范圍來逼近方程的解。 算法…

stanley 路徑跟蹤控制算法

文章目錄 寫在前面的話算法思路核心代碼1 路徑發布2 獲取車子當前位置3 預瞄路徑點4 計算航向誤差5 計算橫向誤差 完整控制代碼演示視頻 寫在前面的話 軌跡跟蹤 Trajectory Tracking 和 路徑跟蹤 Path Following 是機器人控制和自動駕駛領域中的兩個核心概念&#xff0c;盡管它…

Qt中通過QLabel實時顯示圖像

Qt中的QLabel控件用于顯示文本或圖像&#xff0c;不提供用戶交互功能。以下測試代碼用于從內置攝像頭獲取圖像并實時顯示&#xff1a; Widgets_Test.h&#xff1a; class Widgets_Test : public QMainWindow {Q_OBJECTpublic:Widgets_Test(QWidget *parent nullptr);~Widgets…

在STM32F7上實現CAN總線收發隊列

下面我將提供一個完整的STM32F7 CAN總線通信實現方案&#xff0c;包含中斷驅動的收發隊列管理。 1. CAN總線配置與隊列定義 can_bus.h #ifndef __CAN_BUS_H #define __CAN_BUS_H#include "stm32f7xx_hal.h" #include "queue.h"// CAN消息結構體 typedef …

【例3.5】位數問題(信息學奧賽一本通-1313)

【題目描述】 在所有的N位數中&#xff0c;有多少個數中有偶數個數字3?由于結果可能很大&#xff0c;你只需要輸出這個答案對12345取余的值。 【輸入】 讀入一個數N(N≤1000)。 【輸出】 輸出有多少個數中有偶數個數字3。 【輸入樣例】 2 【輸出樣例】 73 【題解代碼】 #incl…

pyQt學習筆記——Qt資源文件(.qrc)的創建與使用

Qt資源文件&#xff08;.qrc&#xff09;的創建與使用 1. 選擇打開資源2. 創建新資源3. 添加資源文件夾4. 選擇要加載的圖片文件5. 編譯resource.qrc文件6. 替換PySlide6為PyQt57. 其他說明 1. 選擇打開資源 在Qt項目中&#xff0c;可以通過windowIcon點擊選擇打開資源。 2. 創…

光電效應及普朗克常數的測定數據處理 Python實現

內容僅供參考&#xff0c;如有錯誤&#xff0c;歡迎指正&#xff0c;如有疑問&#xff0c;歡迎交流。 因為我不會Excel所以只能用Python來處理 祝大家早日擺脫物理實驗的苦海 用到的一些方法 PCHIP &#xff08;分段三次埃爾米特插值多項式&#xff09; 因為實驗時記錄的數…

2025最新3個wordpress好用的主題

紅色大氣的wordpress企業主題&#xff0c;適合服務行業的公司搭建企業官方網站使用。是一款專為中小企業和個人開發者設計的WordPress主題&#xff0c;旨在提供專業的網站構建解決方案。 通過此WordPress主題&#xff0c;用戶可以輕松創建和維護一個專業的企業網站&#xff0c…

OLLVM 增加 CC++ 字符串加密功能

版權歸作者所有&#xff0c;如有轉發&#xff0c;請注明文章出處&#xff1a;https://cyrus-studio.github.io/blog/ 前言 當我們如果沒有對字符串進行加密&#xff0c;使用 IDA 反匯編一下 so 可以看到 C 代碼中的字符串就直接暴露了。 字符串加密原理 sobf.c #include <…

桑福德·韋爾策劃美國捷運公司收購南美銀行案例分析

桑福德韋爾(Sanford I. Weill)在1981年策劃美國捷運公司(American Express)以5.5億美元收購南美貿易發展銀行所屬外國銀行機構的案例中,展現了其作為戰略家與執行者的雙重能力。這一交易的流程和韋爾的具體行為可從以下六個關鍵環節解析: 一、戰略定位與目標篩選 戰略目標…

人工智能與區塊鏈融合:開啟數字信任新時代

引言 在當今數字化飛速發展的時代&#xff0c;人工智能&#xff08;AI&#xff09;與區塊鏈技術正以前所未有的速度改變著我們的生活和工作方式。AI以其強大的數據處理和智能決策能力&#xff0c;為各行業帶來了效率的飛躍&#xff1b;而區塊鏈則以其去中心化、不可篡改的特性…

自動化逆向框架使用(Objection+Radare2)

1. 工具鏈架構與核心優勢 1.1 動靜結合逆向體系 graph LR A[動態分析] -->|Objection實時Hook| B[關鍵點定位] B --> C[行為數據捕獲] D[靜態分析] -->|Radare2深度解析| E[控制流重建] E --> F[漏洞模式識別] B --> F C --> F 組合優勢對比&…

流式ETL配置指南:從MySQL到Elasticsearch的實時數據同步

流式ETL配置指南&#xff1a;從MySQL到Elasticsearch的實時數據同步 場景介紹 假設您運營一個電商平臺&#xff0c;需要將MySQL數據庫中的訂單、用戶和產品信息實時同步到Elasticsearch&#xff0c;以支持實時搜索、分析和儀表盤展示。傳統的批處理ETL無法滿足實時性要求&…

Docker-Volume數據卷詳講

Docker數據卷-Volume 一&#xff1a;Volume是什么&#xff0c;用來做什么的 當刪除docker容器時&#xff0c;容器內部的文件就會跟隨容器所銷毀&#xff0c;在生產環境中我們需要將數據持久化保存&#xff0c;就催生了將容器內部的數據保存在宿主機的需求&#xff0c;volume …