莫队
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
洛谷P4074 [WC2013]糖果公园
https://www.luogu.com.cn/problem/P4074 树上离线带修改的莫队板题 把这两题混了一下 https://blog.youkuaiyun.com/liufengwei1/article/details/109153421 https://blog.youkuaiyun.com/liufengwei1/article/details/109173023 (其实还可以改成求个区间最大值套个回滚莫队 #include<bits/stdc++.h> using namespace原创 2020-10-20 20:51:02 · 164 阅读 · 0 评论 -
SP10707 COT2 - Count on a tree II 树上莫队
https://www.luogu.com.cn/problem/SP10707 欧拉序就是进去的时候标记一次出来的时候标记一次,然后我们把这个序列拿出来,变成一个2*n的新序列,每个点有前后两次访问ll[i]和rr[i],那么一段树上的路径就可以用区间表示 假设询问是u,v的路径,ll[u]<ll[v],如果u是v的祖先,那么直接对应到ll[u]-ll[v],否则对应到rr[u]-ll[v]再加上ll[lca(u,v)],因为u和v的最近公共祖先出现一定在ll[u]左边,第二次出现在rr[v]右原创 2020-10-20 01:05:14 · 155 阅读 · 0 评论 -
洛谷P1903 [国家集训队]数颜色 / 维护队列 带修改莫队
https://www.luogu.com.cn/problem/P1903 离线修改的莫队可以多增加一维的时间,然后变成[l,r,t]->[l+-1,r+-1,t+-1] 先按左端点块排序,再按右端点块排序,再按时间大小排序。 块的大小需要是n^(2/3),可以吧总复杂度变成O(n^(5/3)),优于n^2 实际上在1e5的数据下洛谷最大的点只跑了846ms,还没加读入优化 #include<bits/stdc++.h> using namespace std; const原创 2020-10-19 01:27:33 · 199 阅读 · 0 评论 -
atcoder2014 joi训练营 C 歴史の研究 回滚莫队
https://atcoder.jp/contests/joisc2014/tasks/joisc2014_c 经典找最大值,删除的时候找次大找不了,所以我们需要用不删除的回滚莫队,每次操作都从左端点所在块的最右边开始向左移动到左端点然后再回退,由于同一左端点块内右端点都是严格向右的,所以一个块只会向右n,只有sqrt(n)个块,每个询问只要扫左端点块一遍,长度为sqrt(n),所以左端点移动总数是qsqrt(n) #include<bits/stdc++.h> using namespa原创 2020-10-18 23:30:36 · 262 阅读 · 0 评论 -
洛谷P5906 【模板】回滚莫队&不删除莫队
https://www.luogu.com.cn/problem/P5906 莫队好多套路啊。。。建议都学习一下 学习自题解https://www.luogu.com.cn/problem/solution/P5906 回滚莫队的意思大概就是,按l所在块再求枚举询问,相同的一起求答案,l部分的必须每次从当前块的最右边向左拓展到想要的地方,求完当前询问之后,你此时更新出的答案要回滚到l向左移动之前,再求下个询问。 左端点在一个块中的询问处理完之后,我们清空所有最左和最右的数字位置的数组,再处理下个块中原创 2020-10-17 01:52:05 · 348 阅读 · 0 评论 -
codeforces1288E Messenger Simulator
https://codeforces.com/contest/1288/problem/E 莫队做的这题,根号常数慌得一匹,加了一堆常数优化,最后1081ms,怕被hack,最后主席树没冲出来,结果这题没被hack,A,D没了,艹,本来可以上波大分结果变成掉分。 下面的代码是没加优化前的,赛后测了一下是1949ms,差了将近一倍。。。。 很显然最前面要么是一开始的位置,要么是后面有messa...原创 2020-01-15 15:38:55 · 273 阅读 · 0 评论 -
HDU6333 Problem B. Harvest of Apples
考场上看到这个题的时候,我记得这个式子好像是不能化简的= =,所以我就开始想能不能从c(m,0)+c(m,1)+...+c(m,m)轻松推出c(n,0)+c(n,1)+c(n,2)....+c(n,m),因为前者就是2^m,如果能O(1)从m扩大到n就行了,结果发现从 c(m,0)+c(m,1)=sum1 (1)式 推到 c(m+1,0)+c(m+1,1)+..c(m+1,...原创 2018-08-02 22:11:11 · 243 阅读 · 0 评论
分享