由于深感自己水平低下,把大部分有效时间放在了刷题上,于是好久没写题解了。今天刚学了下划分树的原理,于是写道简单题练练手。题目链接:http://poj.org/problem?id=2104划分树的空间复杂度和时间复杂度均为O(nlogn),对于解决该问题而言,每次查询的复杂度为O(logn),比归...
分类:
其他好文 时间:
2015-06-11 22:35:29
阅读次数:
139
KPI
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 616 Accepted Submission(s): 261
Problem Description
你工作以后, KPI 就是你的全部了. 我开发了一个服务...
分类:
其他好文 时间:
2015-06-07 11:11:28
阅读次数:
128
求区间的问题有很多类,虽然前人有很多讲解了;但是我在这里在普及一下,算是自己的一种复习吧。1.静态询问一个区间的的第k大数,比如询问[l,r] k大数。虽然主席树可以处理,但是这类问题应该是划分树最合适的地方。划分树--- 实际上是利用大概一种类似快排的思想 来求解第K大数。 ...
分类:
其他好文 时间:
2015-06-04 08:33:07
阅读次数:
132
题意:3种操作分别为入队,出队,查询当前队列的中位数。操作数为1e5数量级。思路:先考虑离线算法,可以离散+线段树,可以划分树,考虑在线算法,则有treap名次树,SBtree(size balanced tree)等等。123456789101112131415161718192021222324...
分类:
其他好文 时间:
2015-06-03 06:07:22
阅读次数:
201
分析:离线线段树,把所有询问离线读入,然后按H从小到大排序。对于所有结点也按从小到大排序,然后根据查询的H,将比H小的点加入到线段树,最后就是一个区间求和。这题貌似也可以用划分树,树状数组等方法做。
#include
#include
using namespace std;
#define N 100005
struct Tree
{
int left,right,cnt;
} TREE...
分类:
其他好文 时间:
2015-05-31 16:54:33
阅读次数:
103
#include
#include
#include
#include
#include
#include
#include //hdu4417(划分树)--二分
#define N 100010
using namespace std;
int sorted[N], p[20][N], num[20][N];
void build(int l, int r, int...
分类:
其他好文 时间:
2015-05-31 00:09:53
阅读次数:
163
K-th NumberTime Limit: 20000MSMemory Limit: 65536KTotal Submissions: 40920Accepted: 13367Case Time Limit: 2000MSDescriptionYou are working for Macroha...
分类:
编程语言 时间:
2015-05-19 22:25:44
阅读次数:
181
题意:从某个区间内最多选择k个数,使得和最大思路:首先题目给定的数有负数,如果区间前k大出现负数,那么负数不选和更大,于是对于所有最优选择,负数不会出现,所以用0取代负数,问题便转化为区间的前k大数和。划分树:[1 6 3 8 5 4 7 2][6 8 5 7][1 3 4 2][8 7][6 5]...
分类:
其他好文 时间:
2015-05-17 07:05:17
阅读次数:
179
题意:查询区间中位数思路:模板题,相当于区间第K大的数,主席树可以水过,但划分树是正解。但还没搞明白划分树,先上模板 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include ...
分类:
其他好文 时间:
2015-05-16 01:27:13
阅读次数:
201
题目链接:NYOJ 116 士兵杀敌(二)
这一个是线段树的入门级水题,本题要求我们给出某个区间的区间和。这个问题和线段树的单点更新还是基本一致的。只要把单点更新中的值覆盖变为值得叠加,这一题便可以轻松解决了。如果不知道线段树的单点更新,请移步:传送门
【代码如下】...
分类:
其他好文 时间:
2015-04-30 09:01:59
阅读次数:
182