NOIP2010提高組.引水入城

*前置題目

901. 滑雪

#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N = 310, INF = 0x3f3f3f3f;
const int dx[4] = {0, -1, 0, 1}, dy[4] = {1, 0, -1, 0};int n, m, h[N][N];
int f[N][N];
int ans;int dfs(int x, int y) {if (f[x][y] != -1) return f[x][y];f[x][y] = 1;for (int i = 0; i < 4; ++i) {int nx = x + dx[i], ny = y + dy[i];if (nx < 1 || nx > n || ny < 1 || ny > m || h[nx][ny] >= h[x][y]) continue;int son = dfs(nx, ny);f[x][y] = max(f[x][y], son + 1);}return f[x][y];
}int main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);cin >> n >> m;for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {cin >> h[i][j];}}memset(f, -1, sizeof f);for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {if (f[i][j] == -1) ans = max(ans, dfs(i, j));}}cout << ans << "\n";return 0;
}

907. 區間覆蓋

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;const int N = 1e5 + 10, INF = 0x3f3f3f3f;int s, e, n;
struct Seg {int l, r;bool operator< (const Seg &s) const {return l < s.l;}
} segs[N];int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);cin >> s >> e >> n;for (int i = 0; i < n; ++i) cin >> segs[i].l >> segs[i].r;sort(segs, segs + n);int ans = 0;for (int i = 0; i < n;) {int r = -INF;while (i < n && segs[i].l <= s) {r = max(r, segs[i].r);i++;}ans++;if (r < s) {cout << -1 << "\n";return 0;}if (r >= e) {cout << ans << "\n";return 0;}s = r;}cout << -1 << "\n";return 0;
}

題目

497. 引水入城
在這里插入圖片描述

算法標簽: 記憶化搜索, 貪心, d p dp dp

思路

發現每個水庫覆蓋的城市必須是連續的, 因為如果不連續, 其他地方的水也無法連接到當前城市, 因此問題就轉化為了最少需要多少區間能將最后的城市全部覆蓋?

也就是經典的區間覆蓋問題, 計算每個第一層的城市可以覆蓋哪些最后一層的城市可以記憶化搜索求解

代碼

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;const int N = 510, INF = 0x3f3f3f3f;
const int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};int n, m, h[N][N];
struct Seg {int l, r;bool operator<(const Seg &s) const {return l < s.l;}
} f[N][N];void dfs(int x, int y) {auto &p = f[x][y];if (p.l != -1) return;p.l = N;if (x == n) p = {y, y};for (int i = 0; i < 4; ++i) {int nx = x + dx[i], ny = y + dy[i];;if (nx < 1 || nx > n || ny < 1 || ny > m || h[nx][ny] >= h[x][y]) continue;dfs(nx, ny);p.l = min(p.l, f[nx][ny].l);p.r = max(p.r, f[nx][ny].r);}}int main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);cin >> n >> m;for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {cin >> h[i][j];}}memset(f, -1, sizeof f);for (int i = 1; i <= m; ++i) dfs(1, i);int cnt = 0;for (int i = 1; i <= m; ++i) {if (f[n][i].l == -1) cnt++;}if (cnt) {cout << 0 << "\n";cout << cnt << "\n";return 0;}vector<Seg> vec;for (int i = 1; i <= m; ++i) vec.push_back(f[1][i]);sort(vec.begin(), vec.end());int ans = 0;for (int i = 0, s = 1; i < m;) {int r = 0;while (i < m && vec[i].l <= s) {r = max(r, vec[i].r);i++;}ans++;if (r >= m) break;s = r + 1;}cout << 1 << "\n";cout << ans << "\n";return 0;
}

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

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

相關文章

Share02-小小腳本大大能量

各位看官你們好&#xff0c;又是一篇共享知識點的文章&#xff0c;今天我們來聊一聊腳本在我們上位組態中的作用。各個廠家的上位軟件或者觸屏軟件都內嵌了腳本功能&#xff0c;有的是二次開發的固定指令格式&#xff0c;有的可以接收廣域的標準語言指令。它帶給我們更多的方便…

