
树链剖分
lemonoil
竞赛党一枚
展开
-
SPOJ QTree6 [树链剖分]
啊啊啊!!! maintain的时候忘记+1s+1,于是就。。。累死了,只剩下最后一个Qtree7. 这道题与上道题类似,关键在于路径上面判定同色,关键点在findpath上,至于线段树,我又一次惊叹于线段树在序列问题上近乎无敌的维护效率。中间的mid与mid+1的判定神来之笔。 看来我就是一只菜鸡。#include<deque>#include<vector>#include<cstdi原创 2017-07-11 08:06:03 · 791 阅读 · 0 评论 -
SPOJ QTree7 [SET][树链剖分]
题目传送门为什么突出了SET呢?因为用了set后就可以用端点写法O(1)O(1)维护路径。。。。然后花费lognlog^n的时间插入删除。。。。。 还是感觉时间复杂度很GG啊,一大堆大神拿着LCT就开刷。。。不行了,我要刷QTree的二周目了,就叫拿着LCT拯救世界。这道题相比Qtree6没什么区别,就查找一个max,用Qtree的线段树写法就行了,剩下的用Qtree6的思路就AC了。 一个l打原创 2017-07-12 09:42:43 · 614 阅读 · 1 评论 -
HDU 3966 Aragorn's Story [树链剖分]
树链剖分裸题,比QTree系列要简单一点,重点是拿来练手#pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <string.h>#include <algorithm>#include <stdio.h>#include <vector>using namespace std原创 2017-07-15 21:00:38 · 261 阅读 · 0 评论 -
SPOJ QTree5 [树链剖分]
感觉之前拿点分治水过心里过意不去,。。。。。mdzz,我还是打了一份树链剖分的code,具体方法与QTree4相同(详见代码),维护线段树的合并时的值。#include<bits/stdc++.h>#define mid ((l+r)>>1)#define pf push_frontusing namespace std;const int N=1e5+1e2;const int INF=原创 2017-07-08 10:45:53 · 630 阅读 · 0 评论 -
NOIP 天天爱跑步 [DFS/树链剖分][差分]
终于调完了,了了自己的一个心结。并没有结束暂时不写题解,下面的代码应该还有优化的空间,各种意义上#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<vector>using namespace std;inline void read(int &res){ static ch原创 2017-07-21 21:32:20 · 748 阅读 · 0 评论 -
BZOJ4538 网络 [树链剖分]
那么对于每个询问我们只要判断权值大于K的路径的交是否都过x即可。路径的交还是路径,路径交满足结合律。可以离线拿个线段树维护一下即可,以权值为关键字,每个点记录该段区间的路径交 一道很标准的链交题,树链剖分+数据结构动态维护链上信息。转化信息时通过链交即可传递。 总之树链剖分练手。#include<bits/stdc++.h>const int N = 101005;using namespa原创 2017-09-18 09:25:37 · 525 阅读 · 0 评论 -
BZOJ3252 攻略 [树链剖分][不用线段树]
真心不知道这道题写线段树的人怎么想的,网上居然没有长链剖分的题解,哎,这道题就是一道标准的长链剖分,不带合并,deep存边权,sort取前k大就行了,SCOI2016 day1 t1的原版,我无力吐槽。 #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;temp原创 2017-09-18 09:42:14 · 595 阅读 · 0 评论