牛客練習賽34 C

2021-09-03 07:44:30 字數 1861 閱讀 7861

題目描述

小w有m條線段,編號為1到m。

用這些線段覆蓋數軸上的n個點,編號為1到n。

第i條線段覆蓋數軸上的區間是l[i],r[i]。

覆蓋的區間可能會有重疊,而且不保證m條線段一定能覆蓋所有n個點。

現在小w不小心丟失了一條線段,請問丟失哪條線段,使數軸上沒被覆蓋到的點的個數盡可能少,請輸出丟失的線段的編號和沒被覆蓋到的點的個數。如果有多條線段符合要求,請輸出編號最大線段的編號(編號為1到m)。

輸入描述:

第一行包括兩個正整數n,m(1≤n,m≤10^5)。

接下來m行,每行包括兩個正整數l[i],ri。

輸出描述:

輸出一行,包括兩個整數a b。

a表示丟失的線段的編號。

b表示丟失了第a條線段後,沒被覆蓋到的點的個數。

示例1

輸入

5 3

1 34 5

3 4

輸出

3 0

說明

若丟失第1條線段,1和2沒被線段覆蓋到。

若丟失第2條線段,5沒被線段覆蓋到。

若丟失第3條線段,所有點都被線段覆蓋到了。

示例2

輸入

6 2

1 24 5

輸出

2 4

說明

若丟失第1條線段,1,2,3,6沒被線段覆蓋到。

若丟失第2條線段,3,4,5,6沒被線段覆蓋到。

離線處理–差分陣列。

#include .h>

#include

using namespace std;

const

int maxn=

1e5+9;

inline int

read()

while

(isdigit

(ch)

) x=

(x<<3)

+(x<<1)

+(ch^48)

,ch=

getchar()

;return w?

-x:x;

}int a[maxn]

,sum[maxn]

,l[maxn]

,r[maxn]

;int

main()

int tot=0;

for(

int i=

1;i<=n;i++

) sum[i]

=sum[i-1]

+a[i]

,tot+=

(sum[i]

>0)

;/// 字首和--d[i] 差分陣列

memset

(a,0

,sizeof

(a))

;for

(int i=

1;i<=n;i++

) a[i]

=a[i-1]

+(sum[i]==1

);

pair<

int,

int>

ans;

ans.first=

99999999

;for

(int i=

1;i<=m;i++

) cout<" "

}

牛客練習賽34 C題

小w有m條線段,編號為1到m。用這些線段覆蓋數軸上的n個點,編號為1到n。第i條線段覆蓋數軸上的區間是l i r i 覆蓋的區間可能會有重疊,而且不保證m條線段一定能覆蓋所有n個點。現在小w不小心丟失了一條線段,請問丟失哪條線段,使數軸上沒被覆蓋到的點的個數盡可能少,請輸出丟失的線段的編號和沒被覆蓋...

2018牛客練習賽34

c little w and segment coverage 官方題解 題意 給m個區間,把每個區間上的點都加1,然後問刪除哪乙個點後不會被覆蓋的點最少 我覺得這道題挺好的,就適合我們這些小白做,看題解能夠收穫很多 哇,線段樹原來還闊以統計區間內小於等於某個數x的個數有多少個呀,我太挫了,這個竟然...

little w and Sum 牛客練習賽34

include using namespace std typedef long long ll const ll maxn 1e5 5 ll s maxn int main ll num 0 ll flag 0 for ll i 0 i小w與tokitsukaze一起玩3ds上的小遊戲,現在他們遇...