牛客練習賽26 C 城市規劃

2021-09-25 05:57:41 字數 1163 閱讀 7955

鏈結

題意有1-n共n個城市,城市i與城市i-1相連線,現在有m個要求,每個要求包含兩個城市x、y,即它們二者不能相通,問要滿足這些要求,最小需要斷掉幾個城市的連線;

分析

考慮乙個很顯然的o(m

logm

)o(mlogm)

o(mlog

m)的做法,首先對所有線段按照右端點排序,然後每次在右端點處切,但是m達到了107,級別,所以不能通過此題

由於題目保證所有線段的值域為1−n,我們可以對所有左端點,直接記錄出右端點最靠左的位置同樣每次切右端點,掃一遍即可,時間複雜度:o(m

)o(m)

o(m)

**
#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x7f7f7f7f

#define maxn 100005

#define n 200005

#define p 2

#define mod 99991

typedef

long

long ll;

namespace fastio

while

(c >=

'0'&& c <=

'9') x = x *

10+ c -

'0', c =

getchar()

;return x * f;}}

using

namespace fastio;

using

namespace std;

int n, m, r[

10000077];

intmain()

int res =0;

r =0;

for(

int i =

1; i < n; i++

)else r =

min(r, r[i]);

} cout << res << endl;

}

牛客練習賽26 C 城市規劃

思路 這題要用o n 的複雜度 讀入優化才不會超時。對於線段 l,r 將右端點標記,同時儲存以點r為右端點的線段的最大左端點值max r 由小到大遍歷所有城市,同時用 l 表示已斷開的城市的最大值,在遇到城市i被標記時,判斷max r 與l的大小,若max r 大於l,則說明還有路徑沒有斷開,則 a...

牛客網練習賽26C城市規劃

輸入描述 第一行兩個整數n,m,分別表示城市的數量和請求的數量 接下來m行,每行兩個整數x,y,表示需要使得x不能到達y 輸出描述 輸出乙個整數,表示最小斷開橋的數量 思路 dp j i 表示 i,j 之間至少斷開一條路 當有多條要求都指向j時,保留其中最大值。include includeusin...

牛客練習賽 26

題目描述 小a的平面上有n個x型不明物體,但是他不確定他們的位置。現在請你來確定他們的位置,使得劃分形成的平面盡量多 輸入描述 乙個整數n,如題所示 輸出描述 乙個整數,表示最多把平面分成多少份 示例1輸入2輸出 平面分割問題,直線劃分平面,有個公式就是 cn 0 cn 1 cn 2 推導大致是這樣...