摘要:
传送门 ~~没学过线段树二分,也不知道这个东西算不算线段树二分,感觉蛮像的。~~ 大致题意: ** T组测试数据,每组第一行给出n,m,k三个数字。第二行输入大小为n的排列。第三行输入大小为m的一行数字,第四行输入k个数字。要求每次从n里面选择一段连续的区间,删去最大值,从而把第二行变成第三行。第四 阅读全文
摘要:
传送门 解答方法: 大致思路: ** 我们知道dfs序上的整颗子树dfs序编号连续,因为每次删除一个点或者新增一个点都导致子树上所有点的深度加一或者减一。由于是区间修改所以我们考虑dfs序上建线段树。** ** 我们会发现直接建树后面插入边的时候很难处理,所以我们直接把所有的边加进来再进行dfs序处 阅读全文
摘要:
传送门 大致题意: ** 给定三个整数n, k, m分别表示给出n个点,k个路径,和进行m次操作。紧接着读入n-1条边把n个点连成树,在读入k条路径a, b, v,表示从点a到点b有一个权值为v的路径。紧接着读入m个操作,读入op,若op为0则删除k个路径中权值最小的路径,若op为1则在读入一个整数 阅读全文
摘要:
传送门 每个点若是能造成贡献,必然是从当前节点开始往后走的唯一最小值,所以考虑离线倒着做,吉司机线段树维护时间,取min成功就加1。 #include <iostream> #include <cstring> #include <iomanip> #include <algorithm> #inc 阅读全文
摘要:
传送门 大佬题解传送门 这篇博客很详细,但是大佬没在代码里面标明每一步的含义,我稍微写下注释。 还是想证明一下为什么要维护四个变量0.0(主要是证明为什么不写四个会出错) 不得不先证明为什么要维护加法懒标记出现的最大值。我们先不管那个最大和非最大。 ** 假设我们的根节点u维护的区间是[1, 6], 阅读全文
摘要:
** 黑暗爆炸OJ** ** NodeOJ** ** 题解还是这篇博客。PS:现在不挂梯子好像上不去了。** ** 由于这篇博客只是讲的比较详细但是没有代码。贴一贴代码并且稍微讲讲每个函数的作用。** ** 这题和上一题相比不仅需要支持区间取min,还需要支持区间取max。所以我们像维护区间取min 阅读全文
摘要:
传送门 ** 详细的解读看这篇博客,因为他没贴代码,所以我贴一下代码并且说一下题目会卡啥。** ** 这题时间卡的非常死,我在网络上找了四篇博客,只有一篇可以AC,其余三篇全都TLE。** ** 首先就是读入,如果用IO优化的cin是会T掉的,我这边用的是一个快读的板子,有些人scanf和print 阅读全文
摘要:
传送门 ** 因为我们发现询问的时候只对于大于差值的分数有效,所以我们可以先对读入的信息按照分数大小进行排序。做完之后如何查找题目要求的信息呢,我们考虑线段树维护区间返回最需要的信息。最主要的就是pushup写的时候注意一点怎么维护就行了。然后记得把排完序的横坐标丢进一个数组里面然后每次找大于等于差 阅读全文
摘要:
传送门 题目大意 ** 有T组测试数据,对于每组测试时局有一个n和m,n表示初始拥有的字符串数量,m表示操作数量。紧接着输入n个字符串,再读入m行操作,每行以x str的形式给出,如果x为1则是往所拥有的字符串内插入str,若x为2则是查询当前字符串包括了多少完整的字符串(重复出现也算)。** ** 阅读全文
摘要:
传送门 题目大意: ** 给出两个字符串S和T,求出两个字符串之间有多少长度大于K的公共子区间。** ** 由于每一个子串都是包含在某一个后缀的前缀里面,求出sa和height了之后,我们可以将height进行分组,height < k为分割线,这样一来每个组内都是height >= k的后缀。我们 阅读全文