因為有乙個時間截點,在這個截點的前面,總是能滿足教室的要求,而在這個截點的後面,都不能滿足教室的要求,所以可以二分列舉這乙個時間截點。
ac**:
1 #include2 #include3 #include4ac**using
namespace
std;
5const
int n=1000005;6
intn,m;
7struct
nodeq[n];
10int
d[n],s[n],r[n];
11bool check(int
x)18
for(int i=1;i<=n;i++) s[i]=s[i-1]+d[i];
19for(int i=1;i<=n;i++)
22return1;
23}24int
main()
30int l=1,r=m;
31while(l
36if(l==m)
37 printf("
-1\n%d
",l);
38return0;
39 }
洛谷 P1083 借教室 二分 差分
題意 思路 首先可以看出這是乙個比較典型的差分,首先是離線,然後在區間l,r增加幾,這些都是差分的特徵,那麼現在問題就是,怎樣差分?我們可以看出天數是具有單調性的,當在第x天不行的時候那麼x 1肯定也不行,由此可以看出天數是具有二分的特性的,所以我們可以二分天數。include using name...
洛谷P1083 借教室 二分 差分
n天,每天有r i 個教室出租,一共m個訂單,按照先後順序,每個訂單從s天開始到t天結束,每天要借d個,如果所有訂單都能完成,輸出0,哪天教室不夠,輸出到那個訂單的單號。二分可以完成到第幾個訂單,對於每個二分的值,進行差分到這個訂單為止所有的天數,求下字首和,就可以得出對於每一天有沒有超出借出的教室...
洛谷 P1083 借教室(二分 差分)
題目大意 有數列an,每次我們可以選擇乙個區間做減法,問我們第幾次操作會導致乙個區間出現負數。n 1e6 解題思路 線段樹是可以做的,但是貌似這題卡了線段樹。這裡使用二分列舉答案的方法。為什麼這裡適合用差分呢?因為這裡滿足false false true false的結構。每次列舉到乙個點時,我們對...