You are on page 1of 4

ngnhp|ngk

TRANGCH

BITP

KTHI

HI&P

BNGCHMBI

BIVIT

CHATBOX
Nhptkha...

Binary Indexed Tree BIT


admin26/02/2015
unmxhng,adhngdncchgiimtsbitpvBinaryIndexedTreeBIT(biDy nghch
thvbiDanhc3).BITlcycbiudinbngmngcdngnhsau:

Tng qut, t m = 2k.p (vi p l s l). Hay ni cch khc, k l v tr ca bt 1 bn phi nht ca m.
TrongcyBIT,ntcshiumslntgccamtcycongm2kntcshiutm2k+1nm.
Vd:
8=23.1,vy8lntgccaccnt1,2,3,,8.
12=22.3,vy12lntgccaccnt9,10,11,12
10=21.5,vy10lntgccaccnt9,10.
7=20.7,vy7lntgccachnt7.
16=24.1,vy16lntgccaccnt1,2,3,,16.
TrongcyBIT,ntgcidinchottcccntconcan.nghacatidinythngdng
l nt gc lu tng gi tr ca cc nt con. V vy khi tnh ton, ta ch cn truy xut nt gc l m
khngcnthitphitruyxutnccntcon.Xtvd:
Chomnggmnphnta1,a2,,an.HytnhtngAm=a1+a2++am(mn).
Thay v s dng vng lp t 1 n m truy xut tng phn t ai mt ( phc tp O(m)), ta s dng
cutrcBITnhsau:
t1=a1
t2=a1+a2
t3=a3
t4=a1+a2+a3+a4
t5=a5
t6=a5+a6

t7=a7
t8=a1+a2+a3+a4+a5+a6+a7+a8

t12=a9+a10+a11+a12
...(tiptcnhvytheocchxydngcyBIT)

*tnhA15(m=15),thayvphiduytta1na15,tachcntnht8+t12+t14+t15.
*tnhA10,chcntnht8+t10
*tnhA13,chcntnht8+t12+t13
*tnhA16,lyngaygitrt16
Tngqutvimbtk,biudinmthnhdngnhphn,saulnltxaccbt1camtheoth
ttphisangtri,timibctrunggianchnhlchsntcntruyxuttrongcyBIT.
Vd,m=13cbiudinnhphnl1101:
1)1101>truyxutnt13
2)Xabt1bnphinhtcn1100>truyxutnt12
3)Xabt1bnphinhtcn1000>truyxutnt8
4)Xabt1bnphinhtvdng.
ThaotctruyxutccntnhtrncgilgetBIT.Maymnltacmtcngthcrtngin
xabt1bnphidngphptonAND.ThtcgetBITnhsau:

intgetBIT(intm)
{
intresult=0
for(m>0m&=m1)
{
result+=t[m]
}
returnresult
}
phctpcagetBITlO(log2m)
Vn cn li l lm th no xy dng c cy BIT nh trn? Cch thc hin l ban u khi to
ccntcacyBITl0.Saungvimigitramthcpnhtccntchalinquantrongcy.V
d:
Cpnhtgitra5>cncpnhtccntt5,ntchat6,ntchat8,ntchat16,.
Cpnhtgitra9>cncpnhtccntt9,ntchat10,ntchat12,ntchat16,
Cpnhtgitra4>cncpnhtccntt4,ntchat8,ntchat16,
Tngqutvimbtk,biudinmthnhdngnhphn,nucng1vobtbnphinhtcamthta
cntchacam.
Vd,m=5cbiudinnhphnl101:
1)101>cpnhtnt5
2)Cng1vobtphinhtthnh0110>cpnhtnt6
3)Cng1vobtphinhtthnh1000>cpnhtnt8
4)Cng1vobtphinhtthnh10000>cpnhtnt16.
ThaotccpnhtccnttconnchanhtrncgilupdateBIT.Tacngcmtcngthcrt
ngincng1vobt1bnphinhtdngphptonAND.ThtcupdateBITnhsau:

voidupdateBIT(intm,intvalue)
{
for(m<=nm+=m&m)
{
t[m]+=value
}

}
}
phctpcaupdateBITlO(log2n)
Trn y l l thuyt v Binary Indexed Tree. By gi ta s p dng BIT gii bi Dy nghch th v
Danhc3.

Dynghchth:(Theocchvtcnthcnxtttccccp,phctplO(n2))
Phcthothutton:
Dngmtmngmt[100.000],t[u]chobithingicbaonhiusnhhnu.
utinkhitoccphntmngtl0.
Duyttcuimnglnumng(itn>1),ngvimiaithchinhaithaotc:
1)Kimtraxemhingicbaonhiusnhhnai(truyxutt[ai]).
2)Cpnhtaivomngt,nghaltngccphnttt[ai+1]nt[100.000],miphntthm1.
Tuy nhin trong thao tc 2 vic cp nht nh vy tng th phc tp vn l O(n2). By gi ta s
chuynmngtthnhcutrcBIT.ivithaotc1dnggetBIT,ivithaotc2dngupdateBIT.
Chngtrnhhonchnh

cin>>n
for(i=1i<=ni++)cin>>a[i]
kq=0
for(i=ni>=1i)
{
kq+=getBIT(a[i])
updateBIT(a[i]+1,1)
}
cout<<kq
phctplO(nlog2n)

anhc3:
utinspccdavo1mngtheothttdilntrn,vdvin=6.

Saukhirta5va2:

Bygirta4,anyangvtr3(khiuu)vstvovtr9(khiuv).Nhvynubit
ccbaonhius0nmgivtr3vvtr9thtasmcsanmtrna4.thchin
cviphctpO(nlog2n)cndngcutrcBITmslngs0.

p=getBIT(u)//slngs0t1nu
q=getBIT(v)//slngs0t1nv
updateBIT(u,1)//cpnhtlivtrvartthm1s0
CCPHNHI
nxphuc 26/02/1519:26
DISC3echiupdatengc:)

Algo 16/06/1511:50

Advittipvcccutrcdliucbitkhci.

votinh 10/08/1523:44
adchoemhilsaomilnduytquaphnta[i]thliphiupdatelivy.
==>adgipemlmsngtciupdateckhng
(ngnhpgiphnhi)

Bitpmi
CNTPALINmsPalindrome
EZ1EZAF1
CPASSMtkhumytnh
OVBngvung
HCHnc
DIFFERENCEDIFFERENCE
TRANSINFOTruynthngtin
CALNUMms
CALTEAMTnhslngteam
MAXXORGitrlnnht

Codertchcc
MTAZero398bi
kieuquocdat123364bi
phuleethanh346bi
dqhungdl326bi
farmerboy325bi
middlest317bi
hanhlv270597315bi
nghethuat102313bi
TQT303bi
romqn1999292bi

KHOACNGNGHTHNGTINTRNGIHCNHATRANG
Website:http://ntu.edu.vn/kcntt

xemthm...

You might also like