原題傳送門
剛開始我想到了差分方法
可以o (n
)o(n)
o(n)
檢驗是否所有訂單均可滿足
然後我就想到這道題是否和飛揚的小鳥一樣的套路再去用什麼方法找到第乙個不能滿足的點
發現答案滿足二分性,那麼就直接二分好了,然後每次都用差分陣列o(n
)check
o(n)\text
o(n)
check
把所有均可滿足的情況一併包括進二分一起做
code:
#include
#define maxn 1000010
using
namespace std;
long
long delta[maxn]
;int n, m, r[maxn]
, d[maxn]
, s[maxn]
, t[maxn]
;inline
intread()
bool
check
(int mid)
intmain()
if(ans ==-1
)puts
("0");
else
printf
("-1\n%d\n"
, ans)
;return0;
}
Luogu 1083 借教室(二分,差分)
在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要 向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教室的資訊,我們自然希望程式設計解決這個問題。我們需要處理接下來n天的借教室資訊,其中第i天學校有ri個教室可供租借。共有m份 訂...
題解 Luogu P1083 借教室
用差分陣列 b i 存每天教室的使用情況 所以當對區間操作時,其實可以轉化成對b陣列操作 b s i d i b t i 1 d i d i 是指每天要借的教室數 改變b i 就相當於改變i之後的每乙個值,並通過重新減去改變的量,達到操作區間的目的。從第乙份訂單開始列舉,直到無法滿足或者全列舉完結束...
洛谷 題解 P1083 借教室
1 n,m 10 6 第一反應 o nlogn 直接輸出 0 即可。不要問我怎麼知道輸出 0 可以拿 5 pts。保持微笑.jpeg 1 考慮暴力。按照題意列舉即可。核心偽 如下 定義 n,m 為 int 型變數 定義 r 為 int 型陣列,大小為 max n 讀入 n,m 讀入 r 陣列 定義 ...