高级数据结构
王文波~
清。。
展开
-
前中——后
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N = 1010;struct Node{ int val; int l, r;} tr[N];int a[N], b[N];int n, id, root, t;int get_node(int x){ tr[++ id].原创 2020-10-13 19:42:04 · 133 阅读 · 0 评论 -
抓住那头牛-BFS
农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点 NN,牛位于点 KK。农夫有两种移动方式:从 XX 移动到 X−1X−1 或 X+1X+1,每次移动花费一分钟从 XX 移动到 2∗X2∗X,每次移动花费一分钟假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?输入格式共一行,包含两个整数N和K。输出格式输出一个整数,表示抓到牛所花费...原创 2020-02-21 19:19:52 · 320 阅读 · 0 评论 -
迷宫问题-bfs
给定一个 n×nn×n 的二维数组,如下所示:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。数据保证至少存在一条从左上角走...原创 2020-02-20 23:15:15 · 599 阅读 · 0 评论 -
单词-ac自动机
某人读论文,一篇论文是由许多单词组成的。但他发现一个单词会在论文中出现很多次,现在他想知道每个单词分别在论文中出现多少次。输入格式第一行一个整数 NN,表示有多少个单词。接下来 NN 行每行一个单词,单词中只包含小写字母。输出格式输出 NN 个整数,每个整数占一行,第 ii 行的数字表示第 ii 个单词在文章中出现了多少次。数据范围1≤N≤2001≤N≤200,所有单词长度的总和...原创 2020-02-19 23:29:12 · 188 阅读 · 0 评论 -
ac自动机--------trie图优化-搜索关键词
给定 nn 个长度不超过 5050 的由小写英文字母组成的单词,以及一篇长为 mm 的文章。请问,有多少个单词在文章中出现了。输入格式第一行包含整数 TT,表示共有 TT 组测试数据。对于每组数据,第一行一个整数 nn,接下去 nn 行表示 nn 个单词,最后一行输入一个字符串,表示文章。输出格式对于每组数据,输出一个占一行的整数,表示有多少个单词在文章中出现。数据范围1≤n≤10...原创 2020-02-19 17:55:34 · 241 阅读 · 0 评论 -
营业额统计-平衡树
Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定...原创 2020-02-19 00:02:26 · 201 阅读 · 0 评论 -
平衡树全部套路模板
您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入数值x。删除数值x(若有多个相同的数,应只删除一个)。查询数值x的排名(若有多个相同的数,应输出最小的排名)。查询排名为x的数值。求数值x的前驱(前驱定义为小于x的最大的数)。求数值x的后继(后继定义为大于x的最小的数)。注意: 数据保证查询的结果一定存在。输入格式第一行为n,表示操作的个数。接下来...原创 2020-02-18 22:51:19 · 83 阅读 · 0 评论 -
第K小数-可持续优化结构线段树-主席树
给定长度为N的整数序列A,下标为 1∼N1∼N。现在要执行M次操作,其中第i次操作为给出三个整数li,ri,kili,ri,ki,求A[lili],A[lili+1],…,A[ri]ri中第kiki小的数是多少。输入格式第一行包含两个整数N和M。第二行包含N个整数,表示整数序列A。接下来M行,每行包含三个整数li,ri,kili,ri,ki,用以描述第i次操作。输出格式对于每次操作输...原创 2020-02-16 20:34:16 · 153 阅读 · 0 评论 -
最大异或和-可持久化数据结构
给定一个非负整数序列 a,初始长度为 N。有 M 个操作,有以下两种操作类型:1、”A x”:添加操作,表示在序列末尾添加一个数 x,序列的长度 N 增大1。2、”Q l r x”:询问操作,你需要找到一个位置 p,满足l≤p≤rl≤p≤r,使得:a[p] xor a[p+1] xor … xor a[N] xor x 最大,输出这个最大值。输入格式第一行包含两个整数 N,M,含义如问题...原创 2020-02-16 14:54:58 · 109 阅读 · 0 评论 -
亚特兰蒂斯-扫描法
有几个古希腊书籍中包含了对传说中的亚特兰蒂斯岛的描述。其中一些甚至包括岛屿部分地图。但不幸的是,这些地图描述了亚特兰蒂斯的不同区域。您的朋友Bill必须知道地图的总面积。你自告奋勇写了一个计算这个总面积的程序。输入格式输入包含多组测试用例。对于每组测试用例,第一行包含整数n,表示总的地图数量。接下来n行,描绘了每张地图,每行包含四个数字x1,y1,x2,y2x1,y1,x2,y2(...原创 2020-02-15 16:29:37 · 309 阅读 · 0 评论 -
线段树最基本的所有操作模板
给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一:1、“C l r d”,表示把 A[l],A[l+1],…,A[r] 都加上 d。2、“Q l r”,表示询问 数列中第 l~r 个数的和。对于每个询问,输出一个整数表示答案。输入格式第一行两个整数N,M。第二行N个整数A[i]。接下来M行表示M条指令,每条指令的格式如题目描述所示。输出格式对于每个询问,输出一个...原创 2020-02-15 00:26:10 · 127 阅读 · 0 评论 -
区间最大公约数-线段树
给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一:1、“C l r d”,表示把 A[l],A[l+1],…,A[r] 都加上 d。2、“Q l r”,表示询问 A[l],A[l+1],…,A[r] 的最大公约数(GCD)。对于每个询问,输出一个整数表示答案。输入格式第一行两个整数N,M。第二行N个整数A[i]。接下来M行表示M条指令,每条指令的格式如题目描述所示。...原创 2020-02-14 22:02:56 · 558 阅读 · 1 评论 -
你能回答这些问题吗-线段树
给定长度为N的数列A,以及M条指令,每条指令可能是以下两种之一:1、“1 x y”,查询区间 [x,y] 中的最大连续子段和,即 maxx≤l≤r≤ymaxx≤l≤r≤y{∑ri=lA[i]∑i=lrA[i]}。2、“2 x y”,把 A[x] 改成 y。对于每个查询指令,输出一个整数表示答案。输入格式第一行两个整数N,M。第二行N个整数A[i]。接下来M行每行3个整数k,x,y,k...原创 2020-02-14 17:31:27 · 177 阅读 · 0 评论 -
谜一样的牛-树状数组
有n头奶牛,已知它们的身高为 1~n 且各不相同,但不知道每头奶牛的具体身高。现在这n头奶牛站成一列,已知第i头牛前面有AiAi头牛比它低,求每头奶牛的身高。输入格式第1行:输入整数n。第2…n行:每行输入一个整数AiAi,第i行表示第i头牛前面有AiAi头牛比它低。(注意:因为第1头牛前面没有牛,所以并没有将它列出)输出格式输出包含n行,每行输出一个整数表示牛的身高。第i行输出第...原创 2020-02-14 00:18:50 · 116 阅读 · 0 评论 -
一个简单的整数问题2-树状数组
给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一:1、“C l r d”,表示把 A[l],A[l+1],…,A[r] 都加上 d。2、“Q l r”,表示询问 数列中第 l~r 个数的和。对于每个询问,输出一个整数表示答案。输入格式第一行两个整数N,M。第二行N个整数A[i]。接下来M行表示M条指令,每条指令的格式如题目描述所示。输出格式对于每个询问,输出一个...原创 2020-02-13 22:01:23 · 153 阅读 · 0 评论 -
题目-一个简单的整数问题-树状数组与差分的结合
给定长度为N的数列A,然后输入M行操作指令。第一类指令形如“C l r d”,表示把数列中第l~r个数都加d。第二类指令形如“Q X”,表示询问数列中第x个数的值。对于每个询问,输出一个整数表示答案。输入格式第一行包含两个整数N和M。第二行包含N个整数A[i]。接下来M行表示M条指令,每条指令的格式如题目描述所示。输出格式对于每个询问,输出一个整数表示答案。每个答案占一行。数...原创 2020-02-13 20:13:34 · 129 阅读 · 0 评论 -
题目-楼兰图腾-树状数组
在完成了分配任务之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自部落的图腾。西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了N个点,经测量发现这N个点的水平位置和竖直位置是两两不同的。西部314认为这幅壁画所包含的信息与这N个点的相对位置有关,因此不...原创 2020-02-13 19:21:22 · 284 阅读 · 0 评论 -
银河英雄传说-并查集
有一个划分为N列的星际战场,各列依次编号为1,2,…,N。有N艘战舰,也依次编号为1,2,…,N,其中第i号战舰处于第i列。有T条指令,每条指令格式为以下两种之一:1、M i j,表示让第i号战舰所在列的全部战舰保持原有顺序,接在第j号战舰所在列的尾部。2、C i j,表示询问第i号战舰与第j号战舰当前是否处于同一列中,如果在同一列中,它们之间间隔了多少艘战舰。现在需要你编写一个程序,处...原创 2020-02-13 12:36:08 · 187 阅读 · 0 评论 -
奇偶游戏-并查集
小A和小B在玩一个游戏。首先,小A写了一个由0和1组成的序列S,长度为N。然后,小B向小A提出了M个问题。在每个问题中,小B指定两个数 l 和 r,小A回答 S[l~r] 中有奇数个1还是偶数个1。机智的小B发现小A有可能在撒谎。例如,小A曾经回答过 S[1~3] 中有奇数个1, S[4~6] 中有偶数个1,现在又回答 S[1~6] 中有偶数个1,显然这是自相矛盾的。请你帮助小B检查这...原创 2020-02-12 23:28:05 · 285 阅读 · 0 评论 -
程序自动分析-并查集
在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。考虑一个约束满足问题的简化版本:假设x1,x2,x3,…x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xjxi=xj或xi≠xjxi≠xj的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件同时被满足。例如,一个问题中的约束条件为:x1=x2,x2=x3,x3=x4,x...原创 2020-02-12 17:01:00 · 243 阅读 · 0 评论 -
搭配购买
Joe觉得云朵很美,决定去山上的商店买一些云朵。商店里有 nn朵云,云朵被编号为 1,2,…,n1,2,…,n,并且每朵云都有一个价值。但是商店老板跟他说,一些云朵要搭配来买才好,所以买一朵云则与这朵云有搭配的云都要买。但是Joe的钱有限,所以他希望买的价值越多越好。输入格式第 11行包含三个整数 n,m,wn,m,w,表示有 nn朵云,mm个搭配,Joe有 ww的钱。第 2∼n+1...原创 2020-02-12 16:00:45 · 190 阅读 · 0 评论