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

2021-08-28 12:14:19 字數 738 閱讀 2700

輸入描述:

第一行兩個整數n, m,分別表示城市的數量和請求的數量

接下來m行,每行兩個整數x,y,表示需要使得x不能到達y

輸出描述:

輸出乙個整數,表示最小斷開橋的數量

思路: dp[j] = i ,表示(i,j)之間至少斷開一條路 , 當有多條要求都指向j時,保留其中最大值。

#include#includeusing namespace std;

const int maxn= 1e6+ 5 ;

#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1<<22, stdin), p1 == p2) ? eof : *p1++)

char buf[(1 << 22)], *p1 = buf, *p2 = buf;

inline int read()

while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();

return x * f;

}int dp[maxn];

int main()

int ans = 0;

int l =0 ;

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

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

return 0;

}

牛客練習賽26 C 城市規劃

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

牛客練習賽26 C 城市規劃

鏈結 題意有1 n共n個城市,城市i與城市i 1相連線,現在有m個要求,每個要求包含兩個城市x y,即它們二者不能相通,問要滿足這些要求,最小需要斷掉幾個城市的連線 分析考慮乙個很顯然的o m logm o mlogm o mlog m 的做法,首先對所有線段按照右端點排序,然後每次在右端點處切,但...

牛客練習賽 26

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