树链剖分
DorikoTY
hsezoier
展开
-
codevs3287: [NOIP2013]货车运输
题目链接 最大生成树+LCA。 静态LCA,数据离线,可以用tarjan或者倍增。 然而 我写了树链剖分#include <vector> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std;const int N = 10010;struct ed原创 2016-09-22 21:57:55 · 247 阅读 · 0 评论 -
bzoj4538: [HNOI2016]网络
题目链接维护一颗树。在每个时刻,有以下三个操作。 (u,v,w)(u,v,w): 向从uu至vv的路径上添加一个重要度为ww的任务。 (t)(t): 取消tt时刻添加的任务。 (x)(x) 查询所有未覆盖xx节点的任务中重要度的最大值。 这道题有诸多做法,然而我直接当做树链剖分练习题来做了。对于这样的三个操作,我们可以考虑用树剖来维护。查询不覆盖某节点的任务难以直接用线段树实现,我们可以反其道而行之原创 2016-09-19 21:46:40 · 372 阅读 · 1 评论 -
poj2763: Housewife Wind
题目链接 裸树链剖分。要求维护一棵树,支持修改某条树边的长度以及查询两点间距离。 闲话少叙,直接上代码。#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std;const int N = 100010;struct edge { int v, w,原创 2016-09-20 22:50:44 · 231 阅读 · 0 评论 -
bzoj4196: [NOI2015]软件包管理器
题目链接裸树链剖分。根据dfs序确定子树在线段树上的区间范围。对于install操作,答案即该节点深度 - 该点到根节点的链上已安装的个数,然后将该链全部赋值为已安装。对于unistall操作,答案即子树已安装个数,然后将子树赋值为未安装。#include <vector> #include <cstdio> #include <cstring> #include <iostream> #incl原创 2016-09-13 22:00:32 · 263 阅读 · 0 评论 -
codevs4632: [NOIP2015]运输计划
题目链接 半年前写过,然而是照着别人的模板敲的,今天自己写一遍。 dfs序+LCA+二分+树上差分。 然而我又写了树链剖分,简单粗暴。#include <vector> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std;const int N = 3原创 2016-09-28 21:37:52 · 246 阅读 · 0 评论