先把這些線段以左端點公升序排列,然後把重疊的,重合的,還有一些什麼特殊的情況都處理出來,把連續的幾段處理成一段(dalao說可以不處理)
然後開乙個佇列,從前往後壓入佇列,如果出現了斷開的部分,就用m比較,如果小於m,就把m減去這一段的長度,然後壓入佇列,如果大於m,就彈出隊首元素,增加m,直到這一段的長度小於m進行更新,在這期間,要不斷的進行更新ans的值,
要注意的是乙個測試點有許多資料,所以while輸入
然後我再while那裡一直tle………
#include
#include
#include
#include
using namespace std
;struct hday[1001000],thn[1001000],now;
int comp(h a,h b)
queue q;
int main()
sort(day+1,day+n+1,comp);
now.l=day[1].l
; now.r=day[1].r
; int tot=0
; for(int i=1
;i else
}int maxn=0,ans=0
; q.push(thn[1].r-thn[1].l+1);
maxn=thn[1].r-thn[1].l+1
; for(int i=2
;i else
m-=thn[i+1].l-thn[i].r+1
; maxn+=(m+thn[i+1].r-thn[i+1].l-1);
q.push(thn[i+1].l-thn[i].r+1);
q.push(thn[i+1].r-thn[i+1].l+1);}}
cout<;
}return 0
;}
度度熊回家
度度熊回家 時間限制 1秒 空間限制 32768k 乙個數軸上共有 n個點,第乙個點的座標是度度熊現在位置,第 n 1個點是度度熊的家。現在他需要依次的從 0號座標走到 n 1號座標。但是除了 0號座標和 n 1號座標,他可以在其餘的 n 2個座標中選出乙個點,並直接將這個點忽略掉,問度度熊回家至少...
度度熊回家
輸入乙個正整數n,n 50。接下來n個整數表示座標,正數表示x軸的正方向,負數表示x軸的負方向。絕對值小於等於100輸出描述 輸出乙個整數表示度度熊最少需要走的距離。輸入例子 4 1 4 1 3輸出例子 4思路 這題的關鍵在如何找到可以去除的那一點。考察連續的三個點,若三點的值都是遞增的,如,這樣,...
蛋疼的遞迴
幾個經典的遞迴場景 1.斐波那契 2.二叉樹的周遊 深度 前中後序 3.全排列問題 非簡單的全排列 允許字母重複 4.尋找滿足條件的n個數 第乙個的變種 跳台階 題目 乙個台階總共有n 級,如果一次可以跳1 級,也可以跳 2 級。求總共有多少總跳法,並分析演算法的時間複雜度。第二個要複習下非遞迴的寫...