LangChain接入azureopenai步驟(2025年初)

背景&#xff1a; 為了快速且規范的實現ai應用&#xff0c;可使用LangChain框架&#xff0c;便于后期維護。雖然deepseek異軍突起&#xff0c;在終端用戶占有率很高&#xff0c;但是仔細查閱相關api接口&#xff0c;尤其是自有知識庫需要使用的文本向量化模型方面&#xff0c;o…

阿里云國際站代理商:模型訓練中斷數據丟失怎么辦?

定期保存訓練狀態&#xff1a;在訓練過程中&#xff0c;設定自動保存訓練狀態的頻率&#xff0c;將模型的參數、優化器狀態、訓練數據的中間結果等定期保存到存儲介質上。這樣&#xff0c;當中斷發生時&#xff0c;可以恢復到上次保存的狀態&#xff0c;避免訓練進度的損失。 …

C++17更新內容匯總

C17 是 C14 的進一步改進版本&#xff0c;它引入了許多增強特性&#xff0c;優化了語法&#xff0c;并提升了編譯期計算能力。以下是 C17 的主要更新內容&#xff1a; 1. 結構化綁定&#xff08;Structured Bindings&#xff09; 允許同時解構多個變量&#xff0c;從 std::tup…

2025年Axure RP9無法免費使用Axure Cloud的解決方案

解決方案 更換新賬號&#xff0c;換了一個郵箱注冊&#xff0c;再登陸&#xff0c;又會給你30天的試用期。 對&#xff0c;辦法就是換個郵箱注冊&#xff0c;又續上30天的試用期。

供應鏈中的的“四流合一”

在供應鏈中&#xff0c;物流、資金流、信息流、商流是共同存在的&#xff0c;商流、信息流和資金流的結合將更好的支持和加強供應鏈上、下游企業之間的貨物、服務往來&#xff08;物流&#xff09;。 一、商流 在供應鏈中&#xff0c;上下游供應商的資金鏈條均可被金融服務機構…

MonkeyDev 如何創建一個root級級別的app

前提條件:有越獄的手機,XCode中已經安裝了Monkeydev 1. 和普通應用一個創建一個ios的工程 2. 在App的TARGETS>build setting> 中設置Apple Development 3. 設置User-Defined的配置 CODE_SIGNING_ALLOWED = NO MonkeyDevBuildPackageOnAnyBuild = NO MonkeyDevClearUi…

Excel時間類型函數(包括today、date、eomonth、year、month、day、weekday、weeknum、datedif)

目錄 1. TODAY()2. DATE()3. EOMONTH()4. YEAR()5. MONTH()6. DAY()7. WEEKDAY()8. WEEKNUM()9. DATEDIF()10.&#x1f4cc; 函數擴展與應用11. &#x1f4da; 時間函數基礎概念與分類 Excel 提供了許多 日期與時間類型的函數&#xff0c;用于操作與處理日期或時間數據。這些函…

Lumerical ------ Edge coupler design

Lumerical ------ Edge coupler design 引言正文無 Si Substrate 的仿真步驟有 Si Substrate 的仿真步驟引言 本文,我們將使用官方提供的 Edge coupler 設計教程,但是中間會帶有作者本人的設計的感悟。 正文 無 Si Substrate 的仿真步驟 打開 Edge_Coupler_No_Substrate.l…

Spring筆記06-數據持久化

在 Spring 中&#xff0c;數據持久化是將應用程序中的數據保存到持久化存儲&#xff08;如數據庫&#xff09;中的過程 &#xff0c;主要通過以下幾種方式實現&#xff1a; 1. JDBC&#xff08;Java Database Connectivity&#xff09; 原理&#xff1a;JDBC 是 Java 訪問關系…

spring boot集成reids的 RedisTemplate 序列化器詳細對比(官方及非官方)

RedisTemplate 序列化器詳細對比&#xff08;官方及非官方&#xff09; 1. 官方序列化器 (1) JdkSerializationRedisSerializer 特點&#xff1a; 基于 Java 原生序列化&#xff08;Serializable&#xff09;。支持復雜對象&#xff08;需實現 Serializable 接口&#xff09;…

