2021 CCF CSP-S2.廊橋分配

題目

4090. 廊橋分配
在這里插入圖片描述

算法標簽: 模擬, 貪心, 堆

思路

可以將每個飛機的起始時間和離開時間看作一個線段, 每個廊橋在同一時間只能服務一架飛機, 因為先到先得因此是按照起始時間進行排序

每個廊橋只關心最后一架飛機離開的時刻, 對于每個飛機有開始時間和離開時間, 對于每個空閑的廊橋來說, 安排到任意一個廊橋都是一樣的, 樸素的做法是枚舉國內分配廊橋的數量, 再枚舉飛機, 但是時間復雜來到了 1 0 5 × 1 0 5 10 ^ 5 \times 10 ^ 5 105×105, 需要進行優化

因為放置到每個空閑廊橋是一樣的, 因此可以按照廊橋編號從小到大放置飛機, 然后枚舉分配給國內航班的廊橋數量, 維護兩個小根堆分別代表使用的廊橋和空閑的廊橋, 時間復雜度 O ( n log ? n ) O(n\log n) O(nlogn)

代碼

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;const int N = 10010, M = 50010, K = 19, INF = 0x3f3f3f3f;int n, m, q;
int head[N], ed[N << 1], ne[N << 1], w[N << 1], idx;
// 求路徑上信息使用倍增優化
int fa[N][K], f[N][K], depth[N];
int p[N];
struct Edge {int u, v, w;bool operator< (const Edge &e) const {return w > e.w;}
} edges[M];void add(int u, int v, int val) {ed[idx] = v, ne[idx] = head[u], w[idx] = val, head[u] = idx++;
}int find(int u) {if (p[u] != u) p[u] = find(p[u]);return p[u];
}void kruskal() {sort(edges, edges + m);for (int i = 0; i < m; ++i) {auto [u, v, w] = edges[i];int fa1 = find(u);int fa2 = find(v);if (fa1 == fa2) continue;p[fa2] = fa1;add(u, v, w), add(v, u, w);}
}void dfs(int u, int pre, int dep) {depth[u] = dep;for (int i = head[u]; ~i; i = ne[i]) {int v = ed[i];if (v == pre) continue;fa[v][0] = u;f[v][0] = w[i];for (int k = 1; k < K; ++k) {int mid = fa[v][k - 1];fa[v][k] = fa[mid][k - 1];f[v][k] = min(f[v][k - 1], f[mid][k - 1]);}dfs(v, u, dep + 1);}
}int calc(int u, int v) {if (find(u) != find(v)) return -1;int ans = INF;if (depth[u] < depth[v]) swap(u, v);for (int k = K - 1; k >= 0; --k) {if (depth[fa[u][k]] >= depth[v]) {ans = min(ans, f[u][k]);u = fa[u][k];}}if (u == v) return ans;for (int k = K - 1; k >= 0; --k) {if (fa[u][k] != fa[v][k]) {ans = min({ans, f[u][k], f[v][k]});u = fa[u][k];v = fa[v][k];}}ans = min({ans, f[u][0], f[v][0]});return ans;
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);memset(head, -1, sizeof head);memset(f, 0x3f, sizeof f);cin >> n >> m;for (int i = 1; i <= n; ++i) p[i] = i;for (int i = 0; i < m; ++i) {int u, v, w;cin >> u >> v >> w;edges[i] = {u, v, w};}kruskal();for (int i = 1; i <= n; ++i) {if (depth[i] == 0) dfs(i, -1, 1);}cin >> q;while (q--) {int u, v;cin >> u >> v;int ans = calc(u, v);if (ans == INF) ans = -1;cout << ans << "\n";}return 0;
}

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

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

相關文章

MCP系列之實踐篇:搭建你的第一個MCP應用

前言 在前兩篇文章中&#xff0c;我們已經介紹了MCP&#xff08;模型上下文協議&#xff09;的基本概念和技術架構。本篇文章將從理論走向實踐&#xff0c;通過一個簡單但完整的案例&#xff0c;手把手教你如何搭建和調試一個基于MCP的應用。我們將一起構建一個天氣查詢和活動…

《軟件設計師》復習筆記(4.2)——關系代數、函數依賴、范式

目錄 一、關系代數 基本運算 笛卡爾積&#xff08;&#xff09; 投影&#xff08;π&#xff09; 選擇&#xff08;σ&#xff09; 自然連接&#xff08;?&#xff09; 真題示例&#xff1a; 二、函數依賴 基本概念 Armstrong公理系統 鍵與約束 三、范式&#xff…

【TeamFlow】 1 TeamFlow 去中心化生產協同系統架構

總體架構設計 采用四層混合架構&#xff0c;結合分層設計與去中心化網絡&#xff1a; #mermaid-svg-qBgw9wMd8Gi0gOci {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qBgw9wMd8Gi0gOci .error-icon{fill:#552222;}…

宜搭與金蝶互通——連接器建立

一、 進入連接器工廠 圖1 連接器入口 二、 新建連接器 圖2 新建連接器第一步 1、 連接器顯示名,如圖2中①所示; 2、 圖2中②域名,是金蝶系統API接口里面的“完整服務地址”com之前的信息,不含“https”,如圖3中①所示; 3、 Base Url通常為“/”,如圖2…

【Linux系統篇】:System V IPC核心技術解析---從共享內存到消息隊列與信號量

?感謝您閱讀本篇文章&#xff0c;文章內容是個人學習筆記的整理&#xff0c;如果哪里有誤的話還請您指正噢? ? 個人主頁&#xff1a;余輝zmh–CSDN博客 ? 文章所屬專欄&#xff1a;c篇–CSDN博客 文章目錄 一.System V共享內存&#xff08;重點&#xff09;1.基本概念和原理…

