分块
sunyutian1998
这个作者很懒,什么都没留下…
展开
-
Prefix Sum 牛客网多校
https://www.nowcoder.com/acm/contest/147/H分块法真的奇妙 更新操作够2000次就n*k的统一更新一次 期间所有更新存起来 有查询了先把之前已经更新好的数组里的内容取出来 然后把存起来还没更新的操作算一遍即可正解线段树或树状数组线段树迷之T#include <bits/stdc++.h>using namespace st...原创 2018-08-18 20:16:44 · 366 阅读 · 0 评论 -
Play With Sequence HDU - 3971
http://acm.hdu.edu.cn/showproblem.php?pid=3971又学到了新姿势 居然还能每隔一段时间排个序...通过维护区间最大最小值来剪枝 但肯定不够如果一个数列是有序的 那这样维护区间最值 就相当于维护区间端点了 从而有logn得复杂度 所以可以每隔一定循环次数就把数列排序重新建树#include <bits/stdc++.h>usi...原创 2018-07-24 08:37:47 · 212 阅读 · 0 评论 -
Rikka with Prefix Sum 牛客网多校
先离线所有操作 保留所有操作一和三 并求出对应前缀和的级数所有对i级前缀和[l,r]加val的操作 分为对i级前缀和l加val r+1减val所有对j级前缀和[l,r]的查询操作 分为对j+1级前缀和r点查询值 减去对j+1级前缀和l-1点查询值对所有操作三 统计之前的所有更新操作对其的影响即可 复杂度500*n#include <bits/stdc++.h>...原创 2018-08-19 21:02:53 · 223 阅读 · 0 评论 -
Xenia and Tree CodeForces - 342E
http://codeforces.com/problemset/problem/342/E可以假设所有红点都给定了不会再变 然后求与某个蓝点最近的红点的距离 这样直接BFS一遍就好啊但是这里有修改 肯定不可能每改一次都跑一遍BFS 这时就要用到分块法 即每累积sqrt(n)次修改就统一大改一次 碰到查询时就先o(1)看之前大改后求得的最短距离 然后再和累积的小修改都求一下最短距离 树上最...原创 2018-09-05 14:33:35 · 346 阅读 · 0 评论 -
Queries on the Tree Gym - 100589A
http://codeforces.com/gym/100589/problem/A 线段树dfs序 根据每一层有多少节点来分块 还是对分块理解不到位 比赛就没想到。。分块就是把要维护的数据结构按某种方法分成几个部分 来给操作的复杂度开根号对于这道题 按最暴力的法子搞 有两种一 对于更新操作 不管节点数量 直接暴力单点更o(num*logn) 那么查询就会很轻松 直接区间查询o...原创 2018-09-09 10:41:05 · 175 阅读 · 0 评论