upc 考試 離散化 差分

2021-10-05 06:41:16 字數 2162 閱讀 1680

考試

時間限制: 1 sec 記憶體限制: 128 mb

題目描述

s中開展了省選集訓,有n位選手的實力參差不齊。眾所周知,如果題目太水,那麼就會有人ak離場後打遊戲,如果題目太難,那麼就會有人頹廢離場後打遊戲。作為出題人的你自然不希望有太多人出去打遊戲,不然ob就會很生氣。所以你需要設定題目的難度,盡量讓最少的人出去打遊戲,並且同時題目盡可能難一些。

輸入第1行乙個正整數n,表示一共有n名選手參與;

接下來n行兩個非負整數ai,bi,表示第i位選手可接受的題目難度範圍在ai~bi之間,若你設定的題目難度超過此區間,這位選手便會離場打遊戲。

輸出一共一行乙個數字ans,表示你設定的題目難度為ans,應當在讓最少的人離場的同時使其盡可能的大。

樣例輸入 copy

31 5

95 105

5 110

樣例輸出 copy

105提示

樣例解釋

有三名選手參與,方便起見命名第1名選手叫小x,第2名選手叫小q,第3名選手叫小p。

題目難度如果要滿足蒟蒻小x,那麼小q便一定會ak後頹廢,為了兼顧小p,難度不得不設為5,此時1人離場。

如果要滿足巨佬小q,那麼無論如何小x也會覺得題目太難憤憤離場,為了兼顧小p,難度最大可設為105,此時1人離場。

綜上,題目難度最大為105。

【資料範圍】

對於30%的資料:n ≤ 10

對於50%的資料:n ≤ 1000

對於另外20%的資料: 0 ≤ ai ≤ bi ≤ 100000

對於100%的資料: n ≤ 100000, 0 ≤ ai, bi ≤ 1000000000

題意就是給出每個人能承受難度的範圍,超過這個範圍這個人就會離場,在最少離場人數中找乙個最大的難度。也就是找乙個點,這個點被覆蓋的次數最多且盡可能大,且這個點最優解一定是在端點上的,可以證明對於每乙個不在端點上的點, 一定可以找到乙個在端點上的點來替代。對於每一名選手,在承受範圍 [l,r] 區間上加一,代表這個區間內每乙個難度都多一位同學可以比賽,尋找數最大的端點即可。在區間加數不難想到差分,但是這個題 l 和 r 的範圍比較大,需要離散化處理一下即可。

題目跟隊爺的新書挺像的,應該還可以用掃瞄線水掉。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define x first

#define y second

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int> pii;

const

int n=

200010

,mod=

1e9+

7,inf=

0x3f3f3f3f

;const

double eps=

1e-6

;int n;

int a[n]

,cnt=0;

int idx,ans;

vector<

int>v;

pii p[n]

;//存區間

intfind

(int x)

intmain()

;}sort

(v.begin()

,v.end()

);v.erase

(unique

(v.begin()

,v.end()

),v.

end())

;for

(int i=

1;i<=n;i++)

n=v.

size()

;for

(int i=

1;i) a[i]

+=a[i-1]

; idx=

0,ans=a[0]

;for

(int i=

1;icout<

}

B Light bulbs 離散化 差分

b.light bulbs 離散化 差分 題意 n個燈剛開始是關的,m次操作對 l,r 內的全部的燈反轉。問最後有幾個燈亮著。思路 剛開始差分直接便利了所有點,t了。所有只需要考慮哪些有貢獻的2 m個點就行了,對於區間中哪些0的部分,就不需要遍歷了。對於重複的點也不用管。include using ...

離散化系列 離散化 字首和 差分

區間和 acwing 802.區間和 這道題所展現的情況就是,資料並不是很多,利用到的元素值也不大,但關鍵就是下標太大,無法正常的以陣列下標來進行操作。因此,離散化,在這裡就是很合適了,把大的下標對映為小的下標後再進行處理。對於這道題的解題步驟具體可分為一下幾步 1.儲存,就是將所用用到的下標存起來...

跳方格 離散化 差分

時間限制 1 sec 記憶體限制 128 mb 題目描述 有乙個長長的走廊,巨神 ctt 把它分成m方格,從左到右編號為1,2,m。有一天,巨神 ctt 得到了n個蹦床,他把這些蹦床放在方格裡,他在編號為1的方格裡放了乙個蹦床,在編號為2,3,m 1的方格中放置了n 1個蹦床 乙個方格只能放乙個蹦床...