蒜頭君給定 nn 個閉區間 [a_i, b_i] [a i,b i ],其中 i=1,2,…,ni=1,2,…,n。
任意兩個相鄰或相交的閉區間可以合併為乙個閉區間。例如,[1,2][1,2] 和 [2,3][2,3] 可以合併為 [1,3][1,3],[1,3][1,3] 和 [2,4][2,4] 可以合併為 [1,4][1,4],但是 [1,2][1,2] 和 [3,4][3,4] 不可以合併。
我們的任務是判斷這些區間是否可以最終合併為乙個閉區間,如果可以,將這個閉區間輸出,否則輸出 「no」。
輸入格式
第一行為乙個整數 nn,3 \le n \le 500003≤n≤50000。表示輸入區間的數量。
之後 nn 行,在第 ii 行上(1 \le i \le n1≤i≤n),為兩個整數 a_ia i 和 b_ib i
,整數之間用乙個空格分隔,表示區間 [a_i, b_i][a i,b i ](其中 1 \le a_i \le b_i \le 100001≤a ≤b i ≤10000)。
輸出格式
輸出一行,如果這些區間最終可以合併為乙個閉區間,輸出這個閉區間的左右邊界,用單個空格隔開;否則輸出 「no」。
輸出時每行末尾的多餘空格,不影響答案正確性
思路:詳細見**,用到了pair,然後有交叉就能合併
#include
using
namespace std;
bool
cmp(pair<
int,
int> p1,pair<
int,
int> p2)
else
}int
main()
sort
(a,a+n,cmp)
; pair<
int,
int> t=a[0]
;bool flag=
true
;for
(int i=
1;i)else
if(t.second < a[i]
.first)}if
(flag==
false
)else
return0;
}
計蒜客 合併石子 區間dp
題目鏈結 題解 leetcode裡面有個戳氣球的題和這個類似,用區間dp來解。由於n堆 n 2 石子合併,最終一定會有個只剩2堆石子的中間狀態,這個狀態就是突破口。最終的2堆石子一定是在原來的石子裡面連續的,可以用dp i j 表示區間i.j的石子合併後最小的體力消耗,n堆石子消耗的最小體力為dp ...
計蒜網鄰接表的使用
這一節我們來複習下前面剛學的鄰接表的使用。給出乙個包含有向圖和無向圖的混合圖 g,圖上有 n 個點和 m 條邊,現在你需要使用鄰接表來儲存該混合圖 g 並按格式輸出鄰接表。輸入第一行為兩個正整數 n 和 m 1 n,m 100 表示混合圖上的 nnn 個點和 m 條邊。接下來輸入 m 行,每行輸入三...
計蒜客 區間包含 活動安排問題
已知 n 個左閉右開區間 a b 對其進行 m 次詢問,求區間 l r 最多可以包含 n 個區間中的多少個區間,並且被包含的所有區間都不相交。輸入格式 輸入包含多組測試資料,對於每組測試資料 第一行包含兩個整數 n m 1 n m 100000 接下來 n 行每行包含兩個整數 a b 0 a b 1...