【题目链接】: http://www.luogu.org/problem/P1083
【题意】:
【数据范围】:
【思路】: 我们可以发现,申请得越多,越难满足所有的要求。
所以,这道题有单调性,即我们可以二分。具体而言,就是二分出一个答案
m
i
d
mid
mid,判断第
1
1
1到
m
i
d
mid
mid条申请是否可以满足。
记
a
[
i
]
a[i]
a[i]表示第
i
i
i天需要多少教室,每一条申请可以视为把
a
[
s
[
i
]
.
.
t
[
i
]
]
a[s[i]..t[i]]
a[s[i]..t[i]]都加上
d
[
i
]
d[i]
d[i]。细细一想,诶,这不就是差分的直接应用吗?所以,在判定的时候,我们可以用差分优化,最后利用前缀和还原原数组,判定每一天是否超过可供应的教室数量,把判定的时间复杂度从
O
(
n
×
m
i
d
+
n
)
O(n \times mid + n)
O(n×mid+n),降为
O
(
m
i
d
+
n
)
O(mid+n)
O(mid+n)
【代码】:
【补充】: 代码中的
r
e
a
d
(
)
read()
read()函数是快读函数,考虑到篇幅问题,因为大家都会了,这里不给出代码。
【引申】:
由本题我们可以发现一些东西:
(
1
)
.
(1).
(1).真正的二分部分其实很短,所以二分题目的难度一般都在判定。
(
2
)
.
(2).
(2).差分和前缀和虽然很少单独作为一道题的考点,但它们可以用来优化很多的题目,这就是它们的重要性,所以我们一定要掌握它们。
2019.10.20日常总结兼洛谷P1083题题解
最新推荐文章于 2024-06-19 20:07:39 发布