Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 解决这个问题的最佳方法是什么?_Algorithm_Data Structures_Segment Tree_Fenwick Tree - Fatal编程技术网

Algorithm 解决这个问题的最佳方法是什么?

Algorithm 解决这个问题的最佳方法是什么?,algorithm,data-structures,segment-tree,fenwick-tree,Algorithm,Data Structures,Segment Tree,Fenwick Tree,我在一次在线编码竞赛中看到了这个编码问题,但我找不到最佳解决方案。 问题是: 将为您提供一个由N个整数和Q个查询组成的数组A。每个查询的类型如下: 1 pos val:将索引pos处的元素更新为val 2 pos:找到小于或等于pos的最小索引i,以便i和pos之间的所有元素都相同 我相信我们可以使用段树,但我无法计算段树的每个索引将代表什么。以下是关于+Q log^2 N的方法: 为给定数组构建段树 在每个段树节点中存储最小间隔数和最大间隔数 现在,类型1的查询可以通过简单地更新Segment

我在一次在线编码竞赛中看到了这个编码问题,但我找不到最佳解决方案。 问题是: 将为您提供一个由N个整数和Q个查询组成的数组A。每个查询的类型如下: 1 pos val:将索引pos处的元素更新为val 2 pos:找到小于或等于pos的最小索引i,以便i和pos之间的所有元素都相同


我相信我们可以使用段树,但我无法计算段树的每个索引将代表什么。

以下是关于+Q log^2 N的方法:

为给定数组构建段树 在每个段树节点中存储最小间隔数和最大间隔数 现在,类型1的查询可以通过简单地更新SegmentTree来完成 对于类型2的查询,我们可以使用二进制搜索来查找最小的i,以便范围[i,pos]中的最小值等于相同范围中的最大值
有没有比大多数人更好的方法?