23牛客多校9 I Non-Puzzle: Segment Pair

也許更好的閱讀體驗

D e s c r i p t i o n \mathcal{Description} Description
n n n對區間,要求每對區間恰好選一個使得選出來的 n n n個區間有交集,問有多少方案數
1 ≤ n , l i , r i ≤ 5 × 1 0 5 1\le n, l_i,r_i\le 5×10^5 1n,li?,ri?5×105

S o l u t i o n \mathcal{Solution} Solution
注意到區間的值域也是 5 × 1 0 5 5×10^5 5×105,考慮從值域入手,也就是枚舉每個點看有多少種方案使最后的交集包含這個點
設有 k k k對區間的兩個區間都包含這個點,那么就有 2 k 2^k 2k種方案
顯然,這樣的方法會算重,因為不同的點可能對應相同的選擇方案,考慮當前枚舉的點是 i i i,假設 i ? 1 i-1 i?1對應的方案數為 2 m 2^m 2m,如果點 i i i相比點 i ? 1 i-1 i?1沒有新增的區間,也沒有減少區間,那么 i i i i ? 1 i-1 i?1方案數是完全一樣的,如果 i i i i ? 1 i-1 i?1新增了一些區間并沒有減少區間,那么 i i i對應的方案數是包含了 i ? 1 i-1 i?1對應的方案數的,新增的方案數是二者的差 2 k ? 2 m 2^k-2^m 2k?2m,而如果減少了一些區間,那么我們記減少了后對應的方案數為 2 p 2^p 2p,新增的方案數仍然是二者的差 2 k ? 2 p 2^k-2^p 2k?2p,我們只需維護這個過程即可,總復雜度 O ( n ) O(n) O(n)

C o d e \mathcal{Code} Code

#include <cstdio>
#include <vector>
using namespace std;
const int maxn = 5e5 + 10;
const int mod = 1e9 + 7;
int n, k, ans;
int num[maxn], mi[maxn];
vector <int> in[maxn], out[maxn];
int mo (int x)
{if (x >= mod)   return x - mod;return x;
}
int main ()
{scanf("%d", &n);mi[0] = 1;for (int i = 1; i <= n; ++i)    mi[i] = mo(mi[i - 1] << 1);for (int i = 1, l, r; i <= n; ++i) {scanf("%d%d", &l, &r);in[l].push_back(i), out[r + 1].push_back(i);scanf("%d%d", &l, &r);in[l].push_back(i), out[r + 1].push_back(i);}int tot = 0, mx = 500000, lst = mx + 1;for (int i = 1; i <= mx; ++i) {for (int v : out[i]) {if (num[v] == 2)    --k;--num[v];if (!num[v])    --tot;}if (tot < n)	lst = mx + 1;else	lst = k;for (int v : in[i]) {if (!num[v])    ++tot;++num[v];if (num[v] == 2)    ++k;if (tot == n) {if(lst == mx + 1 || k > lst)    ans = mo(mo(ans + mod - mi[lst]) + mi[k]);lst = k;}}}printf("%d\n", ans);return 0;
}

如有哪里講得不是很明白或是有錯誤,歡迎指正
如您喜歡的話不妨點個贊收藏一下吧

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

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

相關文章

2023-08-11 LeetCode每日一題(矩陣對角線元素的和)

2023-08-11每日一題 一、題目編號 1572. 矩陣對角線元素的和二、題目鏈接 點擊跳轉到題目位置 三、題目描述 給你一個正方形矩陣 mat&#xff0c;請你返回矩陣對角線元素的和。 請你返回在矩陣主對角線上的元素和副對角線上且不在主對角線上元素的和。 示例 1&#xff1…

企業計算機服務器中了Devos勒索病毒怎么辦,勒索病毒解密

社會在發展&#xff0c;科技在進步&#xff0c;企業的生產也得到了很大改善&#xff0c;但是隨著網絡技術的不斷發展&#xff0c;越來越多的企業遭到的網絡安全威脅開始增多&#xff0c;其中較為明顯的就是勒索病毒攻擊。預防勒索病毒攻擊成為日常生活中不可或缺的一部分工作。…

8,四個類型轉換const_cast、reinterpret_cast、dynamic_cast、static_cast

類型轉換const_cast、reinterpret_cast、dynamic_cast、static_cast const_castreinterpret_castdynamic_caststatic_cast const_cast 被const修飾的函數可以被訪問&#xff0c;但是不能被修改成員變量 const_cast可以去掉const #include <iostream> using namespace s…

SyntaxError: Cannot use import statement outside a module

node環境運行報錯&#xff1a; 解決步驟&#xff1a; 1. npm init -y 2. 在 package.json 文件中加入一條&#xff1a;"type": "module", 3. 保存后再執行即可 附&#xff1a;最好是不要在node用import&#xff0c;否則需要上次配置 建議1&#xff1a;用re…

el-table實現靜態和動態合并單元格 以及內容顯示的問題

實現效果圖 <el-tablev-loading"loading":data"tableData"style"width: 100%":row-class-name"tableRowClassName"size"small"><el-table-column fixed label"序號" width"50"><el-tab…

Detecting Twenty-thousand Classes using Image-level Supervision

Detecting Twenty-thousand Classes using Image-level Supervision 摘要背景方法PreliminariesDetic:具有圖像類別的檢測器loss技術細節擴展Grad-CAMGrad-CAM原理 總結 摘要 摘要 由于檢測數據集的規模較小&#xff0c;目前的物體檢測器在詞匯量方面受到限制。而圖像分類器的數…

LeetCode_03Java_1572. 矩陣對角線元素的和

