【CF】Day43——Codeforces Round 906 (Div. 2) E1

E1. Doremy's Drying Plan (Easy Version)

題目:

思路:

very好題,加深對掃描線的應用,值得深思

由于k = 2,那我們就可以使用簡單一點的方法來寫

題目可以轉化為:給定n個線段,現在讓你刪去2條線段,使得沒有與線段相交的點數最多

那么首先明確一點,就是只有下雨在 0 ~ 2 的城市才可能造成奉獻,否則是不可能造成奉獻的,因為這個城市起碼與三個線段相交,我們只刪兩個是沒用的

那么對于這種區間變化的題目,我們首先想到的就是差分數組+掃描線

題目的答案肯定是: 本來就是 0 的城市 + 刪去 2 條線段后的新的為 0 城市

前部分好算,但是后部分就考我們的代碼能力了

對于題目我們觀察到 n 的數據只有 2e5,所以枚舉一遍肯定是沒問題的,我們可以枚舉每個城市的下雨天,如果這個城市只有 day1 這天下雨,那么就代表如果刪去 day1 可以直接增加這個城市的奉獻,如果這個城市在 day1 day2 的交集處,那我們可以令?{day1,day2} 的奉獻增加 1,因為同時刪去 day1 day2 就會使得這個城市干枯,那么對于 三天以上的 我們就可以忽略不計了

具體的,我們利用差分的思想,在每個下雨的左端點和右端點加上奉獻,但是由于我們要知道具體是第幾天下的雨,所以這里的奉獻不是 1/-1 而是 i/-i?

接下來我們和掃描線一樣的操作,這里由于我們要知道具體的天數,所以我們要使用一個set,而不是int 來存儲,我們利用 set 從第一個城市開始掃描,如果這個城市是某個雨天的起點,那么就將這個雨天加入set中,同時如果是終點,那么就刪去,然后這個城市掃描完后開始判斷

判斷過程如上面所示,如果set中只有1個元素,那么就說明這個城市只在 day1 這天下過雨,也就是說這個城市之下過一次雨,那么刪去 day1 就會有這個城市的奉獻,所以我們用一個cnt數組來儲存第 i 次雨天中只有一次下過雨的城市(即此次)的數量

如果set是空的,說明根本沒下過雨,直接加到最后的答案中即可

如過set是3個及其以上,那么直接跳過即可,因為不可能有奉獻

如果set是2個,那么我們就將 {day1,day2} 這個組合的奉獻加 1,具體的我們可以使用一個map,其代表同時處于 {day1,day2} 這個交集中的城市數量,如果我們刪除 day1 day2 那么就會增加這么多奉獻了

最后就是枚舉刪除方法了,我們有兩種刪除方法,一種是刪除兩個不相交的區間,一個是刪除相交的區間,所以要對這兩種刪法取最大值

第一種刪法顯然是刪除 cnt 中最大的兩個元素即可,因為 cnt 中都是只有一次的城市數,即只與一個線段相交的城市,這里不需要考慮 day1 day2 的情況,因為這些都是只有一次的,不可能相交

第二種刪法就是枚舉 map 中的組合,由于刪除了 day1 day2,所以還需要加上只有一次的情況,即還需要加上 cnt[day1] 和 cnt[day2]

至此完畢,具體實現看代碼

代碼:

#include <iostream>
#include <algorithm>
#include<cstring>
#include<cctype>
#include<string>
#include <set>
#include <vector>
#include <cmath>
#include <queue>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <stack>
#include <memory>
using namespace std;
#define int long long
#define yes cout << "YES\n"
#define no cout << "NO\n"
typedef pair<int, int> PII;
void solve()
{int n, m, k;cin >> n >> m >> k;//第 i 個位置有幾天是下著雨vector<vector<int>> q(n+m);vector<int> cnt(n + m,0);for (int i = 1; i <= m; i++){int l, r;cin >> l >> r;q[l].push_back(i);q[r + 1].push_back(-i);}set<int>p;int ans = 0, res = 0;map<PII, int> v;for (int i = 1; i <= n; i++){//枚舉第 i 個位置是否會開始下雨,以及停雨,如果開始下雨那么就會一直持續到停雨為止(掃描線)for (auto x : q[i]){if (x > 0)p.insert(x);elsep.erase(-x);}//這個位置內之前和現在都沒下雨,則必定干枯if (p.empty())ans++;//如果當前點之前只有一天下過雨,說明這天的奉獻可以加一,也就是只下過一次雨,到時候刪除這一天就能把這些 1 全加進奉獻else if (p.size() == 1)cnt[*p.begin()]++;//下雨天的 [day1,day2] 的相交處有城市,即當前的 i 點,但是不需要知道具體是那個點,所以 +1 即可else if (p.size() == 2)v[{*p.begin(), * p.rbegin()}]++;//三天及以上的都無法改變}//考慮刪除 [day1 day2] 這個線段的奉獻,一次刪兩個,那么除了相交的城市,還要加上這兩天中只下過一次雨的城市for (auto& x : v)res = max(res, x.second + cnt[x.first.first] + cnt[x.first.second]);//得到最大的兩個只有一天下雨的雨天sort(cnt.begin() + 1, cnt.begin() + 1 + m, greater<int>());//刪除最多的兩個res = max(res, cnt[1] + cnt[2]);cout << ans + res << endl;
}signed main()
{cin.tie(0)->sync_with_stdio(false);int t = 1;cin >> t;while (t--){solve();}return 0;
}

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

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

