### 解題思路
利用二分法找到合適的位置插入區間
1.列舉特殊情況:插入最左端和插入最右端
2.找到第乙個區間,使得區間的右端點大於目標區間的左端點
3.找到第二個區間,使得區間的右端點大於目標區間的右端點
4.處理一種特殊情況,就是這個區間單獨成為區間段,不與其他區間合併
### **
class solution
return l;
}vector> insert(vector>& intervals, vector& newinterval)
//列舉特殊情況:插入最左端和插入最右端
if(newinterval[1] < intervals[0][0])
if(newinterval[0] > intervals[n-1][1])
//找到第乙個區間,使得區間的右端點大於目標區間的左端點
int lp = binsearch(0,n-1,left,intervals);
int rp = binsearch(0,n-1,right,intervals);
//找到第二個區間,使得區間的右端點大於目標區間的右端點
for(int i = 0; i < lp; ++i) res.push_back(intervals[i]);
//處理一種特殊情況,就是這個區間單獨成為區間段,不與其他區間合併
int il,ir,p;
il = min(intervals[lp][0],newinterval[0]);
if(newinterval[1] < intervals[rp][0]) ir = newinterval[1],p = rp;
else ir = max(intervals[rp][1],newinterval[1]),p = rp+1;
res.push_back();
for(; p < intervals.size();++p) res.push_back(intervals[p]);
return res;
}};
hdu 5875(ST 二分區間)
題意 給乙個序列,有n個數字和m次詢問。每次詢問給乙個區間,問這個區間從l開始一直對l後面的陣列取模,一直到r。分析 乙個較小的數字對乙個較大的數字取模,值不發生改變。所以每次只要找最近的比自己小的數字取模更新答案即可。用rmq維護區間最小值。每次查詢乙個區間就在這個區間內進行二分。如果左區間有比l...
二分查詢 二分區間 快速冪(二分冪)
include include using namespace std 二分查詢 初始區間 0,n 1 intbinarysearch int a,int left,int right,int x else return 1 二分 找出元素的區間左閉右開 初始區間 0,n intlower boun...
HDU 4768 (二分區間 漲姿勢)
題意 告訴n組a,b,c,按照a k c生成等差數列,問這n組數列中哪個數字出現了奇數次以及出現了幾次,題目保證最多隻會出現乙個這種數字。分析 讀完題並沒有思路,後來知道是二分區間,列舉是哪個數字出現了奇數次,算該數字之前一共有幾個數字,如果是奇數個,說明答案就在 l mid 中。ps 之前用二分只...