关闭

[树链剖分 可持久化线段树 垃圾数据结构题] Codechef JUNE17 #OAK Persistent oak

垃圾数据结构题大概就是维护树上的点离最大承重还差多少 然后断掉的就是到根路径上最早的小于0的地方 断掉后 到根路径还剩的承重都要加上掉下的重量 就是一颗线段树满足区间加 区间求min鄙视CC强行可持久化 硬上主席树标记永久化#include #include #include #include #define cl(x)...
阅读(131) 评论(0)

[主席树 Hash] Codechef JUNE17 #CLONEME Cloning

对权值建主席树 然后对于区间[a,b],[c,d] 在主席树上二分排完序后从左第一个不一样的地方 以及从右第一个不一样的地方 这个可以Hash下权值的出现次数,也是可以相减的#include #include #include using namespace std; typedef unsigned long long ull;inlin...
阅读(161) 评论(0)

[dsu on tree 主席树优化建图 最大流] BZOJ 3681 Arietta

这显然是个类似二分图匹配 但直接跑网络流边数承受不了 我们采用套路 用数据结构优化建图 类似vfk的a+b problem我们处理子树问题 有一种方法是按dfs序建主席树 然后就可以用减法取出一段区间 也就是子树的信息 但是在某些情况下不能减 比如在这个网络流里 这样的话 我们就要用一种科技 dsu on tree 相关资料 原文 神犇翻译版本大概意思是 我们用重链剖分的思想 当前子树的...
阅读(270) 评论(0)

[主席树] BZOJ 4571 [Scoi2016]美味

要是没有加 就是裸的可持久化字典树 其实字典树也就是线段树 按位贪心 然后在主席树上查一下某段是否有数字#include #include #include using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==...
阅读(81) 评论(0)

[最短路 主席树 Hash] Codeforces 464E #265 (Div. 1) E. The Classic Problem

很棒的数据结构练习题 因为边权太大了 我们不能直接储存 我们用主席树! 比较直接从高位到低位找第一个不同的位 可以Hash下 每次加法 我们找到这一位之后第一个0 那么0变为1 0之前一连串1都变成0 这里有个小trick可以不用打标记 我们先建一棵全0的线段树 清0直接找到对应节点接上去就好了#include #include #include<algo...
阅读(170) 评论(0)

[主席树] BZOJ 4771 七彩树

感谢带我飞的rxd大爷我们先考虑不管深度限制可修改我们怎么做就是把每种颜色按照dfs序排列 然后给这些点都+1 但是相邻两个的lca处要-1 这样子树不同颜色数就是子树和然后我们把深度限制 看做按照深度的顺序加点 加点我们需要维护什么 每种颜色的序列 这个用set或平衡树 在序列中插入 我们对前驱后继lca什么瞎处理一通 然后记一下这个版本 也就是在主席树上修改然后一个深度限制 就相当于到那个深度...
阅读(260) 评论(0)

[LCT 主席树] BZOJ 3514 Codechef MARCH14 GERALD07加强版

N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数。 先预处理 按时间做一通最大生成树 每次加边 ii 替换树上的最小边 记这条边为 a[i]a[i] 特殊的 如果本来不连通 a[i]=0a[i]=0 如果是自环 a[i]=ia[i]=i对于每个询问[l,r][l,r],统计区间[l,r][l,r]中有多少个数小于ll,用nn去减即可得答案 为什么呢 因为替换了...
阅读(144) 评论(0)

[缩树 主席树] BZOJ 4539 [Hnoi2016]树

hnoi的大数据结构题 把每一个残基缩一下 变成一颗大树  每次新增 查询一下是在哪个残基上 这里要用主席树求子树第k大 然后记一下到fat的权值 然后就各种细节搞lca #include #include #include using namespace std; typedef long long ll; inline char nc(){ static char b...
阅读(163) 评论(0)

[主席树区间覆盖 线段树] UNR #1 火车管理

