洛谷 題解 P1083 借教室

2022-04-29 03:18:09 字數 2263 閱讀 4061

$ 1≤n,m≤10^6 $,第一反應 \(o(nlogn)\)

直接輸出 '0' 即可。

不要問我怎麼知道輸出 '0' 可以拿 5 pts。

保持微笑.jpeg *1

考慮暴力。

按照題意列舉即可。

核心偽**如下:

定義 n, m 為 int 型變數 

定義 r 為 int 型陣列,大小為 max_n

讀入 n, m

讀入 r 陣列

定義 d, s, t 為 int 型變數

使用變數 i 從 1 到 m 遍歷

讀入 d, s, t

使用變數 j 在 r 陣列裡從 s 到 t 遍歷

r[j] 減去 d;

如果 r[j] < 0 那麼

輸出 "-1" 和回車

輸出 i

結束程式

否則 j 指標後移

輸出 "0"

結束程式

然後,考察你程式的常數的時候到了。

保持微笑.jpeg *2

一看就是線段樹。

然而,眾所周知,線段樹的常數是比較大的,所以只有 70 pts。

當然,我也看見了用線段樹a題的大佬,在此表示由衷的敬意.

回憶我們**的時間複雜度:\(o(nlogn)\)

開始猜演算法

——阮行止

保持微笑.jpeg *3

然後想到二分答案

設:二分答案的內容為最多可以滿足第 mid 個人的需求

然後開始想 judge 函式。

這時候拼盡腦子想 \(o(n)\) 演算法

然後想到差分

偽**:

函式引數:x(int 型整數) // 表示可否滿足第 x 個人的需求

clear dif // dif 是大小為 max_n 的 int 型陣列

for i (i between [1, x])

dif[s[i]] = dif[s[i]] + d[i]

dif[t[i] + 1] = dif[t[i] + 1] - d[i]

now = 0

for i (i between [1, n])

now += dif[i];

if now > r[i] return false;

return true;

}

int l = 0, r = m, mid;

while (l < r)

if (l == m) putchar('0');

else puts("-1"), write(l + 1);

幾點說明:

如果 judge(m) 為真,說明所有訂單均可滿足

因為 l 表示最多可以滿足第 l 個人的需求,所以第乙個需要修改訂單的人的編號為 l + 1

// luogu-judger-enable-o2

/** * problem: p1083 借教室.

* author: 航空信奧.

* date: 2018/08/23.

* upload: luogu.

*/#include #include namespace hangkongxinao

int now = 0;

for (int i = 1; i <= n; i++)

return true;

} void binary_search()

if (l == m) putchar('0');

else puts("-1"), write(l + 1);

}int main()

for (int i = 1; i <= m; i++)

binary_search();

return 0;

}char bufferread[1 << 17];

int rlen = 0, rpos = 0;

inline char getchar()

template inline _tpint read()

template inline void write(_tpint x)

else

}}int main()

題解 洛谷P1083 借教室

更好的閱讀體驗 portal1 luogu portal2 libreoj portal3 vijos 在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教室的資訊,我們自然希望程式...

洛谷P1083 借教室 題解

noip2012 提高組 借教室 這道題是幾周之前做到的一道題,本來不想講的,因為這道題也是用到了二分答案的方法,這類題目之前已經發布過兩篇題解了。但這道題還運用了差分陣列這個思想,所以我覺得還是值得講一講的。首先,什麼是差分陣列呢?就是對於某乙個陣列,每兩個相鄰元素的差值組成的新的陣列。比如對於陣...

洛谷 P1083 借教室

在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教室的資訊,我們自然希望程式設計解決這個問題。我們需要處理接下來n天的借教室資訊,其中第i天學校有ri個教室可供租借。共有m份訂單,...