String 在多个查询中按字典顺序比较字符串

String 在多个查询中按字典顺序比较字符串,string,algorithm,data-structures,String,Algorithm,Data Structures,将两个数字以字符串形式按字典顺序进行多次比较 我尝试的 问题是直截了当的,在更改后比较字符串,但由于多次查询,我得到了超出时间限制的错误 我在互联网上搜索,偶然发现了段树来解决范围查询。但是,唉,我无法想象它在这里有什么帮助 任何提示都将不胜感激。对于这个问题,分段树似乎有点过头了。B什么时候会比A大?当处于索引i时,A[i]=0,B[i]=1和A[0:i]=B[0:i]。同时迭代两个字符串,并将所有不同的索引保存在一个集合中 对于索引i处的每个查询,将B更新为1。然后检查B[i]=A[i]。如

将两个数字以字符串形式按字典顺序进行多次比较

我尝试的

问题是直截了当的,在更改后比较字符串,但由于多次查询,我得到了超出时间限制的错误

我在互联网上搜索,偶然发现了段树来解决范围查询。但是,唉,我无法想象它在这里有什么帮助


任何提示都将不胜感激。

对于这个问题,分段树似乎有点过头了。B什么时候会比A大?当处于索引i时,A[i]=0,B[i]=1和A[0:i]=B[0:i]。同时迭代两个字符串,并将所有不同的索引保存在一个集合中

对于索引i处的每个查询,将B更新为1。然后检查B[i]=A[i]。如果它们相等,则从索引集中删除i。否则,将其添加到集合中。如果集合中没有剩余索引,A和B现在相等=>回答是

如果至少有1个元素,则获取最低索引。如果该索引为j,则表示A[0:j]=B[0:j],但A[j]!=B[j]。所以A是0,B是1,或者A是1,B是0。根据这一点,回答是或否


这一问题的复杂性为
O(qlogn)
,对于这个问题来说,查询的数量似乎太多了。B什么时候会比A大?当处于索引i时,A[i]=0,B[i]=1和A[0:i]=B[0:i]。同时迭代两个字符串,并将所有不同的索引保存在一个集合中

对于索引i处的每个查询,将B更新为1。然后检查B[i]=A[i]。如果它们相等,则从索引集中删除i。否则,将其添加到集合中。如果集合中没有剩余索引,A和B现在相等=>回答是

如果至少有1个元素,则获取最低索引。如果该索引为j,则表示A[0:j]=B[0:j],但A[j]!=B[j]。所以A是0,B是1,或者A是1,B是0。根据这一点,回答是或否


它的复杂度为O(Q log N),即Q查询量

理论上,可以使用van Emde-Boas树将复杂度降低为O(Q log N)。实际上,常数很重要。@DavidEisenstat有趣的结构,不知道它。这可能是值得的,因为这是一个真正的问题,而不是一个在线问题。理论上,可以使用vanemde-Boas树将复杂性降低到O(qlogn)。实际上,常数很重要。@DavidEisenstat有趣的结构,不知道它。也许值得,但这是一个真正的问题,而不是一个在线问题