![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
差分
EMber _
人但有追求,世界亦会让路。
展开
-
bzoj1637
分析:直接差分,遇见1就+1,否则-1,那么要求的合法区间肯定是区间端点值相同。。 问题是如何计算右端点。。我一开始想二分,发现不符合二分性,然后。。然后就不会做了。。 我看其他人是直接记录?可是这种做法我一开始想过,觉得遇见极限数据肯定被卡。。我直接出一堆0,只有一个1,空间直接爆炸。。 然后我发现我是sb。。10^9是位置不是0和1的个数啊我日。。这tm不是随便算?#include<cst原创 2017-03-08 21:11:22 · 219 阅读 · 0 评论 -
bzoj1651
分析:按照差分的思想,区间的左端点+1,右端点-1,扫一遍就好了。。反正才1e6. 然后WA了一发,不知道哪里错,后来才发现,要a[r+1]–,因为他给出的时间是l到r,那么r也是有的。。#include<cstdio> #include<cstring> #include<algorithm> #include<math.h> #define fo(i,a,b) for(int i=a;i<=b原创 2017-03-09 15:55:32 · 324 阅读 · 0 评论 -
bzoj1635
分析:一开始没想到怎么搞。。后来发现好像用差分可以做。。 把每个限制看作一对括号,如果是暴力,那么我们肯定要把l+1到r-1的所有数-1。。 那么我们可以用差分序列做,每次对一个给出的左右端点,f[a[i].x+1]++,f[a[i].y]–,这样扫一遍用h-差分序列的前缀和,不就正好是答案吗?#include<cstdio> #include<algorithm> #include<cstri原创 2017-03-07 16:50:39 · 234 阅读 · 0 评论