3.31总结

1.

(1)给n个数,找到长度至少为k的段,使得平均数最大

(2)给n个数,找到长度至少为k的段,使得中位数最大

二分答案,数组处理,前缀和,区间最小

2.

(1)给n个数,相邻元素至少选一个,使得平均数最大

(2)给n个数,相邻元素至少选一个,使得中位数最大

二分答案,数组处理,状态机

3.实数二分最好二分次数(100次),或者相对精度

4.给定一棵树,点有点权,切k刀,使得最大权值连通块的最小值

树形dp,二分,贪心

5.P2824 [HEOI2016/TJOI2016]排序 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

(如果m很小的话其实可以对每次询问都模拟一遍,即常用思路是:询问的时候再根据询问操作)

对于每次询问,二分答案,修改数组,问题变为区间统计与区间赋值

由于有n次询问,因此每次询问回答的复杂度只能是O(logn)左右

积累:很多排序都是可以往这方面想(排序转为01序列)

6.动态开点,扫描线,线段树分裂

7.给n条直线,问交点横坐标第k大的坐标

8.P3527 [POI2011]MET-Meteors - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

9.遇到某个数在区间中只出现一次,只需预处理出该数的前一次出现和后一次出现即可。

10.区间计数问题一般都可使用扫描线解决

11.紫书:

12.滑动窗口与单调队列:

一般用来维护长度固定的区间的某种性质,如和,乘积等。配合二分使用可以改变区间长度;配合set,数组等可以维护区间内每个数的出现次数;配合单调队列可以维护区间内最大值和最小值。

单调队列一般用于维护滑动区间中最大值,最小值。但不可维护区间中的递增元素的个数。

13.双指针:

14.支持删除任意元素的优先队列:

1)具体的做法是:

        维护两个优先队列,一个是最值队列,一个是删除队列。

        当然还有一个普通的队列,就是模拟题目本身的数据插入和删除的。

        ①对于插入,首先是插入普通的队列,然后插入优先队列

        ②对于删除,是删除普通的队列头元素,然后把这个头元素插入到删除队列中

        ③对于求最大值,就稍微麻烦一点点了,我们要结合删除队列和最值队列。

        由于两个队列都是优先队列,所以两者里面的内容也都是有“顺序关系”的,只要按从队首的顺序开始判断,就能找到最大值。

2)具体的判断是:如果删除队列的首元素和最值队列的首元素相等,就表明最值队列的首元素要删除,所以同时删除最值队列和删除队列的这个元素,重复这个步骤,知道他们首元素不同,或者一个队列为空。

3)理解:其实本质上就是由于优先队列只能从让最值元素出队,那么我们就维护一个性质,当最大元素满足这个性质时出队就可以了
 

15.计算数组中每个数前面有多少个数大于自己可以用离散化线段树。

16.树状数组

17.set,map自带lower_bound函数,在有序的数组中查询,插入,删除可以使用set,map

18.前缀和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值