區間掃瞄線處理問題

2021-08-08 23:27:48 字數 978 閱讀 7019

傳送門

這套題的d 和 e 題都是這樣的問題. d 比 e 簡單點. e 需要一定的思維量

d: 給出n待處理的零件的進來的時間. 每個零件必須處理1s, 給你這個機器它1s可以同時處理的零件個數. 問最少需要幾台機器.

思路: 典型的區間問題, 直接在每乙個交接出處理下就行了, 然後for一遍就ok

ac code

const

int maxn = 1e6+5;

int cas=1;

int a[maxn];

void solve()

int res = 0,sum = 0;

for(int i=0;i<=maxn;i++)

cout

<< res << endl;

}}

e: 給出n個節目的開始時間和結束時間, 和同時可以儲存的節目數, 問全部節目弄下來, 最多可以看幾場節目.

思路:乍一看和d很像, 但是有不一樣, 我們知道有這個問題需要處理, 那就是我們必須同時知道乙個最小和最大值, 那麼很容易想到set, 因為又有重複元素, 所以用multiset, 注意下這些容器的begin和end的關係, 是乙個左閉右開的關係!!! . 首先插入k個, 判斷後面進入的節目的時間和已經在set中的關係即可.

const

int maxn = 1e5+5;

int cas=1;

int n,k;

struct seg

}s[maxn];

void solve()

sort(s+1,s+1+n);

multiset

p;int res = 0;

for(int i=1;i<=n;i++)

else

else}}

}res += p.size();

printf("%d\n",res);

}}

線段樹區間合併 掃瞄線

線段樹區間合併 掃瞄線 題目 求n個矩形面積並 includeusing namespace std typedef long long ll const int n 1e6 5 int t n 2 標記數量 int vis n 2 標記陣列 void update int root,int kl,...

線段樹 掃瞄線區間模板

線段樹 掃瞄線基礎模板 掃瞄線與普通的線段樹區別要認清,這裡線是連續的,其他的型別單點是離散的 include include include using namespace std int n const int maxn 10000 struct node void get int a,int ...

下標處理問題

下標處理問題 主要是針對於插入排序演算法寫的程式,其他情況可以借鑑這些思路。數學上或者通常意義上,下標都是從1開始的,但是在多數程式語言裡面陣列下標都是從0開始的,這就很惱火了,簡單乙個下標處理起來卻異常麻煩!請看 例如 1 典型的陣列下標越界問題 假設有個陣列 a 0 a 1 我們要用插入法排序,...