算法合集之《維護(hù)森林連通性動態(tài)樹》_第1頁
算法合集之《維護(hù)森林連通性動態(tài)樹》_第2頁
算法合集之《維護(hù)森林連通性動態(tài)樹》_第3頁
算法合集之《維護(hù)森林連通性動態(tài)樹》_第4頁
算法合集之《維護(hù)森林連通性動態(tài)樹》_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、請下載支持!建蒙蟆犀螞蒙SI維護(hù)森林連通性動態(tài)樹董譽(yù)黃蒙鸛穗華東大二附中肆蓬犀螂芾蠶蝕陳首元莫褻滕聿衿蒂滕本文將介紹一種數(shù)據(jù)結(jié)構(gòu),稱為動態(tài)樹,它能夠維護(hù)一個帶權(quán)的森林,并支持link操作,用途是將兩棵樹合并。支持cut操作,用途是刪除一條邊,是一棵樹分為兩棵。在網(wǎng)絡(luò)優(yōu)化中的用途十分廣泛。筮莆蝸聿丸黃袈動態(tài)樹的基本操作菱曹羋腿荽蒞蜜Parent(v):返回v的父親節(jié)點(diǎn),如果是根返回null。噩芨蒲蝸腿輯膂Root(v):返回包含節(jié)點(diǎn)v的樹的根。聿蝕帔Cost(v):返回邊(v,parent(v)的費(fèi)用,假定v不是根。褻箍薇勞蒂裊崛Mincost(v):返回從root(v)至Uv的路徑上權(quán)最小的邊

2、。瞧箴唐充索莆崛Update(v,x:real):使從root(v)至1Jv路徑上的邊的費(fèi)用+x。祎蠶袁芍腿賺蔓Link(v,w,x:real):將以v為根的樹連接到節(jié)點(diǎn)w上,(v,w)的費(fèi)用為x。蠅董英蛔筮節(jié)蒞Cut(v):從樹中刪除(v,parent(v),分為兩棵樹。賺薄藏蓬蜜蔻妍Evert(v):翻轉(zhuǎn),將v設(shè)為根,并將v到root(v)上所有邊反向。1、蝴芳蟻蔽妨黃量通過兩次update可以修改一條邊的費(fèi)用。2、哪?蒂襖肇膈蠢Mincost可以改為Maxcost聿羈肄薄羋薄肄假設(shè)初始情況下有n個單獨(dú)的點(diǎn),接下來要執(zhí)行m步上述的操作。螃膈勘曹雕情顯然,通過保存dparent(v),dco

3、st(v),分別記錄v的父節(jié)點(diǎn),與邊的費(fèi)用,可以實(shí)現(xiàn)樸素算法,在O(1)實(shí)現(xiàn)parent,cost,link,cut而root,mincost,evert,update的復(fù)雜度與樹的深度有關(guān),最壞情況下是O(n)。蒂腿妍艘荒滕膀本文的算法,并不直接對整棵樹進(jìn)行操作,通過這種算法,m步操作可以在O(mlogN)內(nèi)實(shí)現(xiàn)。蟆廛螞1肄蔗黃將樹中的邊分成實(shí)邊虛邊兩種,從每個頂點(diǎn)出發(fā),最多有1條實(shí)邊連向它的子節(jié)點(diǎn)。一個路徑包括一些自底向上連通的實(shí)邊。剩下的邊都是虛邊,通過記錄dparent(v),dcost(v),可以將所有的虛邊都保存下來,虛邊可以在一定條件下轉(zhuǎn)化為實(shí)邊并保存。如果tail(P)是樹根,

4、那么dparent(P)=null。黃蒙鸛穗建墓通過對完全由實(shí)邊組成的路徑進(jìn)行操作,就能夠?qū)崿F(xiàn)動態(tài)樹操作了。這里假定已經(jīng)實(shí)現(xiàn)了以下的一些路徑操作,先說明這些路徑操作的功能,再介紹如何通過這些路徑操作實(shí)現(xiàn)前面所說的基本操作,最后再討論實(shí)現(xiàn)這些路徑操作的方法。康螂芾蠶蝕董譽(yù)路徑結(jié)構(gòu)的基本操作滕聿衿蒂滕肆蓬Path(v):返回包含v的路徑(每個路徑有一個標(biāo)志)蝸聿丸芟袈英裂Head(p):返回路徑p的首節(jié)點(diǎn)羋腿荽蒞蜜筮莆Tail(p):返回路徑p的尾節(jié)點(diǎn)蒲蝸腿輯膂菱曹Before(v):返回路徑中v的前驅(qū)節(jié)點(diǎn)嵋嵋聿蝕帔罪芨After(v):返回路徑中v的后繼節(jié)點(diǎn)薇勞蒂裊嘶噌犀Pcost(v):返回邊

5、(v,after(v)的費(fèi)用酊睛莆崛裂箍Pmincost(p):返回p中費(fèi)用最小的邊袁芍腿賺篇®箴Pupdate(p,x:real):將p中每條邊的費(fèi)用+x黃蛔筮節(jié)蒞祎蠶Reverse(p):將p中的每條邊反向藏蓬蜜蔻妍蠅董Concatenate(p,q,x:real):添加邊(tail(p),head(q)費(fèi)用為x,將路徑p,q合并蟻蕨妨黃量賺薄Split(v):通過刪除與v相連的邊,將路徑path(v)分為三部分,返回p,q,x,y,蒂襖肇膈蠢蝴芳p是head(path(v)至Ubefore(v),q是after(v)至Utail(path(v)。肄薄羋薄肄哪?x是(before

6、(v),v)的費(fèi)用,y是(v,after(v)的費(fèi)用??辈軘嗲轫擦b如果v是頭節(jié)點(diǎn),那么p是null,如果v是尾節(jié)點(diǎn)那么q是null。蜘叟范滕膀螃膈通過下面兩種操作,我們就能維護(hù)樹中的實(shí)邊虛邊,并實(shí)現(xiàn)動態(tài)樹的基本操作。螞蒙踴蔗范蒂腿Splice(p:path):作用是將路徑p向更靠近根的方向增長。蒲菜覆建蒙蟆犀實(shí)現(xiàn)方法:把虛邊(tail(P),dParent(p)變?yōu)閷?shí)邊,為了維護(hù)實(shí)邊的性質(zhì),將原來從dParent(P)中連出的邊設(shè)為虛邊。芾蠶蝕董罰膜下面是偽代碼衿蒂滕肆蓬犀螂Functionsplice(p:Path);充黃袈奧裂滕聿Begin荽蒞蜜筮莆蝸聿U:=dparent(tail(P)

7、;腿輯膂菱曹羋腿q,r,x,y:=split(u);聿蝕帔噩芨蒲期Ifq<>nilThenBegin蒂裊崛譽(yù)犀嵋嵋dparent(tail(q):=v;n莆崛裂箍薇方dcost(tail(q):=x;腿賺蔓眠箴唐充End;筮節(jié)蒞祎蠶袁芍P:=concatenate(p,path(P),dcost(tail(P);蜜蔻妍蠅董黃蛔Ifr=nilThenreturnp妨黃量賺薄藏蓬Elsereturnconcatenate(p,r,y);肇膈蠢蝴芳蟻蔽End;羋薄肄帔未勺蒂襖Expose(v:vertex):作用是將從v至Uroot(v)中所有邊設(shè)為實(shí)邊。前肅譽(yù)聿羈肄薄實(shí)現(xiàn)方法:不斷調(diào)用

8、splice直到根為止。范滕膀螃膈勘曹Fucntionexpose(v:vertex);腿妍艘Begin覆建墓蟆犀螞蒙q,r,x,yksplit(v);蝕董譽(yù)范蒙蒲菜Ifq<>nilThenBegin滕肆蓬犀螂芾蠶Dparent(tail(q):=v;袈奧裂滕聿衿蒂Dcost(tail(q):=x;蜜筮莆蝸聿丸黃End;膂菱曹羋腿荽蒞Ifr=nilThenp:=path(V)帔噩芨蒲蝸腿輯Elsep:=concatenate(path(V),r,y);崛譽(yù)犀嵋嵋聿蝕Whiledparent(v)<>nildop:=splice(p);崛褻箍薇勞蒂裊Returnp;蔓眠箴

9、唐充索莆End;請下載支持!r算哪?蕭襖肇膈通過上面2個操作,和路徑的基本操作,我們就能把8個動態(tài)樹基本操作實(shí)現(xiàn)了。譽(yù)聿羈肄薄羋薄FunctionParent(v:vertex)膀螃膈勘曹莉肅Begin范蒂腿妍艘用滕Ifv=tail(path(v)ThenReturnDparent(v)蒙蟆皇螞募韁蔗ElseReturnafter(v)譽(yù)范募著藻德建End;蓬皇螂芾蠶蝕蜜Functioncost(v:vertex)褻滕聿衿蒂滕肆Begin莆蝸聿充黃袈奧Ifv=tail(path(v)Returndcost(v)曹羋朋荽蒞蟄筮ElseReturnPcost(v)芨蒲蝸腿輯膂菱End;犀嵋嵋聿蝕帔

10、鼠Functionroot(v:vertex);箍薇勞蒂裊噓譽(yù)Begin放唐充n莆崛裂Returntail(expose(v);蠶袁芍腿賺盆瞧End;蜜童蛔筮節(jié)蒞祎FunctionMincost(v:vertex);薄藏蓬蜜蔻妍蠅Begin芳蟻蔽妨黃量賺ReturnPmincost(expose(v);利蒂襖肇膈芽蛔End;羈肄薄羋薄肄蟆ProcedureUpdate(v:vertex;x:real);膈勘曹莉肅譽(yù)聿Begin腿妍艘黃膝膀螃Pupdate(expose(v),x);犀螞募韁蔗范蒂End;蒙薄菜覆建蒙蟆ProcedureLink(v,w:vertex;x:real);螂芾蠶蝕董譽(yù)

11、范Begin聿衿蒂滕肆蓬犀Concatenate(path(v),expose(w),x);聿充黃袈莫裂滕End;腿荽蒞蟄筮莆蟻FunctionCut(v:vertex);期腿輯膂菱曹羋Var嵋聿蝕帔噩芨蒲p,q:path;勞蒂裊崛譽(yù)犀嵋x,y:real;充n莆崛裂箍薇Begin芍腿賺蔓眠箴唐Expose(v);蛔筮節(jié)蒞祎蠶袁p,q,x,y:=split(v);蓬蜜蔻妍蠅董英Dparent(v):=nil;蔽妨黃量賺薄藏Returny;襖肇膈籍蝴芳蟻End;薄羋薄肄蟒勺蒂ProcedureEvert(v);曹莉肅譽(yù)聿羈肄Begin艘黃滕膀螃膈勘Reverse(expose(v);募韁蔗范蒂腿妍

12、Dparent(v):=nil;菜覆建蒙蟆犀螞End;蠶蝕董譽(yù)黃蒙蒲至此,我們已把樹的問題轉(zhuǎn)化為鏈的問題了。下面介紹如何實(shí)現(xiàn)這些路徑操作。蒂滕肆蓬犀螂芾路徑結(jié)構(gòu)的實(shí)現(xiàn)黃袈鰥滕聿衿可以用伸展樹存放路徑,路徑上的點(diǎn)以它們離頭節(jié)點(diǎn)的距離大小為權(quán)值組成伸展樹。蒞蜜筮莆蝸聿充reverse操作:輯膂鬟曹羋腿荽對每個節(jié)點(diǎn)保存reverse標(biāo)志,如果為真,表示以這個節(jié)點(diǎn)為根的子樹是需要翻轉(zhuǎn)的,即對這棵子樹的每個子節(jié)點(diǎn)的左右兒子互換。在訪問一個節(jié)點(diǎn)v的時(shí)候,如果reverse標(biāo)志為真那么交換左右子節(jié)點(diǎn),并將reverse標(biāo)志設(shè)為假,再把reverse標(biāo)志傳遞到子節(jié)點(diǎn)(取反)蝕帔噩芨蒲蝸腿執(zhí)行reverse操作

13、時(shí)只需改變根節(jié)點(diǎn)的reverse值裊崛蕾嵋嵋聿pupdate操作:莆崛翱s薇方蒂對每個子節(jié)點(diǎn)v保存2個量,ecost,changeocost表示(v,after(v)的權(quán)值,change代表了以v為根的子樹中邊權(quán)值的修正量。在訪問一個節(jié)點(diǎn)v的時(shí)候,令ecost=ecost+change,再將change設(shè)為0,最后讓change值傳遞到子節(jié)點(diǎn)(加到子節(jié)點(diǎn)的change值上)9m瞧菽酊睛另外對每個節(jié)點(diǎn)都保存emin,表示以此節(jié)點(diǎn)為根的子樹中的最小權(quán)值。節(jié)蒞祎蠶袁芍腿執(zhí)行update操作時(shí)只需修改根節(jié)點(diǎn)的change值蔻妍蠅董英蛔筮Path(v):先沿父指針向上找到根節(jié)點(diǎn)并返回,然后沿此路徑向下并

14、維護(hù)reverse,change,ecost等值黃量賺薄藏蓬蜜Tail(p):返回最右子孫膈蠢蝴芳蟻蔽妨Head(p):返回最左子孫薄肄哪?蒂襖肇Before,After與伸展樹中的操作一樣肅譽(yù)聿羈肄薄羋(path,tail,head的時(shí)間復(fù)雜度與splay(v)相同,不會影響以后的分析)滕膀螃膈勘曹莉Concatenate(p,q,x):令r=tail(p)首先splay(r),再令path(q)作為r的右兒子,訪問head(path(q),并修改它的ecost值為x。最后修改r的emin值,使它符合定義。蔗范蒂腿妍艘荒Split(v):首先splay(v),維護(hù)change,reverse

15、的值,刪掉與其相聯(lián)的兩條邊(如果沒有返回null),返回值為:v的左兒子,v的右兒子,tail(v左兒子)的ecost,head(v右兒子)的ecost。(伸展樹操作:Splay(v),樹通過旋轉(zhuǎn)將v節(jié)點(diǎn)調(diào)整至樹根,旋轉(zhuǎn)時(shí)維護(hù)emin)建蒙蟆犀螞蒙踴在每次split和concatenate操作之后,splay最左子孫,使它成為根。董部:蒙蒲菜覆復(fù)雜度分析1 .肆蓬犀螂芾蠶蝕每一個動態(tài)樹操作都需要用到1次expose。,首先分析expose。的次數(shù)。奧褻滕聿衿蒂滕對于邊v->w(動態(tài)樹中,不是伸展樹中),如果v的子孫w的子孫/2,稱為A類邊,否則成為B類邊。筮莆蝸聿充黃袈顯然每個點(diǎn)最多連出

16、一條A類邊,樹中每條路徑上最多有O(log2N)條B類邊。菱曹羋腿荽蒞蟄令p為B類邊中的虛邊數(shù)。噩芨蒲蝸腿輯膂執(zhí)行一次expose,可能執(zhí)行許多splice操作,每一次splice操作:部(嵋嵋聿蝕蟆添加一條B類虛邊進(jìn)入路徑:p+1褻箍薇勞蒂裊崛這種情況最多發(fā)生O(log2N)次瞧菽鬻ot莆崛添加一條A類虛邊進(jìn)入路徑:p-1祎蠶袁芍腿髓s可能發(fā)生許多次,但代價(jià)是p,p是保持非負(fù)的。蠅董英蛔筮節(jié)蒞由上面分析可以看出平均每次expose操作要執(zhí)行O(log2N)次路徑操作。(1)2 .賺薄藏蓬鷺8妍每次splay的均攤操作復(fù)雜度是O(logN),一個簡單的結(jié)果是每次動態(tài)樹操作O(log2N)。(如

17、果使用AVL,紅黑樹等平衡二叉樹來實(shí)現(xiàn)路徑結(jié)構(gòu)的話復(fù)雜度就是O(log2N),但伸展樹的均攤復(fù)雜度比這個結(jié)果少了logN)蝴芳蟻蕨妨黃量下面更進(jìn)一步分析均攤時(shí)間復(fù)雜度。蟒勺蒂襖肇膈籍先介紹一下均攤復(fù)雜度的定義:聿羈擷!羋薄肄對整棵伸展樹定義一個勢p,一個操作的均攤復(fù)雜度a=t+p'-p,其中t為實(shí)際操作時(shí)間p為操作前的勢,p'為操作之后的勢。那么m步操作的時(shí)間復(fù)雜度t(i)為:螃膈勘曹前肅定義s(i)為在動態(tài)樹中以i為根子樹中的節(jié)點(diǎn)數(shù)。定義r(i)為10g2(s(x)。定義一棵動態(tài)樹的勢為這棵動態(tài)樹中所有節(jié)點(diǎn)的r(i)和。蒂腿妍艘范滕膀伸展樹有一個的性質(zhì):每一次splay操作的

18、均攤復(fù)雜度不超過:3(r(t)-r(x)+1(t為這棵伸展樹的樹根),而這個性質(zhì)用在這個問題里也是正確的(在r(i)的定義改變之后)。下面簡單地證明如下。蟆犀螞墓踴蔗范證明:用r'(x)表示操作以后的頂點(diǎn)x,r(x)表示操作以前的頂點(diǎn)x。1.范蒙蒲菜覆建蒙單旋轉(zhuǎn)量螂芾蠶蝕董譽(yù)1+r'(x)+r'(y)-r(x)-r(y)滕聿衿蒂滕肆蓬<=1+r'(x)-r(x)(r(y)>=r(y)蝸聿丸芟袈英裂<=1+3*(r(x)-r(x)(r(x)>=r(x)2 .羋腿荽蒞蜜筮莆雙旋轉(zhuǎn)(頂點(diǎn)x不是根,且頂點(diǎn)x與x的父節(jié)點(diǎn)使他們父節(jié)點(diǎn)的左兒子)蒲蝸腿

19、輯膂菱曹2+r'(x)+r'(y)+r'(z)-r(x)-r(y)-r(z)嵋嵋聿蝕帔罪芨=2+r(y)+r(z)-r(x)-r(y)(r(x)=r(z)薇勞蒂裊崛譽(yù)量<=2+r'(x)+r'(z)-2r(x)(r'(x)>=r'(y)and(r(y)>=r(x)酊端莆崛裂箍由對數(shù)函數(shù)的性質(zhì),對于任意一對x,y>0x+y<=1,滿足10g(x)+log(y)<=-2。袁芍腿賺蔓臉r(x)+r(Z)-2r'(x)=log(s(x)/s'(x)+log(s'(z)/s'(x)

20、<=-2黃蛔筮節(jié)蒞祎蠶即2r'(x)-r(x)-r'(z)>=2藏蓬蜜蔻妍蠅章由此可得3(r'(x)-r(x)-(2+r'(x)+r'(z)-2r(x)=2r'(x)-r(x)-r'(z)-2>=03 .蟻蔽妨黃量賺薄另一種情況的雙旋轉(zhuǎn),分析與前一種情況類似,省略。蒂襖肇膈蠢蝴芳Splay操作是通過多次旋轉(zhuǎn),將這些旋轉(zhuǎn)的復(fù)雜度疊加就得到最多3(r(t)-r(x)+1,于是得證。肄薄羋薄肄帔材Expose(v)操作把從v到動態(tài)樹樹根的路徑上的所有虛邊消除,并合并路徑上的伸展樹,由前面的結(jié)論,路徑的合并操作均攤復(fù)雜度不超過3

21、*(r(tail)-r(head)+1,疊加后可得到expose(v)復(fù)雜度不超過3(r(root)-r(v)+k,(k是從v到樹根路徑上虛邊個數(shù)),由前面的結(jié)論(1),可知平均k是對數(shù)級別的,而r(root)-r(v)也是對數(shù)級別的,所以Expose(v)均攤復(fù)雜度為O(logN)。這也是所有動態(tài)樹操作的時(shí)間界??辈芾蛎C譽(yù)聿羈Link-cut操作會改變動態(tài)樹的勢,但仍然是對數(shù)級別的。妍艘黃膝膀螃膈應(yīng)用1、 螞墓踴蔗范蒂腿最近公共祖先蒲菜覆建蒙蟆犀詢問v,w的最近公共祖先,首先執(zhí)行expose(v),再執(zhí)行expose(w),當(dāng)執(zhí)行expose(w)時(shí),記錄最近的一個再上次expose中被訪問

22、的點(diǎn),這個點(diǎn)就是最近公共祖先。芾蠶蝕章罰膜每次詢問需要O(logN)時(shí)間。2、 衿蒂滕肆蓬康螂集合的合并與分離充黃袈莫裂滕聿可以支持Union和Find操作,還能支持以某種方式分離,而每個集合操作的時(shí)間復(fù)雜度為O(logN)3、 荽蒞蜜筮莆蝸聿最大流腿輯膂夔曹羋腿動態(tài)樹可以用來優(yōu)化最短路徑增廣算法,使每次增廣的復(fù)雜度降為O(mlogN),并使總復(fù)雜度為O(mnlogN)。4、 聿蝕帔噩芨蒲期最小生成樹蒂裊螂T犀嵋嵋動態(tài)樹在最小生成樹問題中有許多應(yīng)用。H莆崛裂箍薇方比如,最小生成樹的增量算法、度限制生成樹。還有其他許多種變形。腿賺童®箴唐充實(shí)現(xiàn)筮節(jié)蒞祎蠶袁芍直接使用前面的算法,空間復(fù)雜

23、度會比較高,下面介紹一種本質(zhì)相同的算法,空間復(fù)雜度會降低。而且編程也略微簡單一些。蜜蔻妍蠅董黃蛔同樣的,并不保存整棵樹,而保存“虛擬樹”。虛擬樹中的頂點(diǎn)與動態(tài)樹中的是一一對應(yīng)的。虛擬樹中的每個頂點(diǎn)最多連出兩條實(shí)邊,其余為虛邊,分別成為左兒子和右兒子,其他頂點(diǎn)稱為中間頂點(diǎn)。完全由實(shí)邊組成的子樹稱為實(shí)樹。對每個頂點(diǎn)記錄它的父節(jié)點(diǎn)p(x),左兒子和右兒子left(x),right(x)。記每個頂點(diǎn)的費(fèi)用為cost(x),其子樹中最小費(fèi)用為mincost(x)。為了實(shí)現(xiàn)reverse,對每個節(jié)點(diǎn)保存一個reverse的標(biāo)志。為了實(shí)現(xiàn)update函數(shù),每個節(jié)點(diǎn)保存dcost,dmin兩個量:妨黃量賺薄藏

24、蓬如果x是一顆實(shí)機(jī)勺根:dcost(x)=cost(x)肇膈蠢蝴芳蟻蔽否貝Udcost(x)=cost(x)-cost(p(x)羋薄肄帔未勺蒂襖dmin(x)=cost(x)-mincost(x)前肅譽(yù)聿羈肄薄注意dmin是非負(fù)的。范滕膀螃膈勘曹實(shí)現(xiàn)expose需要兩種操作:一種是splay,將一棵實(shí)樹(也是二叉樹),從某個節(jié)點(diǎn)伸展使這個節(jié)點(diǎn)成為這個實(shí)樹的根。第二種是splice,將某個節(jié)點(diǎn)的一個中間節(jié)點(diǎn)變?yōu)樽髢鹤?,左兒子變?yōu)橹虚g節(jié)點(diǎn)。踴蔗范希腿研艘執(zhí)行expose(v)操作需要分為三步。首先沿v往上到虛擬樹的樹根,對沿路的各實(shí)樹進(jìn)行splay,執(zhí)行完這個步后從v到樹根的路徑上只有虛邊。再沿v往上到虛擬樹的樹根,對沿路各節(jié)點(diǎn)執(zhí)行splice,將從v到虛擬樹樹根路徑上的邊變?yōu)樘撨?。這時(shí)v和樹根在一個實(shí)樹中了。這時(shí)再執(zhí)行splay(v),把v調(diào)整為樹根。凌建軸奚屋螞墓有了expose(v),動態(tài)樹的8個功能就可以實(shí)現(xiàn)了。蝕董罰膜薄菜可以看出,這個算法和原算法的本質(zhì)是相同的,所以它們的復(fù)雜度也是一樣的

溫馨提示

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

評論

0/150

提交評論