———————数据结构——————
等我学会后缀自动机
侠影之谜
展开
-
南昌邀请赛网络赛 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 · 144 阅读 · 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 · 151 阅读 · 0 评论 -
Codeforces Global Round 1 F. Nearest Leaf(线段树+离线操作)*
题目链接:http://codeforces.com/contest/1110/problem/F题目大意:统计查询类题目,给定一颗树,树边有权重,查询格式是:x,y,z,查询x节点到[y,z]区间中的叶节点的最短路径长度是多少。其树的产生形式严格遵循DFS序形式。题目分析: 这道题我是瞄了眼题解的思路的,才知道有个换根的性质。大体是这样的:首先考虑所有的x都是1根节...原创 2019-02-21 23:51:51 · 157 阅读 · 0 评论 -
HDU 2665 Kth number (静态主席树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2665题目大意:静态查询区间第k小题目分析: 主席树模板题。主席树的技巧就体现在时间序。先把序列离散化,把区间完全映射成大小关系。然后对于每个节点,我们更新其出现后对所有区间的贡献,比如一个数如果整体上的大小关系序号超过一半的话,那么它的出现对[1,mid]这个区间无贡献...原创 2019-02-16 11:06:08 · 127 阅读 · 0 评论 -
HDU 5877 Weak Pair (树状数组+DFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5877#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-02-05 22:14:32 · 90 阅读 · 0 评论 -
Gym 100712L Alternating Strings II (线段树+DP)
题目链接:http://codeforces.com/gym/100712/attachments#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 ...原创 2019-01-23 08:06:15 · 125 阅读 · 0 评论 -
Gym 101147F Bishops Alliance (树状数组+DP)
题目链接:http://codeforces.com/gym/101147/problem/F#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 lon...原创 2019-01-21 20:33:07 · 132 阅读 · 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 · 106 阅读 · 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 · 121 阅读 · 0 评论 -
HDU 5875 AnInteresting game(树状数组思维题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5975#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-19 23:23:08 · 140 阅读 · 0 评论 -
CodeForces 75D Big Maximum Sum (线段树辅助DP)
题目链接:http://codeforces.com/problemset/problem/75/D#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 __i...原创 2018-12-05 07:44:52 · 160 阅读 · 0 评论 -
HDU 6430 Problem E. TeaTree (动态倍增LCA+DFS序性质+gcd计数技巧)*
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6430#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 uns...原创 2018-11-18 11:19:49 · 126 阅读 · 0 评论 -
HDU 5266 pog loves szh III (线段树+lca水题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5266#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 uns...原创 2018-11-17 16:44:24 · 155 阅读 · 0 评论 -
HDU 6203 ping ping ping (在线倍增lca+DFS序+树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6203#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 uns...原创 2018-11-17 15:50:52 · 182 阅读 · 0 评论 -
HYSBZ 2243 染色 (树链剖分+线段树)*
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2243///#include<bits/stdc++.h>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define de...原创 2018-11-16 16:32:20 · 186 阅读 · 0 评论 -
CodeForces - 115E Linear Kingdom Races (线段树优化DP)*
题目链接:http://codeforces.com/problemset/problem/115/E#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...原创 2018-11-10 16:43:30 · 212 阅读 · 0 评论 -
HDU 4666 Hyperspace (曼哈顿距离+线段树维护极值)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4666#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...原创 2018-10-26 16:17:32 · 264 阅读 · 0 评论 -
HDU 6102 GCDispower (花样容斥+DP思维+树状数组维护)*
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6102#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define read(x...原创 2018-10-25 20:25:37 · 156 阅读 · 0 评论 -
ZOJ 2112 Dynamic Rankings (动态主席树)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2112题目大意:比静态查询区间第k小多加了一个修改操作。题目分析: 对于所有的数(原序列的数和要修改的数)都离散化处理,动态修改的核心是对于树状数组中出现的点开线段树维护,因为之前修改一个数对于后续区间有影响,我们令开一个根节点数组S来维...原创 2019-02-16 21:13:39 · 174 阅读 · 0 评论 -
Codeforces Round #538 (Div. 2)F Please, another Queries on Array? (数论+线段树+状态压缩)
题目链接:http://codeforces.com/contest/1114题目大意:查询结构,初始给定一个序列,支持两种操作,一种是 在区间上每个数都乘上一个x,一种是查询区间上每个数累乘后的结果的欧拉函数。题目分析: 这道题应该是 比较简单的,主要感觉还是考验代码功底吧。观察欧拉函数的性质即可,euler(n)=n*{因子乘积(1-1/p)}形式,打表发现...原创 2019-02-17 10:37:00 · 373 阅读 · 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 · 312 阅读 · 0 评论 -
CodeForces 255C Almost Arithmetical Progression (DP+离散化)
发现规律序列为a,b,a,b,a,b即可.#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,in...原创 2019-05-09 22:39:41 · 107 阅读 · 0 评论 -
HDU 6521 Party(线段树+二分+思维贡献)*
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6521题目大意给定n和m个操作,n代表序列长度,每个操作给定一个区间,代表把这个区间的人聚到一起,其区间效率是这个区间中多少对人没有在之前的区间中已经聚过.题目分析线段树+思维转化,我们可以对每个人,维护一个数组代表其最远认识到右边的哪一个人,比如...原创 2019-04-25 17:11:50 · 208 阅读 · 0 评论 -
HDU 6514 Monitor(二维差分+前缀和)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6514题目大意给定一个二维平面范围,和p个监视区,q个偷盗区,监视区和偷盗区形状是矩形,q个询问问偷盗区是否被监控去完全覆盖.题目分析二维差分,蛮套路的,如果知道一维的情况那么二维不难,比如(x,y),(p,q)给定这两个坐标点,那么我们要想让这个矩形区域...原创 2019-04-20 08:20:19 · 305 阅读 · 0 评论 -
luogu3369 普通平衡树(平衡树模板题)
题目链接:https://www.luogu.org/problemnew/show/P3369#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 l...原创 2019-05-02 09:15:12 · 133 阅读 · 0 评论 -
南昌邀请赛 Max answer(单调栈+最小子段和)
题目链接:https://nanti.jisuanke.com/t/38228题目大意给定一个正负数的串,定义一个函数f(l,r)=(r-l+1)*min{a[i]|l<=i<=r},问这个函数的最大值是多少.题目分析首先对于最小值是整数的情况,用单调栈很好维护,那么剩下的负数的情况,不难发现其所要找的子段和是最小的,就是说答案如果是以负数作...原创 2019-04-21 06:56:09 · 166 阅读 · 0 评论 -
HYSBZ 1483 梦幻布丁 (启发式合并)
题目链接:https://vjudge.net/problem/134273/origin题目大意中文题目,不过多解释了题目分析启发式合并,据说模拟两个数据结构合并的过程中用容量小的去加入容量大的的话可以把复杂度降低为nlogn.对于这道题,我们维护以颜色为标记的链表,用vector存储各个相同颜色的下标,并且映射关系逻辑要理清楚,因为我们通过启发式合并可能把颜色...原创 2019-03-28 18:58:07 · 146 阅读 · 0 评论 -
Educational Codeforces Round 61 (Rated for Div. 2) G Greedy Subsequences (线段树+单调栈+DFS序)*
题目链接:http://codeforces.com/contest/1132题目大意定义一个贪心子序列为:一个子序列下标集合并且满足题目中给定的条件,给定n和k,输出n-k个数字,有n-k个滑动区间,每个对应该区间中最大贪心子序列的长度.题目分析可以说是蛮自闭的题目了,,,看别人的提示外加自己研究好久才终于弄明白了.首先是建图的思想,不难发现对于这个关系来说是...原创 2019-04-10 19:12:52 · 81 阅读 · 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 · 129 阅读 · 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 · 202 阅读 · 0 评论 -
CodeForces 1000F One Occurrence (线段树+离线/主席树)*
题目链接:http://codeforces.com/problemset/problem/1000/F题目大意给定一个序列和若干个查询,每次查询区间中只出现一次的那个数字,若答案有若干个则输出任意一个,否则输出零。题目分析根据贪心的思想,对于一个特定的区间,假设每个位置都有一个pre,即上一次出现该位置数的位置,如果第一次出现明显位置应该为0,一个区间中是否存...原创 2019-03-19 14:25:48 · 290 阅读 · 0 评论 -
Codeforces Round #546 (Div. 2) E. Nastya Hasn't Written a Legend(线段树+二分+数学转换)
题目链接:http://codeforces.com/contest/1136/problem/E题目大意给定两个序列,支持两种操作,查询第一个序列的区间和,第二种是修改a数组x位置上的值,增加x,并且如果a[i+1]<a[i]+k[i] 那么a[i+1]=a[i]+k[i]。题目分析[i+1]-S[i]<a[i]-S[i-1],这样我们把a[i]+S[i...原创 2019-03-21 00:52:03 · 123 阅读 · 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 · 178 阅读 · 0 评论 -
CodeForces 916D Jamie and To-do List (主席树+map)
题目链接:http://codeforces.com/problemset/problem/916/D题目大意给定四种操作,第一种:设定字符串的优先级,若该字符串事先没有出现过,则添加上去,否则修改。第二种:删除操作,删除指定的字符串第三种:返回操作,回退k个操作,第四种:查询指定字符串,其有多少个字符串的优先级小于它。题目分析看到时间回退操作不难想到可持久化,...原创 2019-03-20 15:07:07 · 214 阅读 · 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 · 210 阅读 · 0 评论 -
Codeforces Round #541 (Div. 2)F. Asya And Kittens(启发式合并+并查集+构造)
题目链接:http://codeforces.com/contest/1131/problem/F题目大意给定n个操作,其意义是把两个线段区间合并成一个,现在要构造一种排列使得这些操作合法。题目分析我们可以用并查集来表示一个已经归为一种类型的区间,那么对于下一种操作x,y我们可以用vector数组来模拟合并并更新并查集,出于时间复杂度考虑肯定是把小的并到大的上,启发式...原创 2019-03-06 22:26:21 · 254 阅读 · 0 评论 -
CSU 1811 Tree Intersection (树形DP思想+动态开点/主席树思想+启发式合并)
题目链接:http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=1811题目大意:给定一颗树,树上每个节点都有颜色,问对于每条边,其两端子树颜色集合交集的大小。 题目分析:这道题我是看题解才明白的,算是启发式合并的一个入门练习吧。首先想说这道题其实混合了不少思想在里面,我大致觉得有树形DP,线段树/主席树,...原创 2019-02-21 13:16:12 · 175 阅读 · 0 评论 -
Codeforces Round #537 (Div. 2) E. Tree(DP+树状数组统计+LCA)*
题目链接:http://codeforces.com/contest/1111/problem/E题目大意:给定一棵树,和若干个询问,k,m,r和k个数,问把这k个点分成至多m组且每组中的点集没有父节点与子节点的关系,其方案数有多少种。题目分析: 这道题我是看了别人的思路才懂的,果然还是自己太弱了呀。。。先简化问题,如果根是固定的如何考虑,那么观察到m的数据范围去...原创 2019-02-24 18:28:58 · 157 阅读 · 0 评论 -
POJ 1330 Nearest Common Ancestors (LCA模板题)
题目链接:http://poj.org/problem?id=1330#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)&l...原创 2018-09-30 14:30:19 · 182 阅读 · 0 评论 -
HDU 4991 Ordered Subsequence (树状数组+离散化)水
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4991#include<bits/stdc++.h>using namespace std;#define debug puts("YES");#define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++)#define read(x...原创 2018-10-09 09:37:18 · 143 阅读 · 0 评论