火车管理 我们可以建立一颗可持久化线段树,维护每个铁路每个时间的栈顶的吨位和栈顶火车的入栈时间。 我们再维护一颗线段树用来统计答案。 于是操作就显得很简单了: 区间询问:直接在答案线段树里询问即可。 区间压数:在可持久化线段树上进行区间覆盖,这个是十分基础的数据结构技巧,然后在答案线段树上修改一下。 区间弹数:由于我们记录了入栈时间,所以我们删完后用...
阅读(146) 评论(0)

[决策单调性 分治 主席树] BZOJ 4367 [IOI2014]holiday假期

比较显然的做法 枚举l,r 然后主席树 这题有很多单调性 可以利用 对一个确定的l 最优的r 是单调的 来分治 #include #include #include using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if ...
阅读(216) 评论(0)

[主席树 Kruscal] BZOJ 3545 [ONTAK2010]Peaks & 3551 [ONTAK2010]Peaks加强版

Orz hzwer 据出题人的做法。。。 就是做最小生成树,但合并两结点x,y的时新建结点ext,把ext连向fa(x),fa(y)这样建出一棵树,ext的权为该边的边权 找一个点v不超过x的子树的根,可以用倍增,以它为根的子树就是v不超过x所能到达的连通块 dfs序+主席树就行了。。 #include #include #include #defin...
阅读(138) 评论(0)

[主席树优化建图 最小割] BZOJ 3218 a + b Problem

膜拜PoPoQQQ的题解:http://blog.csdn.net/PoPoQQQ/article/details/42557217 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) #define V G[p].v using namespace std; typedef long long ...
阅读(202) 评论(0)

[主席树 二分答案] BZOJ 2653 middle

题解:http://blog.csdn.net/acm_cxlove/article/details/8566093 要求中位数最大,首先二分中位数,然后判断可行不可行。 判断X可行不可行,对于区间内的数,凡是>=X的标为1,否则为-1。这样的话,求一次最大区间和 如果大于等于0,则说明可行。 #include #include #include u...
阅读(160) 评论(0)

[主席树 树状数组套权值线段树] BZOJ 1146 [CTSC2008]网络管理Network

CTSC的裸题么 先建主席树  然后修改么 可以发现对整棵子树有影响 对每个点记录每个权值的改变量 然后用差分的思想 用树状数组区间修改 单点查询 A掉后发现不用打主席树 可以最初的权值也可以树状数组上改  结果稍微改下程序 慢了5倍233 #include #include #include #define V G[p].v using namespace std;...
阅读(413) 评论(0)

[主席树] BZOJ 3673 可持久化并查集 by zky BZOJ 3674 可持久化并查集加强版

什么时候去用rope水一下 贴3674的代码吧 3673没看到没在线了 炸死了 #include #include #include #define V G[p].v using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=b...
阅读(254) 评论(0)

[主席树 启发式合并] BZOJ 3123 [Sdoi2013]森林

本来一看LCT 后来看第k大 主席树啦 #include #include #include #include #define V G[p].v #define cl(x) memset(x,0,sizeof(x)) using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if...
阅读(309) 评论(0)

[主席树] BZOJ 3524 [Poi2014]Couriers BZOJ 2223 [Coci 2009]PATULJCI

裸题 #include #include #include using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; } r...
阅读(171) 评论(0)

[主席树] BZOJ 3932 [CQOI2015]任务查询系统

裸题 #include #include #include using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1...
阅读(192) 评论(0)

[主席树] BZOJ 2588 Spoj 10628. Count on a tree

树上路径第k大 裸题 #include #include #include #define V G[p].v using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(bu...
阅读(183) 评论(0)

[主席树] BZOJ 1803 Spoj1487 Query on a tree III

裸题 dfs序好了 #include #include #include #include #define V G[p].v using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,std...
阅读(260) 评论(0)
21条 共2页1 2 下一页 尾页
    个人资料
    • 访问:264072次
    • 积分:11943
    • 等级:
    • 排名:第1328名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:50条
    最新评论