主席树/划分树/可持久化结构
等我学会后缀自动机
侠影之谜
展开
-
HDU 4866 Shooting (主席树+离散化优化+初始化问题)
#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll long long#define lrt int l,int r,int rt#define lson l,m...原创 2020-04-04 21:17:18 · 150 阅读 · 0 评论 -
CodeForces 1062E Company (主席树第k大+dfs序性质)
#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll long long#define lrt int l,int r,int rt#define lson l,m...原创 2020-03-30 21:53:22 · 243 阅读 · 0 评论 -
CodeForces 853C Boredom (主席树+分类讨论)
#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll long long#define lrt int l,int r,int rt#define lson l,m...原创 2020-03-27 10:36:50 · 242 阅读 · 0 评论 -
HDU 5029 Relief grain (树链剖分+权值线段树思想)
#include<bits/stdc++.h>using namespace std;#define debug cout<<"YES\n";#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll long long#define lrt int l,int r,int rt#define ...原创 2020-03-26 18:10:52 · 192 阅读 · 0 评论 -
ZOJ 4053 Couleur (启发式合并+主席树)
#include<bits/stdc++.h>using namespace std;#define debug cout<<"YES\n";#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll long long#define lrt int l,int r,int rt#define ...原创 2020-03-10 17:31:59 · 225 阅读 · 0 评论 -
CodeForces 484E Sign on Fence (主席树+二分+排序思维)
#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll long long#define lrt int l,int r,int rt#define lson l,m...原创 2020-02-14 22:25:36 · 201 阅读 · 0 评论 -
HDU 5820 Lights (主席树)
#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll long long#define lrt int l,int r,int rt#define lson l,m...原创 2020-02-11 09:05:21 · 183 阅读 · 0 评论 -
CodeForces 813E Army Creation 主席树+预处理
#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll long long#define lrt int l,int r,int rt#define lson l,m...原创 2020-02-09 09:36:10 · 131 阅读 · 0 评论 -
南昌邀请赛网络赛 Distance on the tree (主席树+动态倍增LCA)
题目链接:https://nanti.jisuanke.com/t/38229考研ing,题解比较随意题目大意给定一棵树,有边权,每次查询问u,v路径上权值不大于k的个数是多少.题目分析主席树,每个点记录是所有祖先节点记录的前缀和,那么对于主席树来讲前后关系就明显了.再套个动态倍增LCA,就可以做了.详见代码#include<bits/stdc++...原创 2019-05-10 21:04:12 · 172 阅读 · 0 评论 -
CodeForces 893F Subtree Minimum Query (主席树+BFS|DFS)
题目链接:http://codeforces.com/problemset/problem/893/F题目大意给定一棵树和根,每个节点上都有权值,先给定若干个查询(强制在线,要求在题目中)(x,k),问x节点的子树中其距离x不超过k的节点权值的最小值,其中x自己规定距离为0.题目分析思维蛮巧妙的主席树了,,我也是参照了别人的思路才恍然大悟,在数据结构的灵活使用方面...原创 2019-03-27 00:00:28 · 159 阅读 · 0 评论 -
CodeForces 960F Pathwalks (主席树结构+动态开点思想+DP)
题目链接:http://codeforces.com/problemset/problem/960/F题目大意给定m个三元组(x,y,z),要求找出符合条件的最大长度序列,其序列要求是:相邻两个,xi=yj&&zi>zj&&j<i.题目分析对于这种转移条件的要求,很明显就是个Dp,然后考虑用啥数据结构维护下就行了,之前遇到...原创 2019-03-22 19:14:28 · 230 阅读 · 0 评论 -
CodeForces 1000F One Occurrence (线段树+离线/主席树)*
题目链接:http://codeforces.com/problemset/problem/1000/F题目大意给定一个序列和若干个查询,每次查询区间中只出现一次的那个数字,若答案有若干个则输出任意一个,否则输出零。题目分析根据贪心的思想,对于一个特定的区间,假设每个位置都有一个pre,即上一次出现该位置数的位置,如果第一次出现明显位置应该为0,一个区间中是否存...原创 2019-03-19 14:25:48 · 295 阅读 · 0 评论 -
HDU 4417 Super Mario (二分+划分树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define ll lon...原创 2019-01-20 17:50:09 · 115 阅读 · 0 评论 -
HDU 2665 Kth number (静态主席树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2665题目大意:静态查询区间第k小题目分析: 主席树模板题。主席树的技巧就体现在时间序。先把序列离散化,把区间完全映射成大小关系。然后对于每个节点,我们更新其出现后对所有区间的贡献,比如一个数如果整体上的大小关系序号超过一半的话,那么它的出现对[1,mid]这个区间无贡献...原创 2019-02-16 11:06:08 · 132 阅读 · 0 评论 -
HDU 4417 Super Mario (二分+静态主席树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417题目大意:给定一个整数序列,和若干查询,每次查询区间[l,r]中小于等于x的数有多少个。题目分析: 区间第k小的另一种表达方式,假如我们能够log时间求出第k小的数,就可以二分处理这道题。主席树可以搞定静态第k小。#include<bits/stdc++....原创 2019-02-16 21:03:07 · 155 阅读 · 0 评论 -
ZOJ 2112 Dynamic Rankings (动态主席树)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2112题目大意:比静态查询区间第k小多加了一个修改操作。题目分析: 对于所有的数(原序列的数和要修改的数)都离散化处理,动态修改的核心是对于树状数组中出现的点开线段树维护,因为之前修改一个数对于后续区间有影响,我们令开一个根节点数组S来维...原创 2019-02-16 21:13:39 · 206 阅读 · 0 评论 -
HDU 4348 To the moon (动态主席树+区间修改技巧)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4348题目大意:维护几种操作而已,操作1:对于每次改变序列的操作都增加当前时间,操作2:返回到指定时间,操作3:查询过去时间序列的区间和题目分析: 这道题首先空间需求需要计算好,因为不是和以前的查询区间第k小那样每次只增加一条链的空间,这次的空间需要开的稍微大点。然后就...原创 2019-02-18 01:45:23 · 339 阅读 · 0 评论 -
CSU 1811 Tree Intersection (树形DP思想+动态开点/主席树思想+启发式合并)
题目链接:http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=1811题目大意:给定一颗树,树上每个节点都有颜色,问对于每条边,其两端子树颜色集合交集的大小。 题目分析:这道题我是看题解才明白的,算是启发式合并的一个入门练习吧。首先想说这道题其实混合了不少思想在里面,我大致觉得有树形DP,线段树/主席树,...原创 2019-02-21 13:16:12 · 200 阅读 · 0 评论 -
HDU 6278 Just $h$-index (静态主席树+二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6278题目大意给定一个序列和若干个查询,查询给定区间中最大的h满足至少有h个人其权值不小于h。题目分析其实只要知道区间第k小就可以二分做了,然后区间第k小就用主席树搞一下即可,然后二分答案,假设枚举到mid,观察区间第mid小的数x,如果该位置答案R-mid+1符合计数...原创 2019-03-10 00:41:16 · 238 阅读 · 0 评论 -
CodeForces 916D Jamie and To-do List (主席树+map)
题目链接:http://codeforces.com/problemset/problem/916/D题目大意给定四种操作,第一种:设定字符串的优先级,若该字符串事先没有出现过,则添加上去,否则修改。第二种:删除操作,删除指定的字符串第三种:返回操作,回退k个操作,第四种:查询指定字符串,其有多少个字符串的优先级小于它。题目分析看到时间回退操作不难想到可持久化,...原创 2019-03-20 15:07:07 · 237 阅读 · 0 评论 -
CodeForces 961E Tufurama (静态主席树做法)
题目链接:http://codeforces.com/problemset/problem/961/E题目大意给定一个序列a,问有多少个二元组(x,y)满足a[x]>=y&&a[y]>=x,x小于y,统计这样的二元组个数。题目分析明显构建主席树其权值总空间大小是n,那么我们按序扫描,对于当前值x,我们需要统计1到x区间中不小于位置i的个...原创 2019-03-17 08:24:01 · 187 阅读 · 0 评论 -
HDU 2665 Kth number (划分树模板题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2665#include<algorithm>#include<iostream>#include<string.h>#include<stdio.h>using namespace std;#define debug puts("YES...原创 2019-01-20 17:46:23 · 134 阅读 · 0 评论