差分
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
hdu5044 Tree(树链剖分+差分)
线段树会T,要用O(n)的区间修改+单点查询,也就是像差值似的,把区间修改变成点修改,最后前缀和就是每个点的值。(可是我这样还是差点T掉了o(╥﹏╥)o)原创 2017-09-11 13:24:46 · 291 阅读 · 0 评论 -
bzoj5366 [Lydsy1805月赛]代码派对(容斥+差分+二维前缀和)
给定n个矩形,问至少覆盖了一个公共点的三元组(i,j,k)(i< j< k)有多少个。 矩形的交还是矩形。我们先差分+二维前缀和算出每一个位置被覆盖的次数bijbijb_{ij},答案就是∑C3bij∑Cbij3\sum\limits C_{b_{ij}}^3 但是这样会算重。我们考虑三个矩形i,j,k,它们的交也是一个矩形,在这个矩形的每一个位置上我们都计算了这个三元组的贡献。我...原创 2018-05-28 12:00:51 · 602 阅读 · 0 评论 -
CF869E The Untended Antiquity(二维数状数组+差分+hash)
考虑什么情况会不可达,当覆盖两点的最小矩形不同时,一定不可达。因此我们需要快速的知道覆盖一个点的最小矩形是哪个。我们考虑每次把一个矩形染色,那么复杂度是不可接受的。联想到我们一维做区间加法,单点查询时,可以使用差分+前缀和的方法解决。我们此时同样可以使用差分+前缀和的思想。只不过是二维的。给(x1,y1,x2,y2)的矩阵加x,我们可以这样做:(x1,y1)+x,(x1,y2+1)-x,(x2+1,原创 2017-10-18 17:32:24 · 498 阅读 · 0 评论 -
bzoj4326【2015提高】运输计划(二分答案+lca+树上差分前缀和)
这题我哪会啊。。。这题卡常,我们把每个路径的lca求一次就记录下来,每条路径的长度求出来(借助预处理得出的dis数组,dis[i]表示i到根的路径长度,则len[i][j]=dis[i]+dis[j]-2*dis[lca(i,j)])。然后按每条路径的长度从大到小排序,也许能快些( 让最大值最小问题。。二分答案,每次判定最大值<=mid是否可能。那么对于每条长度大于mid的路径我们都得给...原创 2017-10-24 21:54:35 · 532 阅读 · 0 评论 -
bzoj1103 [POI2007]大都市meg(树+差分+树状数组)
给出一棵树,每次查询一个点到根的路径边权和,有边修改。直接差分+树状数组。原创 2018-01-10 14:15:07 · 348 阅读 · 0 评论 -
suoj22 WRX知识树(非递归dfs+树上差分)
题目传送门:portal %%%SBW,把我卡到飞、。 upd:pickupwin太强辣!更新了一波数据就又把我卡成狗啦! 强行手动模拟dfs才能过呀x,为了保证dfs序的性质,我们要用双端队列呀x#include <cstdio>#include <cstring>#include <algorithm>#include <queue&g...原创 2017-12-06 19:19:37 · 319 阅读 · 0 评论 -
bzoj4719 [Noip2016]天天爱跑步(树+lca+树上差分+思路题)
进入bzoj法眼的noip(lus)题hh。题解太麻烦啦。。。不写啦。。。就体会一下思想:要是对于每条路径操作,看他会影响哪些点的贡献,铁铁的会t。所以考虑怎样的一条路径会对一个点产生贡献,先讨论简化版的链的情况,发现要讨论左右。结合另外两个部分分,感觉就是把路径分成两半,x->lca,lca->y。分别讨论,然后进行神奇的树上差分,用vector来维护删除操作。题解去观摩这里吧原创 2017-11-01 21:47:38 · 453 阅读 · 0 评论 -
luogu1083【2012提高】借教室(二分答案+差分前缀和)
二分答案是精髓,差分前缀和代替线段树,好写又精简!原创 2017-09-21 21:39:49 · 430 阅读 · 0 评论 -
CF276C Little Girl and Maximum Sum(贪心+差分)
统计每个点被加的次数(区间加,差分+前缀和即可),然后贪心地,让被加次数多的尽量大。(CF以前还有这种水题的?(捂脸逃 )原创 2017-10-08 13:41:54 · 434 阅读 · 0 评论 -
CF295A Greg and Array(差分+前缀和)
区间加法,用差分的思想变成点修改,然后每次操作就可以O(1)搞了。原创 2017-10-08 13:32:00 · 578 阅读 · 0 评论 -
bzoj3307 雨天的尾巴(树上差分+线段树合并)
每个点一颗权值线段树,因为只有最后一次询问,因此我们可以树上差分,最后一遍dfs合并出来。点数应该最多是4n4n4n的,所以复杂度应该还是O((n+m)log1e9)O((n+m)log1e9)O((n+m)log1e9)的#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0...原创 2018-05-24 16:26:25 · 469 阅读 · 0 评论