伸展树
Hanks_o
一名。
展开
-
bzoj1208: [HNOI2004]宠物收养所(伸展树)
题目传送门 我好弱啊我连伸展树模版都打错。解法: 来一个人就领走宠物。 来一个宠物就被人领走。 那么树上某一个时刻要么全部都是人要么全部都是宠物。。 所以我们放心的求值就可以了。没学过伸展树的自己去学吧。代码实现:#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorith原创 2017-10-11 14:32:33 · 335 阅读 · 0 评论 -
bzoj3224: Tyvj 1728 普通平衡树(伸展树)
题目传送门 裸的伸展树。解法: 所谓伸展树就是一种平衡树。 自己学吧。代码实现:#include<cstdio>#include<cstring>#include<iostream>#include<cstdlib>#include<algorithm>using namespace std;int root;struct node { int d,n,c,f,son[2原创 2017-10-23 19:37:59 · 261 阅读 · 0 评论 -
bzoj1503: [NOI2004]郁闷的出纳员(伸展树)
题目传送门 基本也算入门题了。解法: 就伸展树维护一下然后加个暴力吧。代码实现:#include<cstdio>#include<cstring>#include<cmath>using namespace std;int root;struct node { int d,n,c,f,son[2];} tr[110000];int len;void update(int原创 2017-10-23 19:46:20 · 650 阅读 · 0 评论 -
bzoj3223: Tyvj 1729 文艺平衡树(伸展树)
题目传送门 这道题让我觉得我可以认真写下博客了。解法: 按照位置来建立伸展树,本身的值则是这个位置上是什么值。 即: 左子树在序列中位置都比我前。 右子树在序列中位置都比我后。 最后得出来的树我们按照中序遍历输出每个点的权值就好。怎么反转? 既然左子树比我前右子树比我后那么反转的话我只要把家族所有人对调一下就行了嘛。 也就是整棵子树的左右孩子都对调。 那么问题就是怎么把同一段序列放原创 2017-10-23 19:54:49 · 650 阅读 · 0 评论 -
bzoj1058: [ZJOI2007]报表统计(splay+堆)
题目传送门 。解法: 第一问就只需用小根堆维护每个原序列最后一个插入的是什么就行了。 每次进来的先把原来这个位置最后一个跟后面那个位置的差先删了 然后把新的两个差值加入堆。第二问就是splay维护前驱后继就行了呀。代码实现:#include<queue>#include<cmath>#include<cstring>#inclu...原创 2018-03-03 13:57:53 · 234 阅读 · 0 评论