This article is made by Jason-Cow.Welcome to reprint.But please post the writer's address. http://www.cnblogs.com/JasonCow/ 链剖+线段树 所以为什么 2017.4.8 C题爆零了!!! 我的暴力分呢? 大话西游AC code 假装考试30分拿到了T△T #include <algorithm> #include <iostream> #include <…
在搞LCT之前,我们不妨再看看喜闻乐见的树链剖分. 树链剖分有一道喜闻乐见的例题:NOI2015 软件包管理器 如果你看懂题目了,你就会明白它是叫你维护一个树,这棵树是不会动的,要兹磁子树求和,子树修改,树上路径求和,树上路径修改. 树链剖分就是把一个树剖分成像这样的东西: 一棵树用一坨重链组成,重链之间用轻链连接. 对于树上的每一个点,它和子树大小最大的那个的根节点在同一重链,其他儿子另成一条新重链. 这样可以证明每个点到根至多只有log级这么多段的连续的重链. 然后我们把连续的一坨重链用线段…
潇爷昨天刚刚讲完...感觉得还可以...对着模板打了个模板...还是不喜欢用指针.... 1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec Memory Limit: 162 MB Submit: 10559 Solved: 4258 [Submit][Status][Discuss] Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结…
F. Drivers Dissatisfaction time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standard output In one kingdom there are n cities and m two-way roads. Each road connects a pair of cities, and for each road we…
P4180 [模板]严格次小生成树[BJWC2010] 题目描述 小C最近学了很多最小生成树的算法,Prim算法.Kurskal算法.消圈算法等等.正当小C洋洋得意之时,小P又来泼小C冷水了.小P说,让小C求出一个无向图的次小生成树,而且这个次小生成树还得是严格次小的,也就是说:如果最小生成树选择的边集是EM,严格次小生成树选择的边集是ES,那么需要满足:(value(e)表示边e的权值)$\sum_{e \in E_M}value(e)<\sum_{e \in E_S}value(e)$ 这下…
本题解并不提供圆方树讲解. 所以不会圆方树的出门右转问yyb 没有修改的话圆方树+链剖. 方点的权值为点双连通分量里的最小值. 然后修改的话圆点照修,每一个方点维护一个小根堆. 考虑到可能被菊花卡死. 我们每一个方点只维护儿子的最小值. 当询问的路径\(lca\)为方点时,\(ans=min(ans,w[fa[lca]])\)即可. #include<iostream> #include<cstring> #include<cstdio> #include<cma…
思路: 恶心的数据结构题-- 首先 我们 链剖 把树 变成序列 再 套一个 区间 第K大就好了-- 复杂度(n*log^4n) //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define N 88888 #define inf 100000000 int n,q,first[N],next[N*2],v[N*2],t[N],to…
This article is made by Jason-Cow.Welcome to reprint.But please post the writer's address. http://www.cnblogs.com/JasonCow/ 感谢您的关注,赠送数据生成器一个 #include <ctime> #include <cstdio> #include <iostream> #include <algorithm> using namespac…
This article is made by Jason-Cow.Welcome to reprint.But please post the writer's address. http://www.cnblogs.com/JasonCow/ [NOIP2015]运输计划    Hello!链剖.你好吗? 题意: 给出一棵n个节点的带权树,m对树上点对 现在允许删除一条边,(权值修改为0) 输出: 最小化的点对间最大距离 1.链剖 2.树上差分 3.二分 链剖我就不多说了,就是两dfs 注意…
思路: 1.树链剖分+用带标记的线段树维护操作(复杂度O(nlog2n)) 2.树链剖分LCA(TarjanLCA等各种LCA)+差分 复杂度(O(n)->O(nlogn)之间) 下面就说说怎么差分-- 把mark[x]++,mark[y]++,mark[lca(xx,yy)]–,mark[fa[lca(xx,yy)]]–; 最后输出的时候要把 不是a[1]的节点–. 搞定~~~ //By SiriusRen #include <cstdio> #include <cstring&…