摘要:
题目大意:在一个环形上有n棵树,其中我们要在一段可行弧上找一个最大运动距离。运动距离是这样算的,我们在可行弧上找任意两棵不同的树,然后运动距离为两棵树的高和他们的距离。 解:裸线段树,可以观察运动距离等于 dist[j] - dist[i] + h[i] + h[j], 有max((dist[j] 阅读全文
摘要:
颓颓颓 题目大意:给你m个区间询问,询问区间内有多少个不相同的数以及存不存在一种数字组成的数列为等差间隔的数列。 解:离线询问,不相同的数其实是老做法了,但是巧妙的是数字是否为等差间隔。我们把询问按右区间排序,可知等差间隔必然是连续的一段,那么从当前枚举点往左,合法数列必然是连续的一段,那么我们用树 阅读全文
摘要:
题目大意:有n个操作,要么在平面上增删一个点,要么询问某个坐标右上侧(严格大于等于)第一个点是谁(x相同取y最小)。 解:非常智障看错题了,没看到要在右上,所以写了个树套set,发现看错题嘀咕了一下艹这询问set搞不来,想了一下似乎kd-tree可以做,就写了棵,常数卡得很死过了。后来看题解还真是树 阅读全文
摘要:
这道题真是太伤节奏了,做完之后好几天没动弹了。 题目大意:给你两个数组a、b,a长b短,对于以a每个位置开头与b等长的连续子序列,我们询问是否有这样一个匹配方式让子序列每个数和b中每个数一一对应相加且和大于给定的常数h。 解:没有想明白,去看官解没弄懂出题人是怎么分块瞎搞的。搜了一下题解,发现有一个 阅读全文
摘要:
维护逆序对的树状数组瓜题,就不报告了(手抖强行wa两发) 1 #include <cstdio> 2 #include <string> 3 #include <iostream> 4 #include <algorithm> 5 #include <cmath> 6 #include <cstri 阅读全文
摘要:
题目大意:给你两个长度相同的排列,把他们的ord(就是是到底是所有排列当中字典序第几)求和取模,再逆转求出对应的排列。 解:对于一个ord,很直观的从计算上可以看出一个表示方法 A(n-1)! + B(n-2)! + ..... + Z0!,然后在这种表示法下合并,然后进位,最后再最高位把系数模一下 阅读全文
摘要:
题目大意:给你a,b两个数组,两个操作,一个是把a里连续的一段复制到b中,另一个是单点查询b。 解:可以看到其实a是不修改的,本质我们要维护b到a的一个映射,而赋值又是连续的,所以本质又是维护公差1的等差序列,那么这个等差序列只要一个首项就能表达他自己的性质。所以我们每个线段存一个首项,lazyta 阅读全文
摘要:
啊回家真是颓,一周了什么都没做 题目大意:给出一坨数,每次询问区间当中有多少个数能把其他区间内的所有数整除 解:由于我是知道这个是线段树专题,所以一开始就奔着gcd去了,想了一下还真是gcd,因为如果一个数a能整除另一个数b,那么gcd(a,b)一定为a,所以这说明可以做区间加法,直接上线段树就是, 阅读全文
摘要:
cnm毛子的题是正宗内家拳法啊orz(捶地),拼的就是智商,这题我们队想了老半天后缀自动机,掏出各种黑科技无果 题目大意:构建一个自动机可以表达给定的n个串,询问最小的自动机节点树为多少。 解:最裸的自动机其实就是一棵trie,那么我们考虑优化这棵trie,考虑拓扑排序倒过来做,可以发现其实如果两个 阅读全文
摘要:
题目大意:给你一些笔画(笔画顺序打乱),让你判断两个字是不是相等的。 解:建议如果没看题的去读一读题,两个笔画相等的判断只在于两点之间的相对关系(9个方向)以及笔画的方向(8个),所以我们对每一个笔画根据他的方向压一个hash值(hash掉这个笔画两个点对于所有其他点的方向)。其实判笔画本质是一个图 阅读全文