2019.10.20日常总结兼洛谷P1083题题解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ZHUYINGYE_123456/article/details/102648268

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

猜你喜欢

转载自blog.csdn.net/ZHUYINGYE_123456/article/details/102648268