开发者

Brackets matching using BIT

开发者 https://www.devze.com 2022-12-21 06:11 出处:网络
edit: I was trying to solve a spoj problem. Here is the link to the problem : http://spoj.pl/problems/BRCKTS

edit: I was trying to solve a spoj problem. Here is the link to the problem : http://spoj.pl/problems/BRCKTS

I can think of two possible data structures for solving the problem one using segment tree and the other using a BIT. I have already implemented the solution using a segment tree. I have read about BIT but i can't figure out how to do a particular thing with it(which i have mentioned below)


I am trying to check if brackets are balanced in a given string containing only ('s or )'s. I am using a BIT(Binary indexed tree) for solving the problem. The procedure i am following is as follows:

I am taking an array of size equal to the number of characters in the string. I am assigning -1 for ) and 1 for ( to the cor开发者_开发技巧responding array elements.

Brackets are balanced in the string only if the following two conditions are true.

  • The cumulative sum of the whole array is zero.
  • Minimum cumulative sum is non negative. i.e the minimum of cumulative sums of all the prefixes of the array is non-negative.

Checking condition 1 using a BIT is trivial. I am facing problem in checking condition 2.


Here is a very good tutorial on Binary Indexed trees: http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=binaryIndexedTrees and here is one that's more direct but less comprehensive: http://programmersdream.com/data-structure/binary-indexed-tree/

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号