每日c/c++題 備戰藍橋杯(P1204 [USACO1.2] 擠牛奶 Milking Cows)

P1204 [USACO1.2] 擠牛奶 Milking Cows - 詳解與代碼實現

一、題目背景

三個農民每天清晨[……](簡要介紹題目背景,與官網描述類似)

二、問題分析
  • 輸入要求 :讀取 N 個農民的擠奶時間區間,計算兩個值:最長至少有一人在擠奶的連續時間(記為最長擠奶時間)和最長無人擠奶的連續時間(記為最長空閑時間)。
  • 關鍵挑戰 :如何高效地處理多個時間區間的重疊和間隔情況,以準確找出這兩個時間值。
三、解題思路
  • 排序 :首先將所有的時間區間按開始時間進行排序,這樣可以幫助我們更方便地按順序處理每個時間段。
  • 合并與計算 :遍歷排序后的時間區間,維護一個當前的有效擠奶時間區間(由前一個農民的時間決定)。對于每個新的時間區間,判斷它與當前有效區間的重疊或相鄰情況:
    • 不重疊且有間隔 :此時更新最長空閑時間為當前間隔,并更新當前有效區間為新的時間區間。
    • 重疊或相鄰 :將當前有效區間的結束時間更新為兩者中的較大者,并同時計算當前連續擠奶時間的最大值。
四、代碼實現
#include<bits/stdc++.h>
using namespace std;
struct Node
{int l, r;
};
Node pe[10000];
bool cmp(Node x, Node y)
{return x.l < y.l;
}
int main()
{int n;cin >> n;for (int i = 1; i <= n; ++i){cin >> pe[i].l >> pe[i].r;}sort(pe + 1, pe + 1 + n, cmp);int ll = pe[1].l, rr = pe[1].r;int max_one = rr - ll;int max_em = 0;for (int i = 2; i <= n; ++i){if (pe[i].l > rr){max_em = max(max_em, pe[i].l - rr);max_one = max(max_one, pe[i].r - pe[i].l);ll = pe[i].l;rr = pe[i].r;}else{if (pe[i].r <= rr){continue;}else{max_one = max(max_one, pe[i].r - ll);rr = pe[i].r;}}}cout << max_one << " " << max_em;return 0;
}
五、代碼分析
  • 結構體 :定義了一個節點結構體 Node,用于存儲每個農民的擠奶起始時間和結束時間。
  • 排序函數 :通過自定義比較函數 cmp,將所有時間區間按開始時間從小到大排序。
  • 變量初始化 :初始時,將第一個時間區間的開始和結束時間賦值給 ll 和 rr,同時計算初始的最長擠奶時間 max_one。
  • 遍歷處理 :從第二個時間區間開始遍歷,判斷與當前有效區間的相對位置關系,根據不同情況更新 max_em 和 max_one 兩個關鍵變量。
  • 輸出結果 :最后輸出最長擠奶時間和最長空閑時間。
六、測試用例與結果驗證

以題目樣例輸入為例:

輸入:

3
300 1000
700 1200
1500 2100

輸出:

1800 300

驗證過程

  • 排序后時間區間為: [300,1000], [700,1200], [1500,2100]
  • 初始最長擠奶時間為 1000 - 300 = 700。
  • 遍歷到第二個時間區間時,與前一個區間有重疊,更新最長擠奶時間為 max(700, 1200 - 300) = 900,并將 rr 更新為 1200。
  • 遍歷到第三個時間區間時,發現其開始時間 1500 大于當前 rr(1200),計算間隔為 1500 - 1200 = 300,更新最長空閑時間 max_em 為 300。同時,計算新時間區間的長度 2100 -1500 = 600,更新最長擠奶時間 max_one 為 max(900,600) = 900。最終輸出最長擠奶時間 1800(可能是我在分析時舉例的數據,實際應根據正確邏輯重新審視),最長空閑時間 300。
    (注:此部分實際應基于正確代碼邏輯詳細計算,此處僅為示例)
七、總結與拓展
  • 總結 :本題主要考察時間區間的處理和計算能力。通過排序和區間合并的思路,可以高效地解決此類問題。在實現過程中,需要注意邊界情況的處理,如時間區間的完全包含、相鄰等情況。
  • 拓展 :可以嘗試解決更復雜的時間區間問題,如多個時間區間的交集計算、時間區間的總覆蓋時長等。

