如果我想执行从索引0到索引T的添加查询。我有二进制值T.所以对于例如我有0111010
,所以在删除最右边后变为01110
位。取0为左,1为右。每当我向右移动时,我都会添加元素,最后在索引T处添加元素。这是否意味着每当遇到1时我都会访问BIT []数组,或者有不同的方式?
答案 0 :(得分:0)
看,我知道这个问题的来源。它是十分长的codechef。请不要在现场比赛中提问。
答案 1 :(得分:0)
嗯,我知道你会对正确的逻辑感到绝望。我很努力地解决了这个问题,经过多次尝试我得到了一个AC(多么感觉!)。不要考虑有关fenwick树的任何内容,而是为给定的计算编写模拟。
Fdown(i) = (i & (i + 1))
在循环中执行,例如
cout<<"\n\nEnter L : ";
cin>>l;
while(l > -1)
{
cout<<bitset<32>(l)<<"\n";
l = (l & (l+1))-1;
}
以小数形式输入L. 您将开始看到您必须找到的内容。 (不要考虑关于BIT的任何其他事项。)