相關文章

電子設備的“記憶大腦”:NAND、NOR、EEPROM誰在掌控你的數據?

大家好&#xff0c;我是硅言。存儲芯片是電子設備的“記憶大腦”&#xff0c;未進入存儲行業工作之前&#xff0c;一聽到NAND、NOR、EEPROM這些專業名詞就頭大。本文用通俗的語言&#xff0c;帶大家了解這三種常見存儲芯片的核心區別和應用場景。 一、存儲芯片的“門派”&#…

可視化程序設計|| 實驗三:C#面向對象編程(二)

一、實驗目的 1.加深理解面向對象編程的概念&#xff0c;如類、對象、實例化等。 2.熟練掌握類的封裝、繼承和多態機制。 3.掌握編程常用的幾種排序算法。 4.理解異常的產生過程和異常處理的概念&#xff0c;掌握C#異常處理的方法。 5.能夠將面向對象思想應用與編程實踐&a…

STM32MPU開發之旅:從零開始構建嵌入式Linux鏡像

前言 在工業4.0與邊緣計算深度融合的今天&#xff0c;STM32MP257F作為意法半導體第二代工業級64位微處理器的旗艦產品&#xff0c;憑借異構計算架構、1.35 TOPS邊緣AI算力和軍工級安全特性&#xff0c;已成為工業自動化、機器視覺和新能源控制等領域的標桿方案。 性能躍遷的異…

大模型應用開發(PAFR)

Prompt問答 特征:利用大模型推理能力完成應用的核心功能 應用場景&#xff1a; 文本摘要分析 輿情分析 坐席檢查 AI對話 AgentFunction Calling 特征&#xff1a;將應用端業務能力與AI大模型推理能力結合&#xff0c;簡化復雜業務功能開發 應用場景: 旅行指南 數據…

SpringClound 微服務分布式Nacos學習筆記

一、基本概述 在實際項目中&#xff0c;選擇哪種架構需要根據具體的需求、團隊能力和技術棧等因素綜合考慮。 單體架構&#xff08;Monolithic Architecture&#xff09; 單體架構是一種傳統的軟件架構風格&#xff0c;將整個應用程序構建為一個單一的、不可分割的單元。在這…

WebRTC服務器Coturn服務器用戶管理和安全性

1、概述 Coturn服務器對用戶管理和安全方面也做了很多的措施&#xff0c;以下會介紹到用戶方面的設置 1.1、相關術語 1.1.1 realm 在 coturn 服務器中&#xff0c;域&#xff08;realm&#xff09;是一種邏輯上的分組概念&#xff0c;用于對不同的用戶群體、應用或者服務進行區…

基于opencv和PaddleOCR識別身份證信息

1、安裝組件 pip install --upgrade paddlepaddle paddleocr 2、完整code import cv2 import numpy as np from paddleocr import PaddleOCR# 初始化 PaddleOCR use_angle_clsTrue, lang"ch", det_db_thresh0.1, det_db_box_thresh0.5)def preprocess_image(image…

【6】GD32 高級通信外設 CAN、USBD

高級通信外設&#xff1a;CAN、USBD CAN CAN簡介、主要功能與相關API回環模式收發發送特定ID的數據幀實驗CAN數據幀的接收實驗使用過濾器接收特定的數據幀 USBD USB通信簡介USBD設備固件庫架構、分層文件與庫函數說明USBD模擬鍵盤應用USBD虛擬串口應用USBD模擬U盤應用

【LLM+Code】Windsurf Agent 模式PromptTools詳細解讀

一、前言 https://windsurf.com/ https://windsurf.com/blog/why-we-built-windsurf https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools/tree/main/Windsurf 二、System Prompt 相比于cursor和claude code&#xff0c; windsurf的system prompt非常長&am…

安全性測試常規測試點全解析:從基礎到高級的實戰指南

