ACM大牛總結(jié)的線段樹專輯,超經(jīng)典的_第1頁(yè)
ACM大??偨Y(jié)的線段樹專輯,超經(jīng)典的_第2頁(yè)
ACM大??偨Y(jié)的線段樹專輯,超經(jīng)典的_第3頁(yè)
ACM大牛總結(jié)的線段樹專輯,超經(jīng)典的_第4頁(yè)
ACM大??偨Y(jié)的線段樹專輯,超經(jīng)典的_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、完全版】線段樹很早前寫的那篇線段樹專輯至今一直是本博客閱讀點(diǎn)擊量最大的一片文章,當(dāng)時(shí)覺(jué)得挺自豪的,還去pku打廣告,但是現(xiàn)在我自己都不太好意思去看那篇文章了,覺(jué)得當(dāng)時(shí)的代碼風(fēng)格實(shí)在是太丑了,很多線段樹的初學(xué)者可能就是看著這篇文章來(lái)練習(xí)的,如果不小心被我培養(yǎng)出了這么糟糕的風(fēng)格,實(shí)在是過(guò)意不去,正好過(guò)幾天又要給集訓(xùn)隊(duì)講解線段樹,所以決定把這些題目重新寫一遍,順便把近年我接觸到的一些新題更新上去并且學(xué)習(xí)了splay等更高級(jí)的數(shù)據(jù)結(jié)構(gòu)后對(duì)線段樹的體會(huì)有更深了一層,線段樹的寫法也就比以前飄逸,簡(jiǎn)潔且方便多了.在代碼前先介紹一些我的線段樹風(fēng)格:maxn是題目給的最大區(qū)間,而節(jié)點(diǎn)數(shù)要開4倍,確切的來(lái)說(shuō)節(jié)點(diǎn)數(shù)

2、要開大于maxn的最小2x的兩倍Ison和rson分辨表示結(jié)點(diǎn)的左兒子和右兒子,由于每次傳參數(shù)的時(shí)候都固定是這幾個(gè)變量,所以可以用預(yù)定于比較方便的表示以前的寫法是另外開兩個(gè)個(gè)數(shù)組記錄每個(gè)結(jié)點(diǎn)所表示的區(qū)間,其實(shí)這個(gè)區(qū)間不必保存,一邊算一邊傳下去就行,只需要寫函數(shù)的時(shí)候多兩個(gè)參數(shù),結(jié)合Ison和rson的預(yù)定義可以很方便PushUP(intrt)是把當(dāng)前結(jié)點(diǎn)的信息更新到父結(jié)點(diǎn)PushDown(intrt)是把當(dāng)前結(jié)點(diǎn)的信息更新給兒子結(jié)點(diǎn)rt表示當(dāng)前子樹的根(root),也就是當(dāng)前所在的結(jié)點(diǎn)整理這些題目后我覺(jué)得線段樹的題目整體上可以分成以下四個(gè)部分:單點(diǎn)更新最最基礎(chǔ)的線段樹,只更新葉子節(jié)點(diǎn),然后把信

3、息用PushUP(intr)這個(gè)函數(shù)更新上來(lái)ohdu1166敵兵布陣題意:0(-1)思路:0(-1)線段樹功能:update:單點(diǎn)增減query:區(qū)間求和?ViewCodeCPP#incIude2#defineIsonI,m,rt1#definersonm+1,r,rt1|1constintmaxn=55555;intsummaxn2;voidPushUP(intrt)sumrt=sumrt1+sumrt1;build(lson);build(rson);PushUP(rt);voidupdate(intp,intadd,intl,intr,intrt)if(l=r)sumrt+=add;re