給你一個正方形矩陣 mat&#xff0c;請你返回矩陣對角線元素的和。 請你返回在矩陣主對角線上的元素和副對角線上且不在主對角線上元素的和。 輸入&#xff1a;mat [[1,2,3],[4,5,6],[7,8,9]] 輸出&#xff1a;25 解釋&#xff1a;對角線的和為&#xff1a;1 5 9 3 7 2…

Scratch 之 3D 介紹及教程

第一章 為什么 3D 很難&#xff1f; 1.1 3D 難在何處&#xff1f; 3D 之所以會使我們覺得困難&#xff0c;是因為 Scratch 軟件只有兩個坐標軸&#xff0c;既&#xff1a;X軸、Y軸。 2維坐標系 而 3D 卻擁有三個坐標軸&#xff1a; 3維坐標系 怎么辦&#xff1f;很簡單&…

Gin各種參數接收

Gin參數接收 文章目錄 Gin參數接收1.各個參數的接收方法Gin中發送JSON數據Gin接收querystring數據Gin接收Form的參數Gin接收URI參數 2.參數綁定方式接收(更加方便)推薦一款軟件 1.各個參數的接收方法 聲明: 這里的c都是c *gin.Context中的c Gin中發送JSON數據 在傳輸或接受JS…

33 | 美國總統數據分析

在這個數據分析項目中,利用Pandas等Python庫對美國2020年7月22日至2020年8月20日期間的超過75萬條捐贈數據進行了深入的探索和分析。通過這一分析,他們揭示了這段時間內美國選民對總統候選人的偏好和捐款情況。以下是對文章中的主要步驟和內容的進一步描述: 數據集處理: 作…

Jquery 復選框點擊生成標簽 源代碼

html <!DOCTYPE html> <html><head><meta charset"utf-8"><title>服務資源管理</title><link rel"stylesheet" type"text/css" href"../lib/layui/css/layui.css" /><link rel"st…

2023牛客第八場補題報告A H J K

2023牛客第八場補題報告A H J K A-Alive Fossils_2023牛客暑期多校訓練營8 (nowcoder.com) 思路 統計字符串&#xff0c;取出現次數為t的。 代碼 #include <bits/stdc.h> #define int long long #define endl \n #define IOS ios::sync_with_stdio(0), cin.tie(0), …

【C++】面試題

1、都說c是面向對象的語言&#xff0c;面向對象的三個特性能 [展開] 介紹一下嗎&#xff1f; 封裝&#xff1a;封裝是一種集中管理的思想&#xff0c;把內部的數據和實現方法組合在一起&#xff0c;并且不對外暴漏內部的數據和實現方法&#xff0c;只對外提供幾個接口來完成函數…

DockePod信號處理機制與僵尸進程優化

Docke&Pod信號處理與僵尸進程優化 容器與信號的關系 SIGTERM信號&#xff1a;程序結束(terminate)信號&#xff0c;這是用來終止進程的標準信號&#xff0c;也是 kill 、 killall 、 pkill 命令所發送的默認信號。與SIGKILL不同的是該信號可以被阻塞和處理。通常用來要求程…

k8s和docker簡單介紹

當涉及到容器技術和容器編排時&#xff0c;Docker和Kubernetes是兩個重要的概念。我將更詳細地介紹它們以及它們之間的關系。 Docker&#xff1a; Docker是一種容器化技術&#xff0c;它允許你將應用程序及其依賴項打包到一個稱為"容器"的封閉環境中。每個容器都包…

rust包跨平臺編譯,macbook ,linux

在 MacBook 上編譯 Rust 項目并生成 Linux 包需要一些步驟。以下是一般的步驟概述&#xff1a; 1. **安裝所需工具&#xff1a;** 首先&#xff0c;確保您的 MacBook 上已經安裝了所需的工具。您需要 Rust 編程語言的工具鏈以及一些用于交叉編譯到 Linux 的工具。 - 安裝 R…

【BASH】回顧與知識點梳理(二十一)

【BASH】回顧與知識點梳理 二十一 二十一. Linux 的文件權限與目錄配置21.1 使用者與群組屬主(文件擁有者)屬組(群組概念)其他人的概念root(萬能的天神)Linux 用戶身份與群組記錄的文件 21.2 Linux 文件權限概念Linux 文件屬性Linux 文件權限的重要性 21.3 如何改變文件屬性與權…

組合模式(C++)

定義 將對象組合成樹形結構以表示部分-整體’的層次結構。Composite使得用戶對單個對象和組合對象的使用具有一致性(穩定)。 應用場景 在軟件在某些情況下&#xff0c;客戶代碼過多地依賴于對象容器復雜的內部實現結構&#xff0c;對象容器內部實現結構(而非抽象接口)的變化…

Redis數據結構——鏈表list

鏈表是一種常用的數據結構&#xff0c;提供了順序訪問的方式&#xff0c;而且高效地增刪操作。 Redis中廣泛使用了鏈表&#xff0c;例如&#xff1a;列表的底層實現之一就是鏈表。 在Redis中&#xff0c;鏈表分為兩部分&#xff1a;鏈表信息 鏈表節點。 鏈表節點用來表示鏈表…

PyTorch深度學習實踐---筆記

PyTorch深度學習實踐---筆記 2.線性模型&#xff08;Linear Model&#xff09;2.exercise 3. 梯度下降算法&#xff08;Gradient Descent&#xff09;3.1梯度下降&#xff08;Gradient Descent&#xff09;3.2 隨機梯度下降&#xff08;Stochastic Gradient Descent&#xff09…