随笔分类 -  高效算法思想--two pointer

摘要:$n \leq 500000$个区间,从中挑出一些,使得至少有一个点被$m$个选中区间包含,且选中区间长度的极差最小。 区间题死脑筋晚期:把区间按左端点排序,然后右端点用个优先队列来弹,然后需要维护下标相差$m$的数字差的最值,可以在$n^2$的时间完美拿到签到题的60分。 求极差嘛,就是关注最大最 阅读全文
posted @ 2018-07-02 19:36 Blue233333 阅读(235) 评论(0) 推荐(0)
摘要:$n \leq 2000000$的正数列,有一次机会把一段长度不超过$d$的数变成0,问最长的和不超过$p$的序列。 选的$d$区间一定是答案区间$[L,R]$的最大字段和。可以证明$R$往右时$L$不会往左。反证一下,假如出现了这种情况: 其中蓝色和绿色表示选中的$d$区间(绿不可能在R1左边,否 阅读全文
posted @ 2018-06-20 10:08 Blue233333 阅读(138) 评论(0) 推荐(0)
摘要:n<=100000个数,求删掉K种相同的数之后最长的相同数区间长度。 原来是2指针裸题。两个指针,一个左边开始扫,一个右边找最长的区间,使得数字种数不超过K+1即可,然后统计答案。 统计答案时,如果枚举左端点就用左端点更新答案,枚举右端点就用右。因为这个WA了两次。 1 #include<stdio 阅读全文
posted @ 2017-09-28 21:07 Blue233333 阅读(120) 评论(0) 推荐(0)
摘要:给出n<=100000个已覆盖的区间[Li,Ri],Li,Ri<=1e9,求再覆盖m<=1e9个点如何使最长覆盖区间最大。 感谢KPM大爷的题解!! 首先把重复区间处理掉,剩下若干个不重区间。这采用类似于差分的“事件法”,左边+1,右边-1,>0的部分即是区间。 接下来,“求满足某个条件的最长区间” 阅读全文
posted @ 2017-08-13 19:42 Blue233333 阅读(271) 评论(0) 推荐(0)