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

【题目链接】: 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).差分和前缀和虽然很少单独作为一道题的考点,但它们可以用来优化很多的题目,这就是它们的重要性,所以我们一定要掌握它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值