用差分陣列(b[i])存每天教室的使用情況
所以當對區間操作時,其實可以轉化成對b陣列操作:
b[s[i]]+=d[i];b[t[i]+1]-=d[i];//
d[i]是指每天要借的教室數
改變b[i]就相當於改變i之後的每乙個值,並通過重新減去改變的量,達到操作區間的目的。
從第乙份訂單開始列舉,直到無法滿足或者全列舉完結束。
另通過比大小來判斷負數不容易出錯
////luogu
////
created by gengyf on 2019/7/11.
////
#include
using
namespace
std;
#define maxn 1000010
intd[maxn],s[maxn],t[maxn];
intb[maxn],n,m,need[maxn],a[maxn];
bool check(int
x)
for(int i=1;i<=n;i++)
return1;
}int
main()
for(int i=1;i<=m;i++)
int l=1,r=m;
if(check(m))
while(lelse r=mid;
}printf(
"-1\n%d
",l);
return0;
}
題解 LuoGu1083 借教室
原題傳送門 剛開始我想到了差分方法 可以o n o n o n 檢驗是否所有訂單均可滿足 然後我就想到這道題是否和飛揚的小鳥一樣的套路再去用什麼方法找到第乙個不能滿足的點 發現答案滿足二分性,那麼就直接二分好了,然後每次都用差分陣列o n check o n text o n check 把所有均可...
洛谷 題解 P1083 借教室
1 n,m 10 6 第一反應 o nlogn 直接輸出 0 即可。不要問我怎麼知道輸出 0 可以拿 5 pts。保持微笑.jpeg 1 考慮暴力。按照題意列舉即可。核心偽 如下 定義 n,m 為 int 型變數 定義 r 為 int 型陣列,大小為 max n 讀入 n,m 讀入 r 陣列 定義 ...
題解 洛谷P1083 借教室
更好的閱讀體驗 portal1 luogu portal2 libreoj portal3 vijos 在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教室的資訊,我們自然希望程式...