ssh私鑰文件登錄問題:Load key invalid format

問題 在mac上面使用私鑰文件登錄時候&#xff0c;出現了如下錯誤&#xff1a; Load key “xxx.pem”: invalid format 但是&#xff0c;這個私鑰文件在win上面能夠正常使用ssh進行遠程登錄。在mac上面不能。而且&#xff0c;分別在win和mac上面分別查看了這兩個私鑰文件的md5…

AI戰略群與星際之門:軟銀AI投資版圖計劃深度解析

一、星際之門:萬億美元級 AI 基礎設施革命 1.1 項目背景與戰略定位 在 AI 技術迅猛發展的今天,算力已成為推動其前進的核心動力。軟銀聯合 OpenAI、甲骨文、英偉達、微軟、arm推出的 “星際之門”(Stargate)計劃,無疑是 AI 領域的一顆重磅炸彈。作為 AI 領域史上最大單筆…

教務系統ER圖

實體 1. 學生&#xff1a;具有姓名、學號、性別、系編號、電話、出生年月等屬性。學號通常是學生的唯一標識。 2. 課程&#xff1a;包含課程編號、課程名稱、課程學分、課程學時等屬性。課程編號一般用于唯一標識一門課程。 3. 教師&#xff1a;屬性有教師編號、教師名字、性別…

大數據(4.4)Hive多表JOIN終極指南:7大關聯類型與性能優化實戰解析

目錄 背景一、Hive JOIN類型與語法詳解1. 基礎JOIN類型2. 高級JOIN類型 二、JOIN實戰案例與調優案例1&#xff1a;兩表內連接&#xff08;訂單與用戶關聯&#xff09;案例2&#xff1a;多表鏈式JOIN&#xff08;用戶-訂單-商品&#xff09;案例3&#xff1a;處理數據傾斜&#…

【28BYJ-48】STM32同時驅動4個步進電機,支持調速與正反轉

資料下載&#xff1a;待更新。。。。 先驅動起來再說&#xff0c;干中學&#xff01;&#xff01;&#xff01; 1、實現功能 STM32同時驅動4個步進電機&#xff0c;支持單獨調速與正反轉控制 需要資源&#xff1a;16個任意IO口1ms定時器中斷 目錄 資料下載&#xff1a;待更…

[Lc6_記憶化搜索] 不同路徑 | 解決智力問題 | 有序三元組中的最大值

目錄 1.不同路徑 題解 2140. 解決智力問題 題解 2873. 有序三元組中的最大值 題解 1.不同路徑 鏈接&#xff1a;62. 不同路徑 一個機器人位于一個 m x n 網格的左上角 &#xff08;起始點在下圖中標記為 “Start” &#xff09;。 機器人每次只能向下或者向右移動一步…

軟件重構與項目進度的矛盾如何解決

軟件重構與項目進度之間的矛盾可以通過明確重構目標與范圍、采用漸進式重構策略、優化項目管理流程、提高團隊溝通效率、建立重構意識文化等方式解決。其中&#xff0c;采用漸進式重構策略尤為關鍵。漸進式重構是指在日常開發過程中&#xff0c;以小步驟持續進行重構&#xff0…

多臺服務器上docker部署 Redis 集群

規劃集群節點 確保你的服務器有固定 IP&#xff0c;比如&#xff1a; 172.16.17.100 172.16.17.101 172.16.17.102 每臺服務器運行 2 個 Redis 節點&#xff0c;總共 6 個節點&#xff0c;滿足 Redis Cluster 最小節點數要求。 2. 在每臺服務器上運行 Redis 在每臺服務器上執行…

【Pandas】pandas DataFrame dtypes

Pandas2.2 DataFrame Attributes and underlying data 方法描述DataFrame.index用于獲取 DataFrame 的行索引DataFrame.columns用于獲取 DataFrame 的列標簽DataFrame.dtypes用于獲取 DataFrame 中每一列的數據類型 pandas.DataFrame.dtypes pandas.DataFrame.dtypes 屬性用…