牛客網 NC16407 題解:托米航空公司的座位安排問題

牛客網 NC16407 題解:托米航空公司的座位安排問題

題目分析

在這里插入圖片描述

解題思路

本題可以采用深度優先搜索(DFS)來解決:

  1. 從左上角開始,按行優先順序遍歷每個座位
  2. 對于每個座位,有兩種選擇:
    • 選擇該座位(如果滿足條件)
    • 不選擇該座位
  3. 使用二維數組 st[][] 記錄座位狀態
  4. 當選擇了 K 個座位時,方案數加1

代碼詳解

#include <bits/stdc++.h>
using namespace std;// 全局變量定義
int n, m, k, ans;  // n行m列,選擇k個座位,ans記錄答案
const int N = 90;  // 數組大小
const int P = 420047;  // 取模數
int st[N][N];  // 記錄座位狀態// DFS函數:x,y表示當前位置,u表示已選擇的座位數
void dfs(int x, int y, int u) {// 如果已經選擇了k個座位,方案數+1if(u == k) {ans++;ans %= P;return;}// 如果當前列超出范圍,移動到下一行第一列if(y > m) {y = 1;x++;}// 如果所有位置都遍歷完,返回if(x > n) return;// 嘗試選擇當前位置if(!st[x-1][y] && !st[x][y-1]) {  // 檢查上方和左方是否為空st[x][y] = 1;  // 標記為已選dfs(x, y+1, u+1);  // 繼續搜索下一個位置st[x][y] = 0;  // 回溯,取消選擇}// 不選擇當前位置,繼續搜索dfs(x, y+1, u);
}int main() {int t;cin >> t;  // 讀入測試用例數while(t--) {cin >> n >> m >> k;  // 讀入行列數和需要選擇的座位數ans = 0;  // 初始化答案dfs(1, 1, 0);  // 從(1,1)開始搜索cout << ans % P << endl;  // 輸出結果}return 0;
}

算法分析

  1. 時間復雜度:O(2^(M*N)),最壞情況下需要遍歷所有可能的組合
  2. 空間復雜度:O(M*N),主要用于存儲座位狀態數組

優化建議

  1. 可以添加剪枝優化,比如:

    • 當剩余未遍歷的座位數小于還需要選擇的座位數時,直接返回
    • 可以預處理每個位置可以選擇的座位數,提前判斷是否可能達到目標
  2. 對于大規模數據,可以考慮使用動態規劃或狀態壓縮DP來優化

注意事項

  1. 數組大小要開夠,題目中說明 N*M <= 80,所以開90足夠
  2. 注意取模運算,每次更新答案時都要取模
  3. 回溯時要記得恢復狀態

總結

這道題目是一個典型的DFS回溯問題,通過合理的狀態記錄和回溯,可以有效地求解所有合法的座位安排方案。代碼實現簡潔,但要注意細節處理,如邊界條件和狀態恢復。

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

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

相關文章

智慧展館數字孿生平臺

2022年進博會上&#xff0c;國家會展中心憑借“數字孿生機器人調度平臺”驚艷全球&#xff0c;實現人機協同、虛實聯動的智慧運營&#xff1b;2023年天府農博園通過“BIMIoT”技術&#xff0c;貫穿展館全生命周期管理&#xff0c;成為農業會展的數字化標桿。這些案例背后&#…

胡說八道1---豆包問答總結

用戶提問 1 指令&#xff1a;25 - - [21/May/2025:01:35:45 0000] “POST /prod-api/system/base/getList HTTP/1.1” 405 559 “http://192.168.1.109:16380/login” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 …

C# AOP編程

AOP(面向切片編程的概念我這里就不介紹了&#xff0c;這里先介紹一下C#中的AOP編程框架。 1.AOP的分類 .net下支持AOP的框架很多&#xff0c;搜了一下有&#xff1a;PostSharp、AspectInjector、Fody 、Castle Windsor、Spring.NET、Ninject、Unity等&#xff0c;實現的方式主要…

linux編譯安裝srs

下載編譯運行 git clone https://github.com/ossrs/srs.git cd srs/trunk ./configure --h265on make需要安裝 yum install -y patch yum install -y unzip yum install -y tcl編譯完成后即可啟動SRS # 啟動 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/s…

EtherNet/IP機柜內解決方案在醫療控制中心智能化的應用潛能和方向分析

引言 在數智化轉型浪潮席卷各行各業的今天,醫療領域同樣面臨著提升運營效率、改善患者體驗和加強系統可靠性的多重挑戰。Rockwell Automation于2025年5月20日推出的EtherNet/IP機柜內解決方案,為醫療中心的自動化升級提供了一種創新路徑。本報告將深入分析這一解決方案的核心…

大模型下載到本地

一、huggingface 方式一 from huggingface_hub import snapshot_downloadlocal_dir "./origin" model_name "Qwen/Qwen2.5-1.5B"# snapshot_download(repo_idmodel_name, cache_dirlocal_dir) model_dir snapshot_download(model_name,cache_dirlocal…

【C++】vector容器實現

目錄 一、vector的成員變量 二、vector手動實現 &#xff08;1&#xff09;構造 &#xff08;2&#xff09;析構 &#xff08;3&#xff09;尾插 &#xff08;4&#xff09;擴容 &#xff08;5&#xff09;[ ]運算符重載 5.1 迭代器的實現&#xff1a; &#xff08;6&…

PostgreSQL日常維護

目錄 一、PostgreSQL 概述 二、基本使用 &#xff08;一&#xff09;登錄數據庫 &#xff08;二&#xff09;數據庫操作 1. 列出數據庫 2. 創建數據庫 3. 刪除數據庫 4. 切換數據庫 5. 查看數據庫大小 &#xff08;三&#xff09;數據表操作 1. 列出表 2. 創建表 …

廣東省省考備考(第十六天5.21)—言語:語句排序題(聽課后強化)

錯題 解析 對比選項&#xff0c;確定首句。①句介紹目前人類可以利用一些技術手段進入元宇宙&#xff0c;憑借網絡重新定義自己&#xff0c;體驗一種全新的生活&#xff0c;②句介紹對于多數人來說&#xff0c;首先要弄清楚什么是元宇宙&#xff0c;③句介紹元宇宙是指超越現實…

高并發架構設計之限流

一、引言 再強大的系統&#xff0c;也怕流量短事件內集中爆發&#xff0c;就像銀行怕擠兌一樣&#xff0c;所以&#xff0c;高并發另一個必不可少的模塊就是限流。限流是一種通過控制請求的速率或數量來保護系統免受過載的技術。流控的精髓是限制單位時間內的請求量&#xff0…

視頻監控聯網系統GB28181協議中設備控制流程詳解

文章目錄 9.3 設備控制9.3.1 基本要求9.3.2 命令流程9.3.2.1 無應答命令流程 9.3.3 協議接口9.3.3.1 請求命令9.3.3.2 應答命令 智聯視頻超融合平臺介紹 9.3 設備控制 9.3.1 基本要求 控制滿足以下基本要求&#xff1a; a) 源設備向目標設備發送控制命令&#xff0c;控制命令…

深入剖析原型模式:原理、實現與應用實踐

在軟件開發的世界里,設計模式如同建筑師手中的藍圖,為復雜系統的構建提供了行之有效的解決方案。其中,原型模式(Prototype Pattern)作為創建型設計模式的重要一員,以其獨特的對象創建方式,在提高代碼復用性、增強系統靈活性等方面發揮著關鍵作用。本文將深入剖析原型模式…

圖繪Linux:基礎指令脈絡閣

目錄 Linux命令行介紹 目錄操作 ls 目錄所含文件信息 ls 常用選項 pwd 在那個目錄下 cd 進入目錄 mkdir 創建目錄 文件操作 touch 創建普通文件 echo向文件寫入 cat 輸出文件內容 cp 拷貝文件/目錄 mv剪切重命名 rm 刪除文件/目錄 查找 * 匹配符 man 查找指令 …

數據分析 —— 數據預處理

一、什么是數據預處理 數據預處理&#xff08;Data Preprocessing&#xff09;是數據分析和機器學習中至關重要的步驟&#xff0c;旨在將原始數據轉換為更高質量、更適合分析或建模的形式。由于真實世界的數據通常存在不完整、不一致、噪聲或冗余等問題&#xff0c;預處理可以…

【Redis】哨兵(Sentinel)機制

文章目錄 1. Redis Sentinel的概念1.1 基本概念1.2 引出高可用 2. Redis Sentinel的部署&#xff08;基于docker&#xff09;2.1 部署2.2 驗證2.3 選舉流程 Redis 的主從復制模式下&#xff0c;?旦主節點由于故障不能提供服務&#xff0c;需要人工進行主從切換&#xff0c;同時…

初識Linux · 五種IO模型和非阻塞IO

目錄 前言&#xff1a; 五種IO模型 什么是IO IO模型 非阻塞IO 前言&#xff1a; 前文我們已經將網絡的基本原理介紹完了&#xff0c;都是通過圍繞TCP/IP四層協議&#xff0c;將應用層&#xff0c;傳輸層&#xff0c;網絡層&#xff0c;數據鏈路層全部介紹完畢&#xff0c…

Node.js 24發布:性能與安全雙提升

在科技的迅速發展中&#xff0c;Node.js作為一個備受青睞的開源跨平臺Java運行環境&#xff0c;近日迎來了其24.0版本的正式發布。此次更新不僅承諾提升性能和安全性&#xff0c;還為開發者提供了更為順暢的開發體驗&#xff0c;值得我們深入探討。 Node.js 24.0的最大亮點之一…

SLAM文獻之-SuperOdometry: Lightweight LiDAR-inertial Odometry and Mapping

《Super Odometry: IMU-centric LiDAR-Visual-Inertial Estimator for Challenging Environments》是一篇旨在增強 SLAM 系統在惡劣環境下魯棒性的工作&#xff0c;尤其關注塵霧、煙霧等遮擋條件下的魯棒估計。下面從算法原理、公式推導、創新點和應用場景四個方面進行詳細解析…

指令燒錄ORIN NANO操作系統

1 概述 模組為ORIN NANO 4GB版本 Ubuntu系統為18.04虛擬機 說明&#xff1a;刷機過程會有重新連接USB的操作&#xff0c;燒寫過程需要注意虛擬機提示&#xff0c;官方不建議使用虛擬機&#xff0c;建議直接使用ubuntu操作系統的機器。 2 下載燒錄所需文件 進入到下載網址&am…

游戲引擎學習第287天:加入brain邏輯

Blackboard&#xff1a;動態控制類似蛇的多節實體 我們目前正在處理一個關于實體系統如何以組合方式進行管理的問題。具體來說&#xff0c;是在游戲中實現多個實體可以共同或獨立行動的機制。例如&#xff0c;我們的主角擁有兩個實體組成部分&#xff0c;一個是身體&#xff0…