可持久化线段树 同BZOJ 3524,但是不要像我一样直接贴代码……TAT白白WA了一次,so sad 1 /************************************************************** 2 Problem: 2223 3 User:...
分类:
其他好文 时间:
2015-03-16 08:39:15
阅读次数:
187
大概题意:
给一数组a,问在某一区间L~R中,问对于连续的长为W的一段中最小的数字的最大值是多少.
显然可以转化成二分高度然后判断可行性的问题.
考虑到高度肯定为数组中的某一个值,将数组从大到小排序. 建n棵线段树,对于第 i 棵线段树,将 大于等于a[i] 的叶子的值设置为1,其他的叶子设置为0,问题就转化成了用线段树求某一区间中最长的连续的1的个数,这是一个线段树...
分类:
其他好文 时间:
2015-03-11 23:29:08
阅读次数:
241
可持久化线段树 裸可持久化线段树,把区间第K大的rank改成num即可……(往儿子走的时候不减少)苦逼的我……MLE了一次(N*30),RE了一次(N*10)……数组大小不会开……最后开成N*20的过了 1 /********************************************....
分类:
其他好文 时间:
2015-02-16 19:32:27
阅读次数:
179
题目链接:BZOJ - 3207题目分析先使用Hash,把每个长度为 k 的序列转为一个整数,然后题目就转化为了询问某个区间内有没有整数 x 。这一步可以使用可持久化线段树来做,虽然感觉可以有更简单的做法,但是我没有什么想法...代码#include #include #include #inclu...
分类:
其他好文 时间:
2015-01-27 08:09:13
阅读次数:
250
题目大意:定义一种串,如果一个串是另一个串的后缀,那么这个串称作kpm串。问一个串的标号第k大的kpm串是多少。
思路:将所有的串翻转之后变成前缀,全都插进一个Trie树中。每个节点维护一个last指针,表示最后一次更新的可持久化线段树的指针,如果再有串经过这里,就继续更新last指针。最后只需要查询last指针中的东西就可以了。
CODE:
#include
#inc...
分类:
其他好文 时间:
2015-01-15 09:24:55
阅读次数:
149
题目大意:。。。自己看
从源点出发,分别向汇点连两条流量为a和b的边,跑最大流即是a+b。
代码:
#include
#include
#include
#include
#define M 10
#define S 1
#define T 2
#define INF 0x3f3f3f3f
using namespace std;
struct abcd{
int to,f,nex...
分类:
其他好文 时间:
2015-01-09 19:26:23
阅读次数:
204
可持久化线段树 可持久化线段树是一种神奇的数据结构,它跟我们原来常用的线段树不同,它每次更新是不更改原来数据的,而是新开节点,维护它的历史版本,实现“可持久化”。(当然视情况也会有需要修改的时候) 可持久化线段树的应用有很多,仅以区间第K大这种简单的问题来介绍这种数据结构。 我们原本建立的线段...
分类:
其他好文 时间:
2015-01-02 22:16:55
阅读次数:
237
题目大意:给定一个环,每个节点有一个所属国家,k次事件,每次对[l,r]区间上的每个点点权加上一个值,求每个国家最早多少次操作之后所有点的点权和能达到一个值
首先我们考虑暴力想法
对于每个国家分开讨论 二分操作次数
但是这样每次Judge的时候我们要模拟1~mid所有的操作 浪费在这里的复杂度实在太大
这样做每个国家需要模拟O(klogk)次操作 时间复杂度O(nklogk) TLE
我...
分类:
其他好文 时间:
2014-12-30 11:46:16
阅读次数:
258
题目大意:给定一个序列,多次询问某一区间中出现且仅出现一次的最大的数
令第i个数左侧第一个与这个数相同的数为last[i] 右侧第一个与这个相同的数为next[i]
那么一个数a[i]在区间内出现一次当且仅当last[i]r&&l
于是我们将元素按照last[i]排序并构建可持久化线段树 令pos为满足last[i]
每次查询我要查询的是第pos个版本的线段树内所有next[i]>r的数中...
分类:
其他好文 时间:
2014-12-23 17:27:01
阅读次数:
1347