这题的主要的坑点就是他给你的射击目标有重合的部分,如果你向这些重合的部分射击的话要考虑两种情况:
射击目标数量 ≥ 重合数量 : 全加上
射击目标数量 ≤ 重合数量 : 只加距离*射击目标数量
然而这题的内存还是很良心的,总体比较水吧。
主要做法是按照横坐标1~x建立主席树,每棵主席树维护l,r区间的设计目标数量,以及这些数量如果全部被射击获得的分数,这些在建树的时候是很好维护的。...
分类:
其他好文 时间:
2015-08-30 17:34:08
阅读次数:
208
题意:
给出一颗n个结点的树,点上有权值;
两种操作:
1.修改某个结点的权值;
2.求x,y路径上第K大值;
题解:
首先显然这题可以先树剖一下,将其转化为区间问题;
那么问题来了,用什么维护?
这是有很多办法的,一般人都会上一些比较显然的方法吧;
比如线段树套平衡树,二分答案处理询问;
时间达到了O(mlog^4n)。。。20*20*20*20=160000.。。;...
分类:
Web程序 时间:
2015-08-27 21:20:59
阅读次数:
411
静态区间第k大的问题,往往可以利用主席树来解决这是主席树的第一道题主席树大概可以理解为在n个节点上都建立一棵线段树,但是想想会超出内存每一个节点保存的线段树都记录当前整段前缀区间的信息但是因为每次添加后一个节点,那么他除了当前节点位置需要更新之外,其他的位置都可以保持跟上一棵节点对应的线段树一致,那...
分类:
其他好文 时间:
2015-08-27 10:44:26
阅读次数:
135
题意:给定一个区间,求这个区间第k大的数,支持单点修改。
思路:主席树真是个神奇的东西.........速度很快但是也有一个问题就是占用内存的很大,一般来说支持单点修改的主席树套树状数组空间复杂度为O(n*logn*logn), 如果查询较少的话,可以初始的时候用一颗静态主席树,这样空间复杂度可以降为O(n*logn+q*logn*logn),勉强可以过zoj这道题。
这道题看了好久好久才懂....
分类:
编程语言 时间:
2015-08-21 21:29:57
阅读次数:
556
题意:对于一段区间,每次求[l,r]的第k大,存在单点修改操作;思路: 学习主席树参考:http://blog.csdn.net/wjf_wzzc/article/details/24560117(各种形式)http://blog.csdn.net/bossup/article/details/.....
分类:
编程语言 时间:
2015-08-18 18:46:25
阅读次数:
185
BZOJ 3514 Codechef MARCH14 GERALD07加强版 LCT+主席树...
分类:
其他好文 时间:
2015-08-13 10:05:58
阅读次数:
232
子树操作, dfs序即可.然后计算using namespace std;#define M(l, r) (((l) + (r)) >> 1)const int maxn = 200009;typedef long long ll;inline ll readll() { char c = getc...
分类:
其他好文 时间:
2015-08-07 23:43:53
阅读次数:
211
按边权从大到小加边,用Link-Cut Tree维护最小生成树。对于当前要加的边i,最小生成树上边权在[1,R]范围内的和就是询问[e[i].w,R]的答案。因为强制在线,所以用主席树存下所有历史版本即可。时间复杂度$O(n\log n)$。#include#includeusing namespa...
分类:
其他好文 时间:
2015-07-30 22:45:42
阅读次数:
213
Orz..跑得还挺快的#10自从会树链剖分后LCA就没写过倍增了...这道题用可持久化线段树..点x的线段树表示ROOT到x的这条路径上的权值线段树-------------------------------------------------------------------------#in...
分类:
其他好文 时间:
2015-07-30 00:27:32
阅读次数:
231
/*
求l,r这个死序列中第k小的数
*/
#include
#include
# include
using namespace std;
# define lson l,m
# define rson m+1,r
# define N 100005
int a[N],Hash[N];
int T[N];///树祖宗节点的编号
int sum[N<<5];//数目
int L[N<<5];...
分类:
其他好文 时间:
2015-07-28 23:20:12
阅读次数:
399