引言 安全性測試是保障軟件系統免受惡意攻擊的核心環節,其目標是識別系統在設計、開發、部署過程中存在的安全漏洞。本文將圍繞12大常規安全測試點展開,結合具體測試方法、示例代碼及防范建議,幫助讀者構建完整的安全測試體系。 一、認證與授權測試 1. 認證機制測試 測試…

OpenCV 圖形API(55)顏色空間轉換-----將圖像從 RGB 色彩空間轉換為 I420 格式函數RGB2I420()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 將圖像從 RGB 色彩空間轉換為 I420 色彩空間。 該函數將輸入圖像從 RGB 色彩空間轉換為 I420。R、G 和 B 通道值的常規范圍是 0 到 255。 輸出圖…

Pycharm(十六)面向對象進階

一、繼承 概述&#xff1a; 實際開發中&#xff0c;我們發現很多類中的步分內容是相似的&#xff0c;或者相同的&#xff0c;每次寫很麻煩&#xff0c;針對這種情況&#xff0c; 我們可以把這些相似&#xff08;相同的&#xff09;部分抽取出來&#xff0c;單獨地放到1個類中&…

Codeforces Round 1020 (Div. 3)(題解ABCDEF)

A. Dr. TC 有n次翻轉&#xff0c;從1到n&#xff0c;0->1,1->0&#xff0c;每次統計1的數量&#xff0c;設cnt1是字符串1的數量&#xff0c;n次就是n*cnt1&#xff0c; 但每個1都會被翻轉一次減去一個cnt1,再統計cnt0&#xff0c;每個被翻轉一次,答案就是(n-1)*cnt1cnt0…

HTML字符實體和轉義字符串

HTML字符實體和轉義字符串用于處理特殊字符&#xff0c;確保它們在不同上下文中正確顯示或解析。以下是詳細總結&#xff1a; HTML字符實體&#xff08;Character Entities&#xff09; ?定義?&#xff1a;用于在HTML中表示保留字符或不可見字符&#xff0c;避免與HTML語法…

FreeRTOS菜鳥入門(六)·移植FreeRTOS到STM32

目錄 1. 獲取裸機工程模版 2. 下載 FreeRTOS V9.0.0 源碼 3. FreeRTOS文件夾內容簡介 3.1 FreeRTOS文件夾 3.1.1 Demo文件夾 3.1.2 License 文件夾 3.1.3 Source 文件夾 3.2 FreeRTOS-Plus 文件夾 4. 往裸機工程添加 FreeRTOS 源碼 5. 拷貝 FreeRTOSConfig…

通過 Tailwind CSS 自定義樣式 實現深色模式切換

創建vite項目或者vue-cli配置大同小異 1、當前環境 Vue.js 3.5nuxtjs/tailwindcss 6.13.1nuxt3.15.4node18 這里主要依賴是tailwindcss 因為當前項目是使用nuxt開發。 2、配置顏色模式 在assets/css下創建main.css * {padding: 0;margin: 0;box-sizing: border-box; }[dat…

PWNOS:2.0(vulnhub靶機)

文章目錄 靶機地址主機發現、端口掃描web滲透目錄探測漏洞利用權限提升 解密工具地址總結 靶機地址 https://download.vulnhub.com/pwnos/pWnOS_v2.0.7z 這里如果是windows系統直接使用vmware或者virtubox打開可以使用,如果是mac系統需再去做一個配置&#xff0c;比較麻煩 這里…

Gartner魔力象限(Gartner Magic Quadrant)

Gartner魔力象限&#xff08;Gartner Magic Quadrant&#xff09;是由全球領先的研究和咨詢公司Gartner發布的市場研究報告&#xff0c;廣泛應用于IT行業&#xff0c;尤其是在技術供應商評估中。它以圖形化的方式展示了不同技術領域中各個供應商的市場表現&#xff0c;幫助企業…

信創時代開發工具選擇指南:國產替代背景下的技術生態與實踐路徑

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、CSDN平臺優質創作者&#xff0c;高級開發工程師&#xff0c;數學專業&#xff0c;10年以上C/C, C#, Java等多種編程語言開發經驗&#xff0c;擁有高級工程師證書&#xff1b;擅長C/C、C#等開發語言&#xff0c;熟悉Java常用開…

人口老齡化丨AI健康小屋如何實現防病于未然?

隨著全球老齡化加劇&#xff0c;“銀發浪潮” 對醫療資源、養老護理和健康管理提出了嚴峻挑戰。 由此智紳科技應運而生&#xff0c;七彩喜智慧養老系統構筑居家養老安全網。 AI 健康小屋作為銀發科技的創新載體&#xff0c;通過智能化健康監測、精準化風險預警、便捷化醫療銜…