C++ 20 信號量詳解

C 20 信號量詳解 一、信號量類型 C20 標準中定義了兩種信號量&#xff1a; std::counting_semaphore<Max>&#xff1a;計數信號量&#xff08;允許資源池最多有 Max 個資源&#xff09;std::binary_semaphore&#xff1a;二進制信號量&#xff08;等價于 std::countin…

Vue3中provide和inject的用法示例

在 Vue3 中&#xff0c;provide 和 inject 用于實現跨層級組件通信。以下是一個簡單的示例&#xff1a; 1. 父組件 (祖先組件) - 提供數據 javascript 復制 // ParentComponent.vue import { provide, ref, reactive } from vue;export default {setup() {// 提供靜態數據p…

Spring數據訪問全解析:ORM整合與JDBC高效實踐

目錄 一、Spring ORM集成深度剖析 &#x1f31f; ORM模塊架構設計 核心集成特性&#xff1a; 整合MyBatis示例配置&#xff1a; 二、Spring JDBC高效實踐指南 &#x1f31f; 傳統JDBC vs Spring JDBC對比 &#x1f31f; JdbcTemplate核心操作示例 批量操作優化&#xf…

UE快速預覽材質節點快捷鍵

開始預覽節點 添加快捷鍵 然后按R就能快速預覽 不用再右鍵了 非常方便

Java漏洞原理與實戰

一、基本概念 1、序列化與反序列化 (1)序列化:將對象寫入IO流中&#xff0c;ObjectOutputStream類的writeobject()方法可以實現序列化 (2)反序列化:從IO流中恢復對象&#xff0c;ObjectinputStream類的readObject()方法用于反序列化 (3)意義:序列化機制允許將實現序列化的J…

每日算法【雙指針算法】(Day 1-移動零)

雙指針算法 1.算法題目&#xff08;移動零&#xff09;2.講解算法原理3.編寫代碼 1.算法題目&#xff08;移動零&#xff09; 2.講解算法原理 數組劃分&#xff0c;數組分塊&#xff08;快排里面最核心的一步&#xff09;只需把0改為tmp 雙指針算法&#xff1a;利用數組下標來…

SQL Server 的鎖機制

SQL Server 的鎖機制是為了確保數據的一致性和事務的隔離性而設計的。以下是針對讀寫操作的鎖定行為的詳細說明&#xff1a; 1. 鎖的基本類型 SQL Server 的鎖主要分為以下幾類&#xff1a; 共享鎖&#xff08;Shared Lock, S Lock&#xff09; 用於讀操作&#xff08;如 S…

AIP目錄

專注于開發靈活API的設計文檔。 AIP是總結了谷歌API設計決策的設計文檔&#xff0c;它也為其他人提供了用文檔記錄API設計規則和實踐的框架和系統。 基礎1AIP目的和指南2AIP編號規則3AIP版本管理200先例8AIP風格與指導9術語表流程100API設計評審常見問題205Beta版本發布前置條…

CSS進度條帶斑馬紋動畫(有效果圖)

效果圖 .wxml <view class"tb"><view class"tb-line" style"transform:translateX({{w%}})" /> </view> <button bind:tap"updateLine">增加進度</button>.js Page({data: {w:0,},updateLine(){this.…

【工具-Krillin AI】視頻翻譯、配音、語音克隆于一體的一站式視頻多語言轉換工具~

Krillin AI 是全能型音視頻本地化與增強解決工具。這款簡約而強大的工具&#xff0c;集音視頻翻譯、配音、語音克隆于一身&#xff0c;支持橫豎屏格式輸出&#xff0c;確保在所有主流平臺&#xff08;嗶哩嗶哩&#xff0c;小紅書&#xff0c;抖音&#xff0c;視頻號&#xff0c…

zset.

zset 有序集合 zset 保留了 set 不能有重復元素的特點 zset 中的每個元素都有一個唯一的浮點類型的分數&#xff08;score&#xff09;與之關聯&#xff0c;使得 zset 內部的元素是可以維護有序性的。但是這個有序不是用下標作為排序依據的&#xff0c;而是根據分數&#xf…

Spring 數據庫編程

Spring JDBC 傳統的JDBC在操作數據庫時&#xff0c;需要先打開數據庫連接&#xff0c;執行SQL語句&#xff0c;然后封裝結果&#xff0c;最后關閉數據庫連接等資源。頻繁的數據庫操作會產生大量的重復代碼&#xff0c;造成代碼冗余&#xff0c;Spring的JDBC模塊負責數據庫資源…

492Q 型氣缸蓋雙端面銑削組合銑床總體設計

一、引言 492Q 型氣缸蓋是發動機的重要組成部分&#xff0c;其雙端面的加工精度對發動機的性能和可靠性有著重要影響。設計一款適用于 492Q 型氣缸蓋雙端面銑削的組合銑床&#xff0c;能夠提高加工效率和質量&#xff0c;滿足發動機生產的需求。 二、總體設計要求 加工精度&…

顎式破碎機的設計

一、引言 顎式破碎機作為礦山、建材等行業的重要破碎設備&#xff0c;其性能優劣直接影響物料破碎效率與質量。隨著工業生產規模的擴大和對破碎效率要求的提高&#xff0c;設計一款高效、穩定、節能的顎式破碎機具有重要意義。 二、設計需求分析 處理能力&#xff1a;根據目…

第三階段面試題

Nginx nginx常用模塊以及其功能 proxy模塊&#xff0c;進行代理功能 ssl模塊&#xff0c;進行HTTPS協議的使用 gzip模塊&#xff0c;進行傳輸數據的壓縮 upstream模塊&#xff0c;進行反向代理時使用 static模塊&#xff0c;靜態資源進行訪問的模塊 cache模塊&#xff0…