4、turn;intm=(l+r)1;if(p=m)update(p,add,lson);elseupdate(p,add,rson);PushUP(rt);intquery(intL,intR,intl,intr,intrt)if(L=l&r1;intret=0;if(Lm)ret+=query(L,R,rson);returnret;intmain()intT,n;scanf(%d,&T);for(intcas=1;cas=T;cas+)printf(Case%d:n,cas);scanf(%d,&n);build(1,n,1);charop10;while(scanf(%s,op)if(op

5、0=E)break;inta,b;scanf(%d%d,&a,&b);if(op0=Q)printf(%dn,query(a,b,1,n,1);elseif(op0=S)update(a,-b,1,n,1);elseupdate(a,b,1,n,1);1415161718192021222324252627282930313233343536373839404142434445464748495051525354555657return0;58581234567891011121314151617181920212223242526272829303132333435363738ohdu175

6、4IHateIt題意:0(-1)思路:0(-1)線段樹功能:update:單點(diǎn)替換query:區(qū)間最值?ViewCodeCPP#include#includeusingnamespacestd;#definelsonl,m,rt1#definersonm+1,r,rt1|1constintmaxn=222222;intMAXmaxn2;voidPushUP(intrt)MAXrt=max(MAXrt1,MAXrt1;build(lson);build(rson);PushUP(rt);voidupdate(intp,intsc,intl,intr,intrt)if(l=r)MAXrt=sc;r

7、eturn;intm=(l+r)1;if(p=m)update(p,sc,lson);elseupdate(p,sc,rson);PushUP(rt);intquery(intL,intR,intl,intr,intrt)if(L=l&r1;lson);intret=0;if(Lm)ret=max(ret,query(L,R,rson);40returnret;4142intmain()43intn,m;44while(scanf(%d%d,&n,&m)45build(1,n,1);46while(m-)47charop2;48inta,b;49scanf(%s%d%d,op,&a,&b);5

8、0if(op0=Q)printf(%dn,query(a,b,1,n,1);51elseupdate(a,b,1,n,1);525354return0;55ohdu1394MinimumInversionNumber題意:求Inversion后的最小逆序數(shù)思路:用0(nlogn)復(fù)雜度求出最初逆序數(shù)后,就可以用0(1)的復(fù)雜度分別遞推出其他解線段樹功能:update:單點(diǎn)增減query:區(qū)間求和?ViewCodeCPP#include#includeusingnamespacestd;4#definelsonl,m,rt1#definersonm+1,r,rt1|1constintmaxn=5

9、555;intsummaxn2;voidPushUP(intrt)10sumrt=sumrt1+sumrt1;build(lson);17build(rson);18voidupdate(intp,intl,intr,intrt)if(l=r)return;intm=(l+r)1;if(p=m)update(p,lson);elseupdate(p,rson);PushUP(rt);query(intL,intR,intl,intr,intrt)if(L=l&r1;intret=0;if(Lm)ret+=query(L,R,rson);returnret;xmaxn;main()intn;wh

10、ile(scanf(%d,&n)build(0,n-1,1);intsum=0;for(inti=0;in;i+)scanf(%d,&xi);sum+=query(xi,n-1,0,n-1,1);update(xi,0,n-1,1);intret=sum;for(inti=0;in;i+)sum+=n-xi-xi-1;ret=min(ret,sum);printf(%dn,ret);return0;ohdu2795Billboard題意:h*w的木板,放進(jìn)一些1*L的物品,求每次放空間能容納且最上邊的位子思路:每次找到最大值的位子,然后減去L線段樹功能:query:區(qū)間求最大值的位子(直接把u

11、pdate的操作在query里做了)?ViewCodeCPP1#include2223242526272829int30313233343536373839int40int4142434445464748495051525354555657582#include1);21sumrt+;3456789101112131415161718192021222324252627282930313233343536373839404142usingnamespacestd;#definelsonl,m,rt1#definersonm+1,r,rt1|1constintmaxn=222222;inth,w

12、,n;intMAXmaxn2;voidPushUP(intrt)MAXrt=max(MAXrt1,MAXrt1;build(lson);build(rson);intquery(intx,intl,intr,intrt)if(l=r)MAXrt-=x;returnl;,rson);intm=(l+r)1;intret=(MAXrt=x)?query(x,lson):query(xPushUP(rt);returnret;intmain()while(scanf(%d%d%d,&h,&w,&n)if(hn)h=n;build(1,h,1);while(n-)intx;scanf(%d,&x);i

13、f(MAX1x)puts(-1);elseprintf(%dn,query(x,1,h,return0;練習(xí):poj2828BuyTicketspoj2886WhoGetstheMostCandies?1);21sumrt+;成段更新(通常這對(duì)初學(xué)者來(lái)說(shuō)是一道坎),需要用到延遲標(biāo)記(或者說(shuō)懶惰標(biāo)記),簡(jiǎn)單來(lái)說(shuō)就是每次更新的時(shí)候不要更新到底,用延遲標(biāo)記使得更新延遲到下次需要更新or詢問(wèn)到的時(shí)候ohdu1698JustaHook題意:0(-1)思路:0(-1)線段樹功能:update:成段替換(由于只query次總區(qū)間,所以可以直接輸出1結(jié)點(diǎn)的信息)?ViewCodeCPP1#include2#i

14、nclude3usingnamespacestd;45#definelsonl,m,rt16#definersonm+1,r,rt1|17constintmaxn=111111;8inth,w,n;9intcolmaxn2;10intsummaxn2;11voidPushUp(intrt)12sumrt=sumrt1+sumrt1|1;1314voidPushDown(intrt,intm)15if(colrt)16colrt1=colrt1|1=colrt17sumrt1)*colrt;18sumrt1)*colrt;19colrt=0;202122voidbuild(intl,intr,i

15、ntrt)23colrt=0;24sumrt=1;25if(l=r)return;26intm=(l+r)1;27build(lson);28build(rson);29PushUp(rt);3031voidupdate(intL,intR,intc,intl,intr,intrt)32if(L=l&r1;39if(Lm)update(L,R,c,rson);PushUp(rt);4243intmain()1113141617111314161721sumrt+;444546474849505152intT,n,m;scanf(%d,&T);for(intcas=1;cas=T;cas+)sc

16、anf(%d%d,&n,&m);build(1,n,1);while(m-)inta,b,c;scanf(%d%d%d,&a,&b,&c);update(a,b,c,1,n,1);5354printf(Case%d:Thetotalvalueofthehookis%d.n,cassum1);5556return0;57opoj3468ASimpleProblemwithIntegers題意:0(-1)思路:0(-1)線段樹功能:update:成段增減query:區(qū)間求和?ViewCodeCPP#include#includeusingnamespacestd;4#definelsonl,m,r

17、t1#definersonm+1,r,rt1|1#defineLLlonglongconstintmaxn=111111;10LLaddmaxn2;LLsummaxn2;voidPushUp(intrt)12sumrt=sumrt1+sumrt1|1;15voidPushDown(intrt,intm)if(addrt)1113141617111314161721sumrt+;addrt1+=addrt;addrt1);1);21sumrt+;18sumrt19sumrt120addrt=0;212223voidbuild(intl,intr,intrt)24addrt=0;25if(l=r)

18、26scanf(%lld,&sumrt);27return;2829intm=(l+r)1;30build(lson);31build(rson);32PushUp(rt);3334voidupdate(intL,intR,intc,intl,intr,intrt)35if(L=l&r1;42if(L=m)update(L,R,c,lson);43if(mR)update(L,R,c,rson);44PushUp(rt);4546LLquery(intL,intR,intl,intr,intrt)47if(L=l&r1;52LLret=0;53if(L=m)ret+=query(L,R,lso

19、n)54if(mR)ret+=query(L,R,rson);55returnret;5657intmain()58intN,Q;59scanf(%d%d,&N,&Q);60build(1,N,1);61while(Q-)13intcnt;13intcnt;62charop2;63inta,b,c;64scanf(%s,op);65if(op0=Q)66scanf(%d%d,&a,&b);67printf(%lldn,query(a,b,68else69scanf(%d%d%d,&a,&b,&c);70update(a,b,c,1,N717273return0;74poj2528Mayorsp

20、osterso1,N,1);,1);題意:在墻上貼海報(bào),海報(bào)可以互相覆蓋,問(wèn)最后可以看見(jiàn)幾張海報(bào)思路:這題數(shù)據(jù)范圍很大,直接搞超時(shí)+超內(nèi)存,需要離散化:離散化簡(jiǎn)單的來(lái)說(shuō)就是只取我們需要的值來(lái)用,比如說(shuō)區(qū)間1000,2000,1990,2012我們用不到卜,9991001,1991991,19992001,20112013,+這些值,所以我只需要1000,1990,2000,2012就夠了,將其分別映射到0,1,2,3,在于復(fù)雜度就大大的降下來(lái)了所以離散化要保存所有需要用到的值,排序后,分別映射到1n,這樣復(fù)雜度就會(huì)小很多很多而這題的難點(diǎn)在于每個(gè)數(shù)字其實(shí)表示的是一個(gè)單位長(zhǎng)度(并且一個(gè)點(diǎn)),這樣普

21、通的離散化會(huì)造成許多錯(cuò)誤(包括我以前的代碼,poj這題數(shù)據(jù)奇弱)給出下面兩個(gè)簡(jiǎn)單的例子應(yīng)該能體現(xiàn)普通離散化的缺陷:1-101-45-101-101-46-10為了解決這種缺陷,我們可以在排序后的數(shù)組上加些處理,比如說(shuō)1,2,6,10如果相鄰數(shù)字間距大于1的話,在其中加上任意一個(gè)數(shù)字,比如加成1,2,3,6,7,10,然后再做線段樹就好了.線段樹功能:update:成段替換query:簡(jiǎn)單hash?ViewCodeCPP#include#include#includeusingnamespacestd;#definelsonl,m,rt1#definersonm+1,r,rt1|17consti

22、ntmaxn=11111;boolhashmaxn;intlimaxn,rimaxn;intXmaxn*3;intcolmaxn4;1415voidPushDown(intrt)16if(colrt!=-1)17colrt1=colrt1|1=18colrt=-1;192021voidupdate(intL,intR,intc,intl,intr,intrt22if(L=l&r1;28if(L=m)update(L,R,c,lson29if(m1;39query(lson);40query(rson);4142intBin(intkey,intn,intX)43intl=0,r=n-1;44w

23、hile(l1;46if(Xm=key)returnm;47if(Xmkey)l=m+1;48elser=m-1;4950return-1;5152intmain()53intT,n;54scanf(%d,&T);55while(T-)56scanf(%d,&n);colrt;5757585960616263646566676869707172737475767778798081828384return0;intnn=0;for(inti=0;in;i+)scanf(%d%d,&lii,&rii);Xnn+=lii;Xnn+=rii;sort(X,X+nn);intm=1;for(inti=1

24、;i0;i-)if(Xi!=Xi-1+1)Xm+=Xi-1+1;sort(X,X+m);memset(col,-1,sizeof(col);for(inti=0;in;i+)intl=Bin(lii,m,X);intr=Bin(rii,m,X);update(l,r,i,0,m,1);cnt=0;memset(hash,false,sizeof(hash);query(0,m,1);printf(%dn,cnt);opoj3225HelpwithIntervals題意:區(qū)間操作,交,并,補(bǔ)等思路:我們一個(gè)一個(gè)操作來(lái)分析:(用0和1表示是否包含區(qū)間,-1表示該區(qū)間內(nèi)既有包含又有不包含)U:把區(qū)間

25、l,r覆蓋成1I:把卜,l)(r,覆蓋成0D:把區(qū)間l,r覆蓋成0C:把卜,l)(r,覆蓋成0,且l,r區(qū)間0/1互換S:l,r區(qū)間0/1互換成段覆蓋的操作很簡(jiǎn)單,比較特殊的就是區(qū)間0/1互換這個(gè)操作,我們可以稱之為異或操作很明顯我們可以知道這個(gè)性質(zhì):當(dāng)一個(gè)區(qū)間被覆蓋后,不管之前有沒(méi)有異或標(biāo)記都沒(méi)有意義了所以當(dāng)一個(gè)節(jié)點(diǎn)得到覆蓋標(biāo)記時(shí)把異或標(biāo)記清空123456789101112131415161718192021222324252627282930313233343536373839而當(dāng)一個(gè)節(jié)點(diǎn)得到異或標(biāo)記的時(shí)候,先判斷覆蓋標(biāo)記,如果是0或1,直接改變一下覆蓋標(biāo)記,不然的話改變異或標(biāo)記開區(qū)間閉區(qū)

26、間只要數(shù)字乘以2就可以處理(偶數(shù)表示端點(diǎn),奇數(shù)表示兩端點(diǎn)間的區(qū)間)線段樹功能:update:成段替換,區(qū)間異或query:簡(jiǎn)單hash?ViewCodeCPP#include#include#include#includeusingnamespacestd;#definelsonl,m,rt1#definersonm+1,r,rt1|1constintmaxn=131072;boolhashmaxn;intcovermaxn2;intXORmaxn2;voidFXOR(intrt)if(coverrt!=-1)coverrt人=1;elseX0Rrt人=1;voidPushDown(intrt

27、)coverrt;if(coverrt!=-1)coverrt1=coverrt1|1=XORrt1=XORrt1|1=0;coverrt=-1;if(XORrt)FXOR(rt1);FXOR(rt1|1);XORrt=0;voidupdate(charop,intL,intR,intl,intr,intrt)if(L=l&r1;if(L=m)update(op,L,R,lson);elseif(op=I|op=C)XORrt1=coverrt1=0;if(mR)update(op,L,R,rson);elseif(op=I|op=C)XORrt1|1=coverrt1|1=0;voidque

28、ry(intl,intr,intrt)if(coverrt=1)for(intit=l;it1;query(lson);query(rson);intmain()cover1=XOR1=0;charop,l,r;inta,b;while(scanf(%c%c%d,%d%cn,&op,&l,&a,&b,&r)a=1,bb)if(op=C|op=I)cover1=XOR1=0;elseupdate(op,a,b,0,maxn,1);query(0,maxn,1);boolflag=false;40414243444546474849505152535455565758596061626364656

29、66768697071727374757677787980818283ints=-1,e;for(inti=0;i1,92(e+1)1,e&1?):);93s=-1;94959697if(!flag)printf(emptyset);98puts();99return0;練習(xí):opoj1436HorizontallyVisibleSegmentsopoj2991CraneoAnotherLCISoBracketSequence區(qū)間合并這類題目會(huì)詢問(wèn)區(qū)間中滿足條件的連續(xù)最長(zhǎng)區(qū)間,所以PushUp的時(shí)候需要對(duì)左右兒子的區(qū)間進(jìn)行合并opoj3667Hotel題意:1a:詢問(wèn)是不是有連續(xù)長(zhǎng)度為a的空房

30、間,有的話住進(jìn)最左邊ab:將a,a+b-1的房間清空思路:記錄區(qū)間中最長(zhǎng)的空房間線段樹操作:update:區(qū)間替換query:詢問(wèn)滿足條件的最左斷點(diǎn)?ViewCodeCPP#include#include#include#includeusingnamespacestd;#definelsonl,m,rt1#definersonm+1,r,rt1|189constintmaxn=55555;intlsummaxn2,rsummaxn2,msummaxn2;intcovermaxn2;12131415161718192021222324252627282930313233343536373839

31、4041424344454647484950515253545556voidPushDown(intrt,intm)if(coverrt!=-1)coverrt1=coverrt1|1=coverrt;msumrt1=lsumrt1=rsumrt1);msumrt1|1=lsumrt1|1=rsumrt1);coverrt=-1;voidPushUp(intrt,intm)lsumrt=lsumrt1;rsumrt=rsumrt1)lsumrt+=lsumrt1)rsumrt+=rsumrt1;msumrt=max(lsumrt1|1+rsumrt1,max(msumrt1,msumrt1;b

32、uild(lson);build(rson);voidupdate(intL,intR,intc,intl,intr,intrt)if(L=l&r1;if(L=m)update(L,R,c,lson);if(m1;if(msumrt=w)returnquery(w,lson);elseif(rsumrt1+lsumrt=w)returnm-rsumrt1+1;57returnquery(w,rson);5859intmain()60intn,m;61scanf(%d%d,&n,&m);62build(1,n,1);63while(m-)64intop,a,b;65scanf(%d,&op);6

33、6if(op=1)67scanf(%d,&a);68if(msum1a)puts(0);69else70intp=query(a,1,n,1);71printf(%dn,p);72update(p,p+a-1,1,1,7374else75scanf(%d%d,&a,&b);76update(a,a+b-1,0,1,n,1);77,1);return0;練習(xí):ohdu3308LCISohdu3397Sequeneeoperationohdu2871MemoryControlohdu1540TunnelWarfareoCF46-DParkingLot掃描線這類題目需要將一些操作排序,然后從左到右用

34、一根掃描線(當(dāng)然是在我們腦子里)掃過(guò)去最典型的就是矩形面積并,周長(zhǎng)并等題ohdu1542Atlantis題意:矩形面積并思路:浮點(diǎn)數(shù)先要離散化;然后把矩形分成兩條邊,上邊和下邊,對(duì)橫軸建樹,然后從下到上掃描上去,用ent表示該區(qū)間下邊比上邊多幾個(gè)線段樹操作:update:區(qū)間增減query:直接取根節(jié)點(diǎn)的值?ViewCodeCPP#include#include#include#includeusingnamespacestd;#definelsonl,m,rt1#definersonm+1,r,rt1|1constintmaxn=2222;intcntmaxn2;doublesummaxn2

35、;doubleXmaxn;structSegdoubleh,l,r;ints;Seg()Seg(doublea,doubleb,doublec,intd):l(a),r(b),h(c),s(d)booloperator(constSeg&cmp)constreturnhcmp.h;ssmaxn;voidPushUp(intrt,intl,intr)if(cntrt)sumrt=Xr+1-Xl;elseif(l=r)sumrt=0;elsesumrt=sumrt1+sumrt1|1;voidupdate(intL,intR,intc,intl,intr,intrt)if(L=l&r1;if(L=

36、m)update(L,R,c,lson);if(mR)update(L,R,c,rson);PushUp(rt,l,r);intBin(doublekey,intn,doubleX)intl=0,r=n-1;while(l1;if(Xm=key)returnm;if(Xmkey)l=m+1;elser=m-1;return-1;56789101112131415161718192021222324252627282930313233343536373839404142434445464748intmain()8849intn,cas=1;50while(scanf(%d,&n)&n)51int

37、m=0;52while(n-)53doublea,b,c,d;54scanf(%lf%lf%lf%lf,&a,&b,&c,&d);55Xm=a;56ssm+=Seg(a,c,b,1);57Xm=c;58ssm+=Seg(a,c,d,-1);5960sort(X,X+m);61sort(ss,ss+m);62intk=1;63for(inti=1;im;i+)64if(Xi!=Xi-1)Xk+=Xi;6566memset(cnt,0,sizeof(cnt);67memset(sum,0,sizeof(sum);68doubleret=0;69for(inti=0;im-1;i+)70intl=B

38、in(ssi.l,k,X);71intr=Bin(ssi.r,k,X)-1;72if(l=r)update(l,r,ssi.s,73ret+=sum1*(ssi+1.h-ssi.h);7475printf(Testcase#%dnTotalexploredarea:%.2lfnn7677return0;780,k,cas+ohdu1828Picture題意:矩形周長(zhǎng)并思路:與面積不同的地方是還要記錄豎的邊有幾個(gè)(numseg記錄),并且當(dāng)邊界重合的時(shí)候需要合并(用lbd和rbd表示邊界來(lái)輔助)線段樹操作:update:區(qū)間增減query:直接取根節(jié)點(diǎn)的值?ViewCodeCPP1,1);ret);#include#include#include#includeusingnamespacestd;#definelsonl,m,rt1#definersonm+1,r,rt1|1910111213141516171819202122232425262728293031323334353637383940414243444546474849505152constintmaxn=22222;structSegintl

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論