- 博客(8)
- 收藏
- 关注
原创 SPOJ1825--点分治
Description After the success of 2nd anniversary (take a look at problem FTOUR for more details), this 3rd year, Travel Agent SPOJ goes on with another discount tour.The tour will be held on ICPC isla
2017-04-23 20:17:50 329
原创 楼教主男人八题--POJ1741--点分治
DescriptionGive a tree with n vertices,each edge has a length(positive integer less than 1001). Define dist(u,v)=The min distance between node u and v. Give an integer k,for every pair (u,v) of ver
2017-04-18 20:51:15 512
原创 BZOJ1036--树链剖分模板
Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u和v本身代码如下:
2017-04-17 20:42:57 297
原创 树链剖分
我们先来看这样一个问题: 给出一棵树,每个节点有一个权值,每次操作可以修改某一节点的权值,或是询问任意两点间路径上的最大值或是权值和,要求复杂度为O(nlogn)n为点数。 由于有修改操作,使得不能使用预处理(倍增数组)来实现快速查询,树链剖分就可以通过把树剖分成一些链,对于链上的节点,可以用
2017-04-17 09:24:33 258
原创 HDU1890-SplayTree
题目描述 给你一个序列,第i次操作是把第i个数到第i小的数这段区间翻转,即第i次操作把第i小的数一次翻转到第i个位置,最终序列会变成升序的(注意:如果有相同的数,那么在初始序列中靠前的在最终序列也靠前,即相同的数相对位置不变),每次操作前输出第i小的数所在的位置。 题解: 如果每次直接找整个数列第i小的数,需要树套树,其实,只要每次把第i个数翻转到第i个位置后,下一次操作需要翻转的数就是剩下的
2017-04-16 17:43:24 434
原创 BZOJ1058-SplayTree
Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作。今天是妈妈的生日,小Q希望可以帮妈妈分担一些工 作,作为她的生日礼物之一。经过仔细观察,小Q发现统计一张报表实际上是维护一个可能为负数的整数数列,并 且进行一些查询操作。在最开始的时候,有一个长度为N的整数序列,并且有以下三种操作: INSERT i k 在原数 列的第i个元素后面添加一个新元素k; 如果原数列的第i
2017-04-14 15:50:45 426
原创 平衡树之SplayTree
SplayTree,即伸展树,是竞赛中很常用的一种平衡树,它可以实现序列的分裂合并,并且保证均摊复杂度是O(nlogn)。 与Treep类似的,SplayTree也是基于旋转的,Splay,即伸展操作的实质就是在一棵子树中找到一个节点并把它旋转到根,复杂度靠谱的Splay有三种旋转(注意不要擅自修改旋转的方式,因为SplayTree复杂度的证明正是基于它的旋转方式的,否则可能会变成复杂度不靠谱的
2017-04-08 21:32:07 512
原创 SplayTree--BZOJ1500
这是一个Splay模板题,适合用来连代码能力#include<cstdio>#include<cstring>#include<algorithm>#define INF -1e9#define maxn 500006using namespace std;struct node{ node* ch[2]; int key,num,sum,maxs,maxl,maxr,t
2017-04-07 21:47:10 353
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人