題目:
線段樹的基本操作;
但常數較大,可能會t 卡常無敵
我們發現,訂單出現的時間(即輸入順序)滿足單調性,所以可以二分時間;
為什麼?
從**中可以看出,左邊界l內都是滿足條件的訂單,而右邊界r內包含不滿足條件的訂單,則不滿足條件的訂單在(l,r]中;(我的二分寫法是左開右閉);
因此,當左邊界與右邊界差1時(即while迴圈退出時),右邊界r就是不滿足條件的訂單;
驗證時可以利用差分的思想,o(m)處理出每天的預訂數量;
二分時間,o(m)驗證,所以總複雜度為o(mlogn);
總結:1.本題的單調性隱藏的十分巧妙,是個二分好題,以後注意類似的題型.
當然,若是真的想不出來,敲個線段樹也是可以的 ,只要複雜度正確,要盡量選擇自己熟悉且保險的演算法; 卡常無解
2.注意細節,這種區間累加型的題,要想到字首和及差分o(n)處理;
3.注意二分邊界;
#include
#include
#include
#include
using
namespace
std;
const
int maxn=2000001;
int n,m,l=-1,r;
int a[maxn],sum[maxn];
struct hh
ma[maxn];
bool check(int x)
return
false;
}void solve()
if(!check(r))//判斷是否全部滿足;
if(r) cout
<<"-1"
}int main()
洛谷 P1083 借教室
在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教室的資訊,我們自然希望程式設計解決這個問題。我們需要處理接下來n天的借教室資訊,其中第i天學校有ri個教室可供租借。共有m份訂單,...
洛谷 P1083 借教室
原題 題目描述 在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教室的資訊,我們自然希望程式設計解決這個問題。我們需要處理接下來n天的借教室資訊,其中第i天學校有ri個教室可供租借...
洛谷 P1083 借教室
題目 題目描述 在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教室的資訊,我們自然希望程式設計解決這個問題。我們需要處理接下來n天的借教室資訊,其中第i天學校有ri個教室可供租借...