洛谷 1083 NOIP2012 借教室 二分

2021-08-09 09:46:40 字數 891 閱讀 7900

題目:

線段樹的基本操作;

但常數較大,可能會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個教室可供租借...