首页 > Equivalent Prefixes
头像 Keven·
发表于 2019-07-19 17:54:57
笛卡尔树 题意,如果两个序列中所有子区间的最小值的下标都相等的话,我们就认为他们是这两个序列是相等的。 给你两个长度为 的序列,找到最大下标 使得两个序列的 区间相等。 1、首先考虑二分,那么我们如何判断这个区间是否相等? 2、线段树 or RMQ 找区间最小值,判断 展开全文
头像 firevolt
发表于 2019-07-20 00:12:50
Two arrays u and v each with m distinct elements are called equivalent if and only if RMQ(u,l,r)=RMQ(v,l,r)RMQ(u,l,r)=RMQ(v,l,r) for all 1≤l≤r≤m1≤l≤r≤ 展开全文
头像 Pikachu_杨京
发表于 2019-07-19 17:56:28
Equivalent Prefixes 题意:给你两个数组a,b,大小为n,让你寻找一个数p (1<= p <= n) ,使之在 1~p 任意一个区间中a,b数组的最小值下标相同。 笛卡尔树: 概念 笛卡尔树的树根是这一子树中键值最小(或最大)的元素;且对于某个序 展开全文
头像 断腿三郎
发表于 2019-07-19 18:27:46
链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 Two arrays u and v each with m distinct elements are called equivalent if and only if RMQ(u,l,r)=RM 展开全文
头像 ChordXD
发表于 2019-07-19 18:33:08
题目连接:https://ac.nowcoder.com/acm/contest/881/A 题意 对于两个数组区间l,r ,rmq相等的定义是:对于l,r内任意子区间rmq值的对应数组下标都相等(即任意子区间的最小值对应的下标都相等),那么这两个数组的l,r区间RMQ相等。 现在问你给你两个序列, 展开全文
头像 秋黄
发表于 2019-07-19 20:00:32
方法:找每个点的左边的比它小的数的所在的位置,然后如果两点的左边比它小的数的位置不同,那么肯定这一位就不能取了。 证明:本质来说这道题目也许似乎可能找到规律就好了,因为在[1,p]的这个区域里面去找任意值的话,其实只要找到前面的一个状态就好了,比如说找【l,r】这个区域是否相等,就只要找到a, 展开全文
头像 渣渣兔
发表于 2019-07-18 20:41:30
今天是打牛客的第一天,也是自己大一的第一次,自己很菜,签到要签很久,但是也在一步步进步,跟随大佬的脚步,只愿我归来仍是少年。 题目: 有两个分数,比较两个的大小,用到大数,自己是第一次,加油吧 AC的大佬代码: #include <bits/stdc++.h> using name 展开全文
头像 Anci
发表于 2019-07-19 18:21:23
笛卡尔树是一种特定的二叉树数据结构,可由数列构造,在范围最值查询、范围top k查询(range top k queries)等问题上有广泛应用。 它具有堆的有序性,中序遍历可以输出原数列。笛卡尔树结构由Vuillmin(1980)在解决范围搜索的几何数据结构问题时提出。从数列中构造 一棵笛卡尔树可 展开全文
头像 Yvonne_sq
发表于 2019-07-23 11:08:39
这道题的含义就是在两个数组中,区间相同时最小的元素的位置是相同的,我们这道题用单调递增栈做,保证在栈中元素是单调递增的, 用一个整型变量k来记录,k的初始值是1(因为第一个元素是提前入栈的,当栈中只有一个元素时,k为1),最后输出k,当栈中的元素个数 是相同的时候,k就加一,当不相同的时 展开全文
头像 樱落乐章
发表于 2019-07-19 17:12:35
大致题意就是给你两个数组,长度为n,要求两个数组分别从头开始取连续的k个,并且对于任意的1<=l<=r<=k,l到r之间的最小值位置相等。 假设我们尝试插入的数位x,那么对于一个区间[l,r],如果存在一个数小于x,显然最小值的位置是不会被影响的。 那么我们假设小于x的数中下标 展开全文