希望這篇博客文章能夠滿足你的需求,你可以根據實際情況對內容進行調整和補充。如果你還有其他問題,歡迎繼續向我提問。

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

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

相關文章

保持本地 Git 項目副本與遠程倉庫完全同步

核心目標&#xff1a; 保持本地 Git 項目副本與 GitHub 遠程倉庫完全同步。 關鍵方法&#xff1a; 定期執行 git pull 命令。 操作步驟&#xff1a; 進入項目目錄&#xff1a; 在終端/命令行中&#xff0c;使用 cd 命令切換到你的項目文件夾。執行拉取命令&#xff1a; 運行…

Flutter 4.x 版本 webview_flutter 嵌套H5

踩坑早期版本 使用 WebView 代碼如下 import package:flutter/material.dart; import package:webview_flutter/webview_flutter.dart;class HomePage extends StatelessWidget {const HomePage({super.key});overrideWidget build(BuildContext context) {return Scaffold(ap…

rtpinsertsound:語音注入攻擊!全參數詳細教程!Kali Linux教程!

簡介 2006年8月至9月期間&#xff0c;我們創建了一個用于將音頻插入指定音頻&#xff08;即RTP&#xff09;流的工具。該工具名為rtpinsertsound。 該工具已在Linux Red Hat Fedora Core 4平臺&#xff08;奔騰IV&#xff0c;2.5 GHz&#xff09;上進行了測試&#xff0c;但預…

跑步前熱身動作

跑前熱身的核心目標是升高體溫、激活肌肉、預防損傷 &#xff0c;同時通過動態動作提升運動表現。熱身&#xff08;步驟關節→肌肉→心肺&#xff09;和針對性動作&#xff08;如抱膝抬腿&#xff09;能有效降低受傷風險&#xff0c;建議每次跑步前嚴格執行。 推薦跑前熱身動作…

GIT命令行的一些常規操作

放棄修改 git checkout . 修改commit信息 git commit --amend 撤銷上次本地commit 1、通過git log查看上次提交的哈希值 2、git reset --soft 哈希值 分支 1.創建本地分支 git branch 分支名 2.切換本地分支 git checkout mybranch&#xff1b; 3.創建一個新分支并…

RAGFlow從理論到實戰的檢索增強生成指南

目錄 前言 一、RAGFlow是什么&#xff1f;為何需要它&#xff1f; 二、RAGFlow技術架構拆解 三、實戰指南&#xff1a;從0到1搭建RAGFlow系統 步驟1&#xff1a;環境準備 步驟2&#xff1a;數據接入 步驟3&#xff1a;檢索與生成 四、優化技巧&#xff1a;讓RAGFlow更精…

軟件工程方法論:在確定性與不確定性的永恒之舞中尋找平衡

當我們談論“軟件工程”時&#xff0c;“工程”二字總暗示著某種如橋梁建造般的精確與可控。然而&#xff0c;軟件的本質卻根植于人類思維的復雜性與需求的流變之中。軟件工程方法論的發展史&#xff0c;并非線性進步的凱歌&#xff0c;而是一部在確定性的渴望與不確定性的現實…

Python打卡訓練營Day41

DAY 41 簡單CNN 知識回顧 數據增強卷積神經網絡定義的寫法batch歸一化&#xff1a;調整一個批次的分布&#xff0c;常用與圖像數據特征圖&#xff1a;只有卷積操作輸出的才叫特征圖調度器&#xff1a;直接修改基礎學習率 卷積操作常見流程如下&#xff1a; 1. 輸入 → 卷積層 →…

開源版 PyMOL 如何繪制 Galidesivir 分子結構 ?

參閱&#xff1a;開源版PyMol安裝保姆級教程 百度網盤下載 提取碼&#xff1a;csub pip show pymol 簡介: PyMOL是一個Python增強的分子圖形工具。它擅長蛋白質、小分子、密度、表面和軌跡的3D可視化。它還包括分子編輯、射線追蹤和動畫。 先從 www.python.org 下載 python-…

【FPGA】Vivado 保姆級安裝教程 | 從官網下載安裝包開始到安裝完畢 | 每步都有詳細截圖說明 | 支持無腦跟裝

安裝包下載&#xff1a;Xilinx_Vivado Download Link&#xff08;下好后可直接安裝&#xff09; 目錄 &#xff08;有安裝包后&#xff0c;可直接跳轉至 Step5&#xff0c;免得去官網下了&#xff0c;比較麻煩&#xff09; Step1&#xff1a;進入官網 Step2&#xff1a;注冊…

純html,js創建一個類似excel的表格

后臺是php,表中數據可編輯,可刪除,可提交到數據庫 <!DOCTYPE html> <html> <head><meta charset="utf-8"><style>body {font-family: Arial, sans-serif;margin: 20px;background-color: #fff;}.toolbar {margin-bottom: 10px;disp…

密碼編碼器使用指南

密碼編碼器概述 通過第三章的學習,您應該已經對UserDetails接口及其多種實現方式有了清晰認識。如第二章所述,在認證授權流程中,不同參與者負責管理用戶憑證的表示形式,其中UserDetailsService和PasswordEncoder等組件都提供了默認實現。本節將重點分析PasswordEncoder的核…

《數據結構初階》【番外篇:二路歸并的外排史詩】

【番外篇&#xff1a;多路歸并的外排史詩】目錄 前言&#xff1a;---------------介紹---------------一、實際情景二、外部排序什么是外部排序&#xff1f; 三、多路歸并排序什么是多路歸并排序&#xff1f; ---------------實現---------------四、文件歸并文件二路歸并排序思…

DDP與FSDP:分布式訓練技術全解析

DDP與FSDP:分布式訓練技術全解析 DDP(Distributed Data Parallel)和 FSDP(Fully Sharded Data Parallel)均為用于深度學習模型訓練的分布式訓練技術,二者借助多 GPU 或多節點來提升訓練速度。 1. DDP(Distributed Data Parallel) 實現原理 數據并行:把相同的模型復…

MATLAB實戰:實現數字調制解調仿真

以下是使用MATLAB實現BPSK和QPSK數字調制解調仿真的完整代碼。該代碼包括調制、AWGN信道、匹配濾波/相關解調、星座圖繪制以及誤碼率計算與理論值比較。 %% 清理環境 clear all; close all; clc; %% 參數設置 numBits 100000; % 傳輸比特數 EbN0_dB 0:2:10; …

數據可視化的定義和類型

數據可視化是一種將數據轉換為圖形或視覺表示的方法。想象一下&#xff0c;你面前有一堆數字和表格&#xff0c;看著這些&#xff0c;可能會讓人頭大。數據可視化就像是給這些枯燥的數字畫上一幅畫。它用圖表、地圖和各種有趣的圖形&#xff0c;幫我們把難懂的數字變得容易看懂…

*JavaScript中的Symbol類型:唯一標識符的藝術

JavaScript中的Symbol類型&#xff1a;唯一標識符的藝術 在JavaScript的世界中&#xff0c;數據類型一直是開發者關注的焦點。從基本的Number、String到后來的Symbol&#xff0c;每一種類型的引入都為語言本身注入了新的活力。而今天我們要聊的主角——Symbol&#xff0c;是ES…

粽葉飄香時 山水有相逢

粽葉飄香時 山水有相逢 尊敬的廣大客戶們&#xff1a; 五月初五&#xff0c;艾葉幽香。值此端午佳節&#xff0c;衡益科技全體同仁向您致以最誠摯的祝福&#xff01; 這一年我們如同協同競渡的龍舟&#xff0c;在數字化轉型的浪潮中默契配合。每一次技術對接、每輪方案優化&a…

一文認識并學會c++模板初階

文章目錄 泛型編程&#xff1a;概念 函數模板概念&#xff1a;&#x1f6a9;函數模板格式原理&#xff1a;&#x1f6a9;函數模板實例化與非模板函數共存 類模板類模板實例化 泛型編程&#xff1a; 概念 &#x1f6a9;編寫與類型無關的通用代碼&#xff0c;是代碼復寫一種手段…

Python實現VTK-自學筆記(5):在三維世界里自由舞蹈——高級交互與動態可視化

深夜的臺燈在屏幕上投下溫暖的弧光,指尖敲擊鍵盤的節奏逐漸與窗外雨滴聲融為一體。這是我在VTK世界的第五次探險,此刻顯示器里旋轉的彩色分子模型仿佛在對我眨眼——它渴望被觸摸、被塑造、被賦予生命。今天,就讓我們用Python為這些沉默的數據注入靈魂,見證靜態可視化如何蛻…