From 3710e5ec134b777813c4c8a534ca714d03b10dbd Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sat, 31 Mar 2018 16:48:35 +0800 Subject: [PATCH 01/15] auto commit --- notes/算法.md | 28 +++++++++--------- pics/9764bf07-4840-486c-988f-334acefc3f49.png | Bin 0 -> 14336 bytes pics/c5043b7e-6efe-4c55-b663-272e1097ed21.png | Bin 0 -> 15360 bytes 3 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 pics/9764bf07-4840-486c-988f-334acefc3f49.png create mode 100644 pics/c5043b7e-6efe-4c55-b663-272e1097ed21.png diff --git a/notes/算法.md b/notes/算法.md index 079a53e0..fa740d34 100644 --- a/notes/算法.md +++ b/notes/算法.md @@ -354,21 +354,21 @@ public class UF { 但是 union 操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 -
(NOZEO2 z4lbpjEtMLZ&^L@`c|zcv)7cju9v&lZA0S%EhjB_88XbDR0%=lEsor!zWQ*hX8SCkt zO;I?7u>BK!+&7Dx*rFd;I?s!UpsxBpySgrUtt1^|70O=R*db^tFGjq<*$rZ9#T>lj zDF=mfj&%pZ)!H9dGF^b5`(&D_oote(sZ=55(@1<)L9z&@uRy-3h?116R}r^gRlaKF zobIN79~2(R72lgQ2yo(Q%>y_`w%WLv5d$>A<6f>lSoOlS@Q$DDUh6EpOlp!|^Vk!Y zaUX1-GVu&zHzvNLl-r`Ch{aMp!j|ridHAO~$IaC~&Y>>)FJD58cpmcYM%&4qhP{6P*WE%7s&d+MJE9bu~VOsP?1B@SC_K|Z7- zF 9@Qy_+dIK9H?(hdp+t58Ec+YRV^F!Felgw)_E-qtbXVTX}x^1cHM6n0F zaA}L3Nwi0N;N#<45C@g(K@&w g7&cxq|tVON=??3n74vW_c5UT|f 06zc&ra{}E33djRB`|OwdEX`sJrun^N>PhA0 7^U>FZUnbb?4x zb$n%xWuggRuwM+O_YSz$i2`juX7d)-eNUr#GfEM-*}8cnO@j5Me~2LW50DLUc5(`W zPSe753MDE7uBhV2{Ox!H*70E4R6(_kbEt-H$lA}fzM4?LRu}~L+C=H&w{M1QExvmD z_FA$}ciB0~qu3!OB+)S-C9eOnFP@P$EOT2ubDTI !#^UgRpP{K=>);%^46k$TNWAgoRp20~e5P(rrQ=z2vnHG|PwEiz z?H0LfS|c}4t$+geINGO;eNNYj4t^%gwOTJ?teM_7H-imZW~%V ^ZGADd4~pQm z!8#4&iWy3i#HC$Fs~01i5{S|E=)T`8h`o!Z%Qb67GoJ9|`#PHUknig{O;7KDtbc!E zHa=Qd&G-_s_-VfAM-aHgE(qkRG)(5qV4E4<`X+a35u}Dzv&ywv_nw@Yu{eXSiR#0b z17?R382!!+xJ)tC7hDjn0hhxmB|T)}!(fL>^KpIgq8=*TE26IWiBEGGUwV-hHvEDv z&Tcv4j$_HP1VL@M`~bIwy&r9Su!Qtz=-jL20sBR+MIXx=a0@;DT!ZmuvutP6+P4QY z&a7qU#a{^O-X5mke}CIcy_qcD8J|;jEp)HBxxz1x@}p2H>;1FV33Xp<&f6s2zhqzL zyfH*vSSa9>L?d*vv-`^jK%xHVa5I{ &8$OK_jU#Yt=F&&Q7v+&jx|ow1G(U zIFLODDZ=z>bu_O%Xl^fWX42>^jnFrDdDj!O4Jue`Ean`m3tOe`c&E5~gSpyF{>)n( z2rA}jc*^GIP84AN_(jJ;>ZL5!D;*c>*={5&Ro$Quygvyw{p)6|C9}5U_-jL3jMFPi zn!QRa?VlQln||%R^<(qhL@gEzzO}q+DmgQ_(Mg)M7*N|lYEx-iyNa4FD$vX?si9Um z>_>$P8}}Q~-x++rlS{)jZ{R{wyLN=Gk^<7kYh@~6p;LKD3m!S @zs(=mOElj}pFrb|h&Mv@hQY+hDIX3P;C)Hha{ zWZOkLu}^JC0AW)SyK8;!VsLPDn|y8T++ej^h!9jCY{R=}YR0t9Tf4{sCN5hs_G^iC z*~bEL> >cyF9>|63&=}!bkY&xwu2U bCYVrb#G;CWtZe)0w4GLMKx^&Uyt3IgS#${4 zg7U>Z;Y$ qHgbuJ%p8%lsgh`4I2>G%>qM* >e5ahjG-*D8I@oAAMl z1#C`Bf3rwr79 hq<-X=n_&9mHMZ19R6$SAXB zt+|)Hs1u2wBB-qq(G23c+azBg!=7;U802(EwJb~l`>+k>b}Q4jb(hI3K}U74_C2hE zSI}7U8VyxQjwGm_R{GiSs}q6orfFx8sV+pGx|Z!kiIU53ADKFXb0 1J!#0Z ze?alu&sHg)?>I8!gkzg5Ie4ydUYmv=YMfR`B$dXZN<3GK$!E&!hXe(d?7K02 g-(3c~yuuEwW0r9*${X2lQ$mPN zuutp5UF#KZ?F)$5t;P{7XXX#*aWv5y>>-Y|7Po$DRCrv+uirpMnn$T4Op39Pw3z(T z_nl9PP{R8GY++IsWXc`;%@8Nqk#%`susG T!Iw0bM;QRY5lj z?9o(H{h^pP)f6T{GSRD|vCiYCwRtN|Dsq4dx2c@HzU(1v um)#RW6Y+jLFb zUD2XVLU)UNK$V3Yc|c<)g?K`pi`CIg?^v^1dVoron2XLm;efMqQ6Kz$j;RM!Kxg~X z=R~^pwU+24mB}+H&3%h|NTFY8QVdDsjYHutESYtuOb_JBl$gVhnf}nYC`97EC`Vok zuccNLKS5sA;LJt6?q4%PK_SD^{0Y42$cao*uBS1WO *SyC zF;0TgI qPoRPd!XWpwSSPQ@8Z4wS_`Oo{h}6xpTL>QH6n1SerVs zv=tI%R~7d8k`_<5e=_)GrLai0?lu&!al!LnBEcp*32y%@VymGlDOW}-?h2|NNXz? z+Rblll~^alI4^Bg$#~(LGA$7=^xKS9k7E^qmPLn!rIO0ZA@X#j#7ThMYZuX9_zq6* z;Y?@`CVWS`;xg;`U^z0T!+MpoSrQxI7X`DysnLWj+zW?+0O^2-^-2u=`K2U(`*ko? zel*6g%7S@i3}_*)#mwyryU21jpylj(WK8fKOwByO)*TRuz8~K705nd4#t6)_Jz!_n zpkJ x(VGsrEEjytj9n?Stv ZWe*YEjNd$}fMa7JK!!vEdsfci%h0=cZMX!@8)Pv(`L%;as5s9p|f z?btsgtsOl=6D<>o=coQjS~LEOwATHvNNa#nQ3H63<~nEJ7}TH82zVntD9}vr+heYy zq?egNL`yd!`b{5a8NACePzA(*ySt>MbjQ=yi~EI>d5jBt7dI*jh&H;#80NMI%=cE? z S!K~H>XJPo~7Y_a~>i_KE(jbO| zKfE%UJ->yqOM(%F5Q(4s`1R{$7gwV6nbH&4#5~kXO%C@5$kQXpy+fK1fk&K<8y&7M z`G#GxQtr-YOWLCZzDUW)AWFY8^y@5-u=aU#sA*uM4WJ6>LQ6k`eY{HPd>!@Cz{Py_ z0_3;FfP$0l-@r*TO+$5*%PX@bK5W+7Kp|kHA-abDVy#hM|4~Q(lKF0bMap80{nEsv zps+T%!I|tp$5oGLhON=213Edu=Nb}%Zw}OtL%R{{JoV0``_G4d4DH;|`{mS10U!0M zGfFDHxM8Kh+3wJ(Wsh?VTN^Oyn{!ARxuu#9gE|kXXJ!{jvCv~>tK&TJObTAB|2Nv& zVK!|IW0iUT^N=r`$VC3|(YrrMcuK1-=Ql<^e+X$$5NJnWp}V@@%?KgktIWPzMNDKQ z4}bggerV65WeQQtnkqs}TE~@Jkq~;tbjqiz2A01d(Zwe>UrXO0C}mC?t@4%+>zfoA zP(VyD`Y2=!kl1n?uP>+$Sxn!T z*;+A5E1T;TCf6RhR48JXNs_+mY&vrHH2Y zd3~AwKtcNfRY8}i-z# *1u4B14`S*@t`iWU2HWn$RhHuJ}Hv z |2%U4~>Z|v?YuProxZZGI0;G r#QTWf55@tY%nUp8Gjl+xB{ znQ2-hqNBO#!rxgesI9oT#*Nws%@5bJIhJgn2JyG2Hak1Jbt`$!89}7r>Ixm@b2!#2 z&%MKOQRSocGUee3RwoQzEa^;Ohm1)vNEDQAISr?1dTVTssybIO(Hu5i(DmC#P>6-L zg5o~Pb?R6L+h5;sSf*n-o{>XO)HrK`_`dyuuZTq%Ak}EQ-&4?QW(C1_hj4_r0Jtkz zNV5;@690)S)VGS^nR Q|NzVyyy|8*A=ASXe!;!mdPD3!-|j!!SmZrHs|A$ zQ_>BV%3fKI&~nezd(d#p#}YEIh=Pxt`PdON!(BtfByZ>KNqqOD*(HACrKhGAJ7r|L z5|tf;IzR0Aqu{Ttp36STQDEIRwEWrMOa8f`Va+|6BsM*{RQ5mp2UY(;9X9rnD@)eV fA@ljLw&5P|mt T8-zgUgwEN)`+jD=ndh7LJ!jtceCL}ve>hGq_Fj8kYwx|vZ~d-VGZO>O z1A+%wSXej>FY21Ju +yKT>)ODN+e(ZI>V0?jvr6h@C z!*w6{&F+8EE`WuFtC{(4SG!-%bru$tEkoT4mLbm5q@))|euZyu&xj06c@#Xoo*yaZ z#%-K<^+^BjdpzQA&mIz&&efXCK3OWbH>q^-@Co6$@;+;2{WuSG&+?bhm%2Gm4k_q% zVk-sb%y|0_H)xWH)x;1|a|M!I$M_UZa4#DF@tScLgQO#iFb(6OB>8~Pquc3wSl+S0 z*jcXZ$L?i0bKh(?%gYPUT`ZqO(JU-C4#8Pi zmE-JqWUte~cE@&n<`m#y9 zyuGn ~v+h zW_apGji49uVkAUhR%<9CbU6S zV2YbRWKpWiko(a(=dra>Psw`<9oml}(%M|4-KGJF=qG9qwX_e^a~)B3zLW8D5tg#*n0D>qtcyX(oyD!e|u_RZeyV| z8OHBazmy{7u@G@pl6i02?L00YOOHCkW7w#U7A2Lqx5G9aY!a3yD@!gP9&9w%hhoo_ zBqY4eS$=*F#{N9k$NR8e1s=@<&$;A%Ed!btp7qEK=5|#`NbmCWDYqzIX}*y!&^S*Q zDRH#ft1oT(mo3-fe?%+&r$z7Ipa&BIOx5S2kd$bFQEER Wu(e4IDKmoS4Li+D(em+ItC;lsaY@HE->-~1txK6p&c^L^(tQDn+&oD1}~CT zNxk1~W#ja`kl?RDC)Fvhy+$35pmBpYeY%UhKE^23R%MI^kWS(2&z)72tuX78>{X*z zi*I9^?Mtu6B3FOC$mpiI<%$oI{eN{l|4Qzy>NbaJY;P>k< wA>io%x?F=#N=P;94v1xktZ!yRy9Q`=$7O!}72fz1Khl zk-pL*S?b|X=^d+yf1zj><0pe2c%r$r^5ZKu`#vjotsiP3^^OB!bK1`!o!I%^Z}T$P zu5;f8axLg9b3f<}j4`zzulr^qwvkm4+gnqII!F8n7)NMs*}zP#KLy4pOW!=58Z^;^ zEx11zxS5|G&wQDTwb60S7l`?~py>`Z86#{a*Om=o&8oA!`2J>_a%1njtyUai$pD;} zkCAh8b5jW#3JPe5@S$mq&Dj{OPf3OOfgyg^ub *Oo }Hh_F1&TH`mW8ieJlVc!FkK;>UjW$(n%i8%bHm;Zstd z3j#mh6=^G|UHzR}){y (WEq9*Ir92^!03H$%`dlK7Nob5 zYb(HwJ!W=LBB9BlG3<^~VKpvObbkDKiZEPICY$U+pb0e2?qkesZ_RvN%r%K))D=8< zS~R!XN!aKta1zv59u4T$8>iXKRrwZzOTPcGj$w1tre2ib&o?97v0Sw9O`1!0c0Lf7 z7b6@BU3cPd* f6y~QA;yL4Zr3_mXhGKZc;kkx13?fFV6EiT9P%`}|c8WOSk zW9btIj_-R)zKEEBH8*Q5<(j(nTS`Se n)f+R)B zPW9~|E0>fO3pA0}GIk7p8m+L~G@ZAZh8`+%N+l6KZNG*=a|6lp5xcVR`S`}+79aOG zx3lOboh#3tKi9doQK(e_UZ{;~mezHas-$}$PZjtw61wO&5u1&288o$W$=xor`2WJ) z{XaY@@X&=5``vR3!akBL^@KWeRm(4DO`imw^}itl_+L*uuJkpAug?#cx*0iB0t00o z{R&KNK|qdTIvt2wP_?4hQ1$!w7Z@c;;RQY(nxFCG)YTO>8XrOrip4L}Ni^#MTb}6? zIEPS3gL8*%dX5^5J-oMQLEW!Qy=r#BsH~Qf%z0 4FlkOs14S|hObkNj3=(@w)(U>ppJbx#!5m^>n5KhW2Uk*7VQr{GCLx7yF! zQCFGEt*qInC6DM9m@4pKqtbd}7rwJIT05<4-BI(t -1=Y*6`eOCwr5Sm0WfR zQ)2@t*1VO+HMMFcF(}09d9r}4%XF?hn3M=YrotnYsdoycr-pj1oa}wSB-V2I-3T8( zG6uO{cjMD>5R9W@UMYN18G65z*W}veX#*+I^y$6AP1?LycLN=729s!OZ(rcNJTBHD z%&$c1n{Qqa^K`)!Yfks1xz3%LykvxLPP=gmgzTe&f*s20r1PRfB}=sfT;!7#coW<7 zO``0hYA^lsY!YY_0h_gi&rP^cmsV2-qJ|B<^fh8sF(a7yr}oZG{h^rvk=6rpd#%)H zkxO5-4h+varok_Ka*_v`4mR+GQ;=Qb-6gN6FW31Kk6Y}F5dqV+z;xNs>RM8y2y(4h zEn@7k(9xqGCfgil61#{Vxf-tPlcL^!#~@d$O@bd0j$&~Ac|X>sbm#tZ;}8Bk!3kr} z>cgoKE_2FMi`LE|>|3?x5sYMmw+q4co-h0|mP|9;icI&J-Es;Ng6F9gcANMUA8q}G zHj_>eofksuA8%EvH!(u$O{#2;J(;l-;F7y#N?7bV_Rn-4Q!t&d)g~PBmqUzOv^i$T zT{2F53RuLC2M)Ee!%U>@ktFfkkiYcZl784Ramj*H!o{u7z{U7LmVbEu8iGqs-3FJp z9*W@tnhFXDbt-527UAX~I4&~vOj>s9J !`lGYt>AA($2P$ovn(VIIvyo`P?ZsZwN7rS zW^pVi4bfDy=tDUCjxqt~MirZxx-SSl&KqeKZM`z7^mrhxI2>`Pvg%PY-0gumgy?>0 zMJ=!{aY>kyTqZRZohcN>3vb7D-7eA0AFNd#COOH+-L <}B4Fw`9@^y62xGh>yOz))m(_xLo6-r}Rnz1y2QK<~`~4=}o{F^wDBE zz2L0UU}Q95 a?+REltthG`bjXN@iEuOW9v zwbujADBiU^CwEm0{OqGR+jRMMCwXsC^p$%iuW2ExlY{x)DtEQ)cAUTBbPKWyjNnVl z_yG>+1?c+|;V?$lNZ!f;Tt)yT^jf%y3GF@W-MG3Ni^ABw3j=r75-he2f^E|+P6==Q zEIQVp2Ys)u+6y)xXI-yiH;w=|b> n5Fg$CmkfG22abB!HSpv= zbL_b2DVKp)`Xj-Pb9!#2FLa6D!~hAZ!3;hb0UBR2DB5=P*$IVzv~>mL DRdWJ52S;F7O&`SyZ)<**7C4*J2#XZX^gDKmLhGw#-^pAf(~O z_iSo|9fIWsAQ^O@uY8l)i>jd-Z(e{>9+!C8HS_JWM_vN@ o!td&Pg#pJY% zliJg8f4%N8isCg3$jHc;J7b5y)Gds~kc!-ssvBZVs$@RnR+s9(&^*p-53)(T$^Iv< z^By1nw3b=-+p7w3T=&`YG(54F7LCXM@~F|a0^=Si9KxzZy3Un8r@u +koy0cEd8EI){?_3>L!3yQW?j4AF;1+ZD&6C?D-*RfpM~fi`1q@yR z6;3ua2MJa}I377$sdzh1@9to(dPY+-Ehe&yhSuott --5AMUekxC)wWRSM$* qJv6(3&44*AwT5w$Elf2FQi?? zCh_hJ=~`FtiVlbD!~M;dCh0Os*Y6JaKywFV$@=uz7+)TEq$_1#+1gl!E%Z`VQ$yxC znBnxi&rg^=bJ>IWf1!Qrm*}U_Mb&Hi;Bp*d4!3##;#T-mEpMEtxyo}MIAsa`=$#I8 zt>SY!)Dj$b-NHDhn`>rzKAS{^zytukj#^toR~IfyZ@ToeN!aQ_cRhHHFp)a$BXA1i zG92*j`eMy=TmYPD?W6ioF-2elTN(l`ps(YaZ8bzutLUtHLPPh+0DFN~$vfxQX0H#u zWx$F~0EYQ77JQK%OcWTCa18#H7_CEytBcA2`+Vg%85e~<1lQ*Ll&+;Uvr*UZu(IF) z-qd_O@*MN&qokzqT~}QFa;sltF7I*^MMtI_6&CK&c|#^^=l@!-%yH7T+u3Ih535bV zSb@Z9i(BtccL41bdAYc4e8w8p1ds0|ed(^>phDoJe2C?fwCDOkt?%k0t!L~q5Arxq zxpSgIXL{GpEQ^CD2R}?y-h7O<3f=U-vzK@0pk^XJadL50?rr`4%O+V<+7yo?a=ys; zbvsGTGTLmnCtM)^2;*g7$n+^ DgOFp2^f1$%@U1R zwKqmCy2FVvJ*DzS;h!+TVkM4_+}~3?_5DMA@r`cGxU68~iF`zr@25`F{vRddxr?<2 z*Y)whAou@x#3&T7#Qr|*y`&1{(&V7~!G|vkcBCEs5Q!2)NAA6u)K2{J#TJwW?{@!J zBbNW`^~w&KdJ_#G%$mD*@762%3@gk%l))3WY8^_i8!qD!_AwMyr`o_=HPpsROU9 <3c?4G)G}FHIKuiA zn68IyZLi=+&r(^oKyw~>k{5n<>kxX-EM=;p$8SsL<4~akdzRE8_|3hD$0)fI*Ox59 zF*> f5&03<4WR_OOoL~Z;3W_lH1Z}8QC*A $L5=yiRRO|*l8kP@$WoI$&bNwZ#%G*#$%NJ(m?aoz+0i}$4{D{>N1_w5(4I1<& zSq%qFYRw%Us)|RfPghkH=#X#3i|DGuJUoFl^@PGgLRyAh)$k_R!$sZ2r^~gDM^ZXH zABOIz`QL?=|C^I{rOUyu;n!H$f^q*+n~ pfZ+ZCRtNWj%;0Ze^(4rjO#T3?iXi3&`~g<;*+Crr8(94# zdIwnjPl-1F96tM=l|D;prav(dzU4>QTy7bt*4m(O)9c8aMI-fh0+#WpN+?jv^4Vk$ zR);>WwS9-GjP%(J%l*9*aAh4Q_V3?6T0wNCq1H#pChE7dEpR3^2-=X_!lcWl_hs*E zsfN>}I-(O|(28DA*42R;-^X#JnpHUD9e{05s77dYgbKOb`Ndy#>qlFGlV`f$kLBqR z5`fBt!%ejExFWm; L^YlHYv3sa5ftnb{l*6phN$c+;Vp;idHq!NEg^mn$b z6y)|MqfA>BwNbr;;SO+9!}?3EwT~u6Y+PeZ=HqW9;SRwkLC<26Q9skTK2KGh`K`8h zQ!C5_pAYc(-1~AS3y>*y&4pu(jfL*?xe&R0S=wcq_uThZdP%!*Kou#-VMrDxm1vfC zKDw8QA1beA8>gPkMyYHv(K6*rgZws*6j{Q?{M5EFR~D%*c$`qSHG|9FV`acZS%;GH zbcC*DH6ymdLF)${{w?-1F+cA|=pxnx+R6i06yT76wDpS#5K2&U@h+c~qGm&ap6O7x z)@Qm=2Ahql y6a-LOwDIcR`6&S@aiFq@# zQsSeZCYI4G3bLhMZ`5SFY_AdNZ{uY iVhiGiV{`297z~V1_c}nC`>;b1TdvEKGgf4rw%L21_wWQaq2|qKIsXtwR(~ ztgMr_QJPMeWK}thN^rQ7ciu{W& UX3l3 zT1`M%M ME1yRP+EV$_S9F(=lh4Z2i<(U*>n$mUb0|y5aE?yUNTpBbaL#f8 zD9hF#^QBg~Sj8;ap8iKS>bLjzed(h$UlkJ2eNMs(>W=Bc-5QKh@6cyDhE;xcmELyC z$Rfv@b3$BrhqF$gUH4T1GDKzIHUUc5$%uI;+puWP0GH 7<{wz~9`qbFM #(300v*~mB zfGhP-5_~)9bN>uDnl!Tl1CY4r{+If~|5-O%H5PiR_Pw2Syz<)VBR;2blRf&+D^r1w z{_k(j{+odFfAXS{TvH=ea(Ees%Afoutf$$@sff^SUbuG4`}?dUknfD9D0+eZ)tmJ% z?V3ZCI|<`r*qawA^Jx<3$aiB6NKzdCskcJ2fkyZY;-0*La>i-w-i_^HpD+KuW;Bb= zZggjtIN=u =` z-d?FG;6`|#(?Z3F>R68CDGe8}9*2udXaDWHuP#zFjG$tMs<{s8$Ld4A!Wo}T#}a&t z 0%Q zk(nDneoqK$k2wN)^ylB@95bmdU{-8_Rp!f6tWvU1^>pmjQ@((C3WRDpUSVN^8s-*Q+o4hdexVxRfVA z*?L1u?zr>!G!zvh|MxW6Oubh#cF|AAaFp&LGBB=SVF71Y_uXgoxO~4)N;e5lyfTK` zASS7XJaD$>$Kb7b&8z^VOHfi$O7>GHInpS5F2>9R9yRU1dO`8o0sQ8by}})#-EAE+ z)3oq>hM#wuNnQujX8NbR_Athu<#B<6)gxaT-Lzmts&}!nVje*Sdpn^J{4yG#wh%aF zy?h68e0T6UB1|)A3;GAI6|?+(KI_cmT8*T`N5;{S$D{-HxGzFNv7Z &IRB!u$bGBIM7+Nu)hr8F7gN{;-IhIQ$k*X;IF&-2A6%I&wP zy4wPQ9O7$~ys?(X$$efRKh^AeBA51yY6fKT0g}9n^T^mOyI_?>pPQS~bl$|5=$-jV zGZrw?Y&cxI`7@|}$&Wj#mopw6z%QAtN1Ej^&$r=G5s_}?lN{;l@#!jqnxg2*opbmg zCT4*%k4*lZ`= 47_1>p}$G@J{`zkk#i|N&bB_Dx&$<&6@G_h{ih5WR kD*KV(wBUi#kXsI=5%KA^rJW$9atWno z@mbvMike9;&I{{i7CI+1mIf?Vv4^6cJ*YlnaQ^=VN|oWlHY{|hIs9H-BN8;{*m_<$ z6Wo!}X0Y3pe&n&zT@QwRCi-)8m8L|tW@Fqxbz{{(>EeM2U{EnBN}+?Ls Z*$2p^J*(3fQQG z*T(tGwT91{J(z8<8$wnJut}U?He1gLuuz=d#Os|AvjUgOuT ndzfaW2Zm`46 iV5p!KzQ*4D#JSI+kV`=UdJjtAfX`Chs54ucr7^X*R4;IqhIde16S?Nk?3 zBVm+W9V3EL;ow;%Z*RIVNHZv9n&UurK-c+pl7BNN{Y%NUuRk!LYrVqF7{sF#kz0Q< z=LwgsUoNF?z9W@|XLqSPP5xAC(A06G)IPGUYwBB%Za9&d*^6Clm MG&h0`4P0(Mbv20}gXdNJyu zh#VuN4#-EmjtEk4Bb)0C_xCwe204PTzBv;yvo%fLlHoXH+%G(MJyAr9o-FH>67vLq z6&ky|pTFsVWVB`8qB2qR9!UB0)R0yL*7G5)t`yf)IVM#?<6vfsE>uckU^P#ilUoC$ zikN&vZS{y)X%;DM5XC6S(r>k-&3IgkV32}I02%&M!~hmi+Sw#$hi)6{cId_u(WU!0 z(Y5Mo%p8+5!Xbz_xxM7Ft$21Rqxm5vaI?#6sNiEZjr{SRMW-_$CRE}w{TFueb4YBa zxvcfQ2o0_7lin Zz(Nq8wnQ zcDNZ2zYG rXfN^sDsUe3Hkz zC~ltTs#}E35rPl
5VD zp0W_JkV?Le |)3Nc;~227<%1G3w0M_|t3e@M=_BkeHsYHDT*eU_ zbM0jwy!$^s;1sf7F4|g6-(G!0dWH)%4uJP=Z**^0pAY!`6SCfxAXG*@ zz!JgL-tk%TS{%~Idgk(eOKc@Jb8Vfly VXna6v?KZ zJn+|NTsys%R^%-welV-Iw>PX?2WgC|g=sgv>shGJy?0`$F*lGG&TN$9@LzQgh>@|U zULQ6WBfT6{T~2 k1l4yon(F?jiwpW!&) z-NOTGugz8bj*32u?z0>ZZmH6N5O#|$r@SThd3lBcGKYp@@5M6-5Blp5Xhf%vzo-hC z`#x2CRV~UKsTwt@HXqF)Ftk>0zfw1$<`;SRC0o`yy-tpHGaf?K;noOjTl9q)LeTqJ zZrYz^YYKp&6h;GKQU@RTkNMA>Rwob2ie3YCNyEl`=N-wSy!8)?P7B$D3X}lgJ>AWg z=Yeag2d0fvap_%MJRTucvZn_Zi| Mv#N!StC2ru8%v^_ z#KtJvtn4qS5n7xgjLrq3lt=Ay!C}pk$CD?}3ZZ75)WDg1L)n_2Pt_k=7uqYHtr#nh z`57Sz%)FZq8whAuQ?hK0KN=_A#*a>YEh9w>IKMPLC68u;Fu%tWEjf;y{?N$l&^g#m zfgAx8r32_40+aP|H-W^J{@aVlRi3aEdb7^9^d$w2<53g@FB~;vj&vV3GHL~6wuP>B z-~*Euc+iOUF<$d)e}U3<8el{p)jT)Xzuo7qWrp1jl&m~j7gML-zxpe8F~S%*jtM^b zJH;6q`+E*4wY^E+);PPQQ{t7eXf;X+6U eq^!|eQ z#^UHJ`mYr=_)WGsOGdw!Am`jNrV_QC4XHfHNLKjERD2;a`y4;q_)UWZ=2VK|nU!54 zlrbAz`HRfDL@(267vO^=vz1)tV0I*lhS;VC2?%O`N}QSWtL4VPb+PDp`oS^k 3we&W(R5Fh#6ImEwY#=NFt4H0_tOhRlS+@eMrhBBzY^?&5zv} zblEGL;*AuK*HfGDro=IG_&Dbi&{40j1Ov5jqN5I_^Gib7pcyn^9)k6TH)l3CNI12< z8{ uzf%I7;&lYX~!GC-X)qVKwj$FIBx>LF`LSDtP#-r zoU3mCf-@u|<|V(1)eE?UolQ-9`+cnM%a<=L;v(!sQnHN0`~lpaA%IKjDQ68fOf4#k z4)2-8_?B!m;iJwE@7sY3ya#=&7|>5o^?D!oPsD?BNJ< zB5-6UjfrnaOYT=FP*dOsES>(=qWB{+p45%5S4)P$pNYP-YI#h-Vi<5Ha$(^zcy@uW zrSzV_DBe)GWPiLQML^Dhnzs6}t~c>^b{4Up_Mo%(HZAO2IwI!qA^5~GCnJjuv=+!P zhtK}WFzrzgJk^yX#t$UC{gOL*sF&HJ!MJ|S`V|$EIXP5QN`K4?W7oL+cMnkV@9HhB z_6kW%0?=M@*j86ucCT|u7k;wuc5~2x>j!xnS1w>h)Xergdm!Ad+5kF%i+0nciHMki zL-3q|m6edOC)82hui~xQ4)&;!MBVAKIG`UOL|Cqn3~E!g3(9DJnt|!ST$v96X(;f0 z*37%pVSNm%jTXPTCbJ=kIXH&rY8T39>es?GGi@oYSWlcH7##;j%Yv?8{lX+Mr{tsb zapUYD`{r7mJV0k^3wF%&< Qs(U#U=MiQ9O6tB5N(kMwR>^FxdXw2$vm2D5;BbryU9hgL(toRF^_Q9HH%V6)( z%brj>r{Ekdz@q>}iMU@nxg#1`*)is}_BK(xlaWl$Q(N1-N&X`*?=ajXD2Gm1g?vuP zx_sRYuV(cXdmTZ-Zh_Z(J89N;{v>25{_}`OG$eo6OOFKm*jKBw2`sD256Q=u>ObXy z%ge#ot-$ugN_R`G_J(l8yr>45yrinBWb65?R|4Z`Gk&HXW!D<6_3Ow`EUa0Lpr7l3 zc#xk<*yAf|&J33z?6>@#N(Oq{{w_%Ch*F3udf0Oa{O^}{3&Uki{w~_9*5;xv{#Zdq z$q)B@7y<$068c1>G|=ZD!!Pyx-@8b`6d~NHwyZ>aUcXb59kXv4)iI0FmT&*FZJt{j zt9MwfmzUu3g|mV}72VQcB1p&00S<6S@&<)3V(wYvusc7EOA0V;YA6&+y*Q0gmE*bE zDC7A80S*Q5JHMLZFMxif@sUJ9i$Tg;Qy>DcxFnmzy7E4c1RJOk^5C5uFI;fgPhfnM z8O-#x%B{D*%+OuNQ%r&zdoq*YCaXJbhMc^Ihynf6iC0(0^8}g9xPv>)xcb_lJTUbh zm`c_3xPSk?42HDRyDYu*ckgm&RnrHI0Q=cZz1R62hl2dI)`1XbqBn0LZvV6|bxfq0 z*E;miwO+fixwa&ONtZ)B+9|_Ktp6^<>`nTM={=T!i2~P&kI(3AO3?^TtGl`Kv|xx- zd-iXRK_5-&&crzym$5FOC |uo6%32d?L86l5*V?4HNk0Nu;m`!wEP^?MUy;A3qaH9NKR4U^a_na$E* z0NwQgTD&1V0P I#R(n(co4>NMK&z{xkDDr2d!6 ZhOc%}zfhg@%aue4OXduk0y>b-W;xkxANW%j z8LemyqPVkC&s~iZJ5o6OI_ytR>+R_CGYm?7{iN~0=AexWf|-1mdF z@4~1_{&{-S3w)h%2P*aEu%$LXcr_o07D`<$aQuF(+_ny2Z?HgmMOj7Qf*UMM-FtXQ z@88EfeGuz4!_MrYzqw|VeEQ>k4*;ZtntL96BBPq^^)d_!fDAH7MmEVU;@an#Li!cq zwXA8}*?`mU`JLy@abS9n-szYyXrX A &VV`s7mRMVv43-#Ip=GYpNqAS zlD9w68R@eOxdbTrA94ASufUF8G7P@m!)Zq>uzME1ny%%oZ1p!ERvQPTU9P20GNDhb zJcy(Id^Umiz&pQnI*L(tPjgsV&9Wo;cRr}!P|y%Yrp5Wg)WBk+6B9SpFIhW{)9V?o zRkW|-zBAZ v+`z*t~91(l>L_rRvdN+%YN)Q1NvXy-9upT^-mfIM(d;k4Spy$R^}eFpzvn`{!I z7bvc3oFj?*^zqWim5PGIe4= 9 z^hb@YDHqi%_&k_XS4>>2hOl+O>9@-OV3FD3Oq>(Q0CYo7(=VDkv#`idt6UK`-|y?a z^3ssh@axIx$F-ai&xe1Fe9)NdW7>~R?&TmuxE1DF%TJd8WET+9#0C1YnM+>QgOWmM zBs(ZG#scCb_^vDVC?JZeZJaAIosXG5ta|`=4klIa9Lp2JR7e+n4E}dOg>r~*I_d#h z=tXW|=(h!C^W#q}*9h5wn#!^BAOKFeS!YY#=mRX(jBX#B*A~0MbKr9!z}SD;<1K2> z2p*6xEaf8SIyELZ;?RJ{cJblNtd-l?ql!mNi0}}2z{Y62j{wGfJS$77Jr#WV_?p$I z#Bo4WVyCR5uRwsr8_bY1PM+2)ce4r!e>xn)H1Jg>^O&W$xXN 5Bc-{%4-o1057DcI?ouce9Iu N^1=^j1*WU#K2bHadRBvQv zE+EsE*Zbe~b>Dxcfy6exC30-;Yt7Urja%UJNESmq6Wt=%m3#m9{{P?m|9{~9{~xSc BmBau5 literal 0 HcmV?d00001 From 0eb459e045b78c7324bec59a1297c889811296cb Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sat, 31 Mar 2018 16:50:11 +0800 Subject: [PATCH 02/15] auto commit --- notes/Java 基础.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/Java 基础.md b/notes/Java 基础.md index 2a22ec39..ba6cdd13 100644 --- a/notes/Java 基础.md +++ b/notes/Java 基础.md @@ -503,7 +503,7 @@ public static void main(java.lang.String[]); 每个类都有一个 **Class** 对象,包含了与类有关的信息。当编译一个新类时,会产生一个同名的 .class 文件,该文件内容保存着 Class 对象。 -类加载相当于 Class 对象的加载。类在第一次使用时才动态加载到 JVM 中,可以使用 Class.forName('com.mysql.jdbc.Driver.class') 这种方式来控制类的加载,该方法会返回一个 Class 对象。 +类加载相当于 Class 对象的加载。类在第一次使用时才动态加载到 JVM 中,可以使用 Class.forName("com.mysql.jdbc.Driver") 这种方式来控制类的加载,该方法会返回一个 Class 对象。 反射可以提供运行时的类信息,并且这个类可以在运行时才加载进来,甚至在编译时期该类的 .class 不存在也可以加载进来。 From b8896a1da1038b95c34eecf92874b1b8626ac895 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sat, 31 Mar 2018 16:50:49 +0800 Subject: [PATCH 03/15] auto commit --- notes/算法.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/notes/算法.md b/notes/算法.md index fa740d34..a0995ebe 100644 --- a/notes/算法.md +++ b/notes/算法.md @@ -567,8 +567,6 @@ public class Shell { 归并方法将数组中两个已经排序的部分归并成一个。 - ![]()
- ```java public class MergeSort { private static Comparable[] aux; @@ -592,6 +590,9 @@ public class MergeSort { ### 2. 自顶向下归并排序 +![]()
+ + ```java public static void sort(Comparable[] a) { aux = new Comparable[a.length]; From da364e7a62735b7e54a9809229077beb3467bbd4 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sat, 31 Mar 2018 16:52:30 +0800 Subject: [PATCH 04/15] auto commit --- notes/算法.md | 2 +- pics/61f8292b-eca0-4f46-a1be-f18d1e5c6fa9.png | Bin 0 -> 15360 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 pics/61f8292b-eca0-4f46-a1be-f18d1e5c6fa9.png diff --git a/notes/算法.md b/notes/算法.md index a0995ebe..41b62b2b 100644 --- a/notes/算法.md +++ b/notes/算法.md @@ -377,7 +377,7 @@ public void union(int p, int q) { 但是 find 操作开销很大,因为同一个连通分量的节点 id 值不同,id 值只是用来指向另一个节点。因此需要一直向上查找操作,直到找到最上层的节点。 -![]()
+![]()
```java public int find(int p) { diff --git a/pics/61f8292b-eca0-4f46-a1be-f18d1e5c6fa9.png b/pics/61f8292b-eca0-4f46-a1be-f18d1e5c6fa9.png new file mode 100644 index 0000000000000000000000000000000000000000..21fe3dd820b3a3090436eac88be32bd911174203 GIT binary patch literal 15360 zcmeHuX*|^J|F5MGS-P{73GIa#5{d?KtGfshiVTr`Ez4jGm90&>EBl_1bz~Xa7@;WZ zSjRq1WgTNC+c0A|*XX|Q--C00|JOMW&hLL7oCi&>xxUw2*XO#vpY{EDdu(EKNswQX zpM!%#@bVwOn{se)qB%IY?D%-V2n;sQ0{?OPnqJc7DCs&d3%=}dzHs#d2gmzZfsNZc z!S`K0f86xt;1FtN|Kn`+es_n1L*w}6-!EJbgj2?26U0_fTR*8X{qwFxFYgrIKjbKU z^|`%xAJ@Y@husxQ53oLPg=%1E02o=Sg^R!{G8)<#Y*jU=sijBPn{aQv~G zw3Fixq5tql Ba^}K zS~q2+wLjqIEept{)uFkY1adTk7T?~)g#`6wW^T2rCAxmC;`W^9PNbL#R>upL?;9!k zTKoOEW^!l)CTv`-wMo#bNnR*I;!55H1MXs;TkR4qj_*CMX*#$O49^VJvRr4KANdQP zn8ID16;7x i!Ay7Yprkn2(xZdUau{zNbt z(!;Y4iBFF59bIm{W49!Dz5Vqhg3)MVNd0kFXycs;lVP7- i_6j5hatBwxoQWngtEzh1dwfIe{q`%O16>$-{{pOyINxfic_ zlq#<^#`W4knq^L{B0T68*5+4OR{Gm_ad3-(k mwryF+>wO-`u^-#M1 zg}^L7+yk}23#Z~ZPqpZkD5fFX=~*L1u;iglyZ3zPY7zLOhf@3I4({4JCMK1|Ja?PPR$R-W@T48W zioEu2etWV2m8B9P@o>@ewWxk2)GvyrYl4e;`R3hfWS0n>udV8usptR>zrRV~!n)d( zCvQe1H1q-wog`koeC;|@*O?ExV{-JQ>=QTJncbww%n-;i{c99~UyEn|?=N0>w1GKJ z?RaIZ KePXTQl~=TMA_bHI*+wpjGMv?T_M8s;q|eLhiY z1jvqXlYmQJUny6FV}~~8oweKJrOw?u3VBp{Yio|Y0k)CEYtd`E9dDN+s1q$;#mxd` z`9fC;ZB-R~dB1swe1}{m%4e_HWGDdrk^8c?7Kq{8Ehy+1ee8FngZ2hV7}C0Fu2FRM z^y%KU+Bs4VEW)2W=%`(|>2LhRy>#FnBJ*k1n9d_vY{<%dd3SP+@3fOAYp@D8i85?> zLiG3DzWNZ-%7{BUX{Uhropv#+Dq?8e&H7;fzPqah(Ft8!Ho>zw!`%fLMAklp<`@0& zXr4XvAV&*1(n`DSW^V|PwR0q&{(2%D*Sb=;W~0tl &Mlnnrs3OQc0o&SMCffbNbT_h}X! z_P2{Ss_4$p)@H)fnxDeZ!*PnAO8e@}tH$mbU?irH9@ov^(B&yw-p2 znoJLU Ls><(YfTaz4O`3x z=XPg}8ry(RlJMG#bI`3tXnBAuW^Acjn~J)1^AokU1{izc(REs{Ul8(r?s4}S%(XYo zk8QUYg!0J(aMyFBXqm21i=C_5o8Psako?50O*(|Y{mF+CYyCbdf$;_BEe&pRUMbCb zWJwkYeMVdv295@<+3Qs3E^%oih2w *j#5Qj^-5GWKPA(0)~u&RDNYw+KH|l8zZ@?P{J-_l zbJpjpPBzAyIB^nj?ujomX7l#}5%|eYQgd|Y!gyULV};!L^=sz(P^;D;X89}(-rcu! zSDf`&;}8~)0De`y(4u%zC^s!0ehF>qynJHr5lxp^0l5QBtom?jb7Qf{3+wNjJ%1WS zq@OpJ; eHDFtBgTw{pAz1Jxv0z>|Gq|kGTyj zi KD`YAo9>s9@%AXyF#auA{8nDhO5L=3KkhX?<0n4dX_H3rFhDn_ zyVF5{RylK~e@Msw1TT?eh-#|ok+MB)(p|y|EOZ_$gx4<$$bNPk+Gr8#eJJj!=WO@l zU5QuKd*FP!txJ@a8>=-*AvF?X1!=OG+U?mo0o|$vqC;b!j)Jt~VfD8s@{$nyn=0R| z;xx^SD2AM@n?eirFNHwDPz||V1z~*eKA M`bt!j_)a@IBK_owkA zj-&gSwpE9iW*6e9?Ox3Wai(G7jW&k8dVyK)$;yuE=Q~RmJu~$UkT)gmC=>BgArit+ zm2T|DLPe{DLS;Kfd38Vh5VLQUI23N|gxV*EHJ$4|yr{xo^YrotAJk8w->!~|m-U@g zRaX@( _P>y6w>C`GkNzy<<=xO@1F--^A%dqYaC zpQNX-v~$FxtzJuZb^pCAMqe?W1O&u w=}=Zr&ZH z0_Y*8?{RRUHou-w2 kqqj551;B zTfdU7&D~%+3@k7hV$=I+BIdozaA}(*oe*R*=Hg&Q2=XUnV05D`uds&s5z3b#q{xHw zQMq%gGy|; *0A-VZh1NESp7|ilfQ (Ceow(wyp`jsrtkXq`!7kRYW_@*hSA3dsA$hNV+8e5}ejCNz z>3|V1qJ0Y%BI4``{80LaWz}AXG1`@NT^bxDvHdifk3;y=S*^QnmQQB7C-|h`3u$(` zI})DIlJ|p@bj){GL77uqjmo#{`ROW|+Q?=K!K*u{rg4B0q*!%!T2-Y PX-Y`|H}*yPDB ziaMiQbtPPIw;0e%Zc^k)*B6zL_nWZ`_zabHnSe>f<3EA7JjOFxI@6sr3FRULomjB{ zO}$CrntiF@(@hVyERi(b*ZVwxdOq!W8@F*s0!%pZ_k>f=!Gs5YPta_&G5mHh@X(dr znA<%W<=L}yDmENlHim7Ws`)iG?kZuQCYmM214L0Ciqa2@0^a4@g})!yXTeTd&skb8 z+*|%<#v3<2= Z@OpUQ-44@X-zeA|j|t zf1S_xI;eAhZTjD|WEZIWI~1zMUJ6zKf9 |%?mA5n+#9}+K2r? zMT=OY-7ZJcy~;yb!769Z4(+?+EC(}+B`ht6;A7vh%jV&Ru&_Sq3+g$99`e8*)+3F> zAo5dqMg^u6l%8rgoG*lUkB^
#5#^n6dj6MFBKql~9M%yd?)Xm;AO6ls;uck)O zTZNx2pFwo}e0|F;)82*az zcm9s>k3!iI9=|u)i6Ru3+%pB)hqSRmk3R3u4eN`&F9WREN7&a@6638iZ&}m#VW8wS zetY<9OKU46Jhdw!B3+Q+>dIOOf>c6x0tqBZkzb>tq9nOf7iPXf_?R|s(VnkH61W(9 zTw*}MUYj@| {TSM#z~buwGMm(D)<_MtX `mR z+zXNlw833m7~0ObM_)6TXcf(W&Db-b4_x#(vrEWD@2TRVP>4SHr}Oh<0g2tJk(Q4* z%<4QK4)vC{pF{l&P|nQvDKyg@pdo6&?^a9n&n>+P35WNX2FAeF?tCYwc-5VN_^qIs z)kX%CGS6o#x}z^xF74xF{ylKn k;-K7KrH_$<|UmfQk<^#8xT2n^pR=3=ai(3mSGr| zn(&elNH*A|TWaJhRX_04$S>g{grHUPnT5^p8@ zYG1fe&HdA(z-St~h%8y3n-b>i3d-^TdC{)@aD*4CTK4U{&KL!RbAJpU^euQPN}Yrg zHuF-;PvT+NIH=%f++Rsa3>jNXZVidl@JReiL`U8;=IV$j{MTgR5-;AdTH*6M#7($k zCgBNhS99)%?yv$bbqv($4)>qlMjvXZ%KUp2zqh%$Ip#viyfN1x!_&I|Z`DlqfmWEu zsXBC}?a#YHd1%GhLjxMFvf$@EfU(&-@!-8>&Pom0*xyQ>#Rt;fEa&4VPNWDSXG6ZE zKMtSZJniQSTUg&;sYkiI=huY1MQ*g)9ltz8=5F&~6ar -+t@I@20H+&Ud{(*oi> z+WVJJ${`fDpYa0T2GkvAC_F@?g066dZ8v73adiiN{0pJjTHRAux3HJJYV6}3GFdX$ zP5`%_-LT;q6BDD_X7hY?Z1ar_+t>fE0J{Iyv6qOiA2?N%l<@D0t*eYsCltN0KcjA9 zJZ`Rf&-X`rWhmO>#!}A*-J7eMG?+vv<{4+GLDap@=;`TQ-dHdL@zC}A_wQH3A8rm1 zlm(q6msQu?UtGP-VV2=mI*{p}ukGMk_pqJC8rkfuIw!8?vI||x2R+&@WF_fgv#ulm zYQ&yyWe*Txqtvs?D-Goywym|%d) _Wb>PipFxzgR^R@siuaW< tzDR^c?>3)x@UWW zMImRS(4F^b8J8V7%2^2j4{nz^#gH0pPAZnm35@|terNcC8o+~b&nHD*%E!@6Io_&$ zzyw1-9*!fT*vD7U#VYh3f2lVb2tYjqp#0x5YazxO?ID-+1t7 zhSx7VxcEl%;P!J4jxUF>|FI8|NPx$UVpj&OuMtwbakDnk{{k=Op3rnfLm kEfebUTpH#kjat68)TK!^R9Im)%WT@=005orIf`)vi03{w z)Lmc-Fwl=18`Ijtp?$>K!`R>aHrDQz2mZ7NMq^h}x1g~!O56;X)9g$8)ml+T7O`ys zAnE1#EG9jr5RDs21)%hBH`b-+@Y2_C;be!_=Rq>I7e7t30Q7jkW4P>?d%}qGXtg^* zaj6C39hhNuF^5)X!CFjcI78fAt?I0qPIp(VU+ygmL&c_e4v3NBGKm{g>Qe@`3{y;F z=u!$X^{#h;5vkIfh|A?9#Pg^NVwFQW^!YtETGVmM#V8EGOS1W*MHxTyv|0JX*r4+D z i__-f zL;LWdcc1{UdebNEd{A$yhQFKJ>?J>~`HzqHPPJ-pz7L{Q63VEAL)bH!ZgvCRY zsQn@AZ*TEdpizZU_5iRd*r?qbw?5UvQ&hXyCf_+XP*}cYc@BI0_;E??@=fmq_soI& zg_8?9mKSsI7j0*ivQV~y0JaX>w=PXUUwJR%xwaQh5`phpj7$)cnKOwUf7h_~3F-uS zhQ!vlkybu%3*XVs4uz))zi$_o(s(U(v6tR2v*63Hk*(;lG(P_`V*h~y9V1l%lo1cE zht#{Q0#W9lH2zrHl^0N~pR`Vxn0u0LN4fxW1s&$8So7nhN03yLeAo>G?ns{9C}=$G zNllEGYj60f$NWSGHfX8C%osL_^3ayA486YXXn O502LKZJm9hf$ i6FW_jP;n$5DoJio2PLR%~ znxDgNl4LdyG54#QGnmA!P=^|zPxlxTpb3|p-bcNX6;nX44I6*d@r2f&tW-w(m?GgeRPdf0{YU72 zpg;cae5Sk7ZbAmqucoLuhV5RLwzdFi;rh1s`t64Rx;a`nWqoPdx&4faAz~a~5yVmr z27MRj_QC`3T1wXwG5N9#-_B&!VMngo$U#B%u@?$`q_<^sX;YW%L2u!Do6z;ishk9O z8;^CBA0>fW1FoN;Y#U)27-9J^gp^}a3*1$?qg?05-izm*yHblPirPpyy~PifEvrH; zt}3pTYctE|x2$rh>)`B9>SMaKm_ F7HnDH5xm}gYQJGuX%XqzOV~T%>At7Rh7@K0bDB2Ygf+9{5 zlO~y8s4a}*QXJI$%v@7z8;<8uld>|M-NLoL2CAeS`9@|JH1qneww$>oNHD(s>bd!Y zyqo_&G)!9^^+u|9B+9iwa8pm!qVj=Z_6C>%Y5rTYnE!`2$2S32C|QYOu3oHZe~?&B z?JQ_;-UYR5`>zo42cZQ^$atDAg+go~7Fkuc)ny^90AwwVH^71)_ur`F{Q59RpyOLN zw0o|_T3x+Ov5$`GHrr!AvvZ;xAl2`3*!43H_TSdeoVs6Oqab%GKA;^scIsx?TUQ5| zch`x|O53`6S_`pYIi&tMyc>loHYV?M3a1x=a&-j%Wp?8-B}aZR(K&1}9nqZbIlHo4 zyAWIfKkk=lhIO_+f;AC%_3BmMX0X)$@!9bgdU0@~O~xQPfJ2{_o(2-0wsv7Ijo-`I z5czjOHbnkM6o=j(tn(=NWzhQY&C!6Xf$AghxWVZXTMDOB6A}Y!5{S#qZ& `4x`7FkLxMW|4HRvIc)W>2cApJT2*kO;fKuvd`p=`6ilr5hTf4&=N7}ZIwSQ_a z4eSm8P|dN~=feRG@=WXn+}P6#14cT34R4pwF~vp0R-lCbloP-O z8?v1YZ;$8UCH{iBKf{FgEW%QR6|Kj4Zg^}@{to|<->tOh`AFXYf~_M_rNd;I!9QuI zmpa<1M#zvJQ&4Kx*zG?=Ea!*T8;_$4*V2z+P0nTUJVZqsCCQ^}WJhTfyUZBd@cVTh zYWjhV0PS5gAJDD_x6?H=bi?5YdCF=( D$t-p0q5O|?Q1$9sSofs(H1@u 8(*J0&aRvBC&o?)<&$8epqm!=VWXnpvE#GD1| zshvMRHbiUN^s_1^V)Q9oA%WfEpd-;c_Eg*4vGdzKXZQSSrTxXUbOoSRlQm{9%(pdu za9iUuW`DW>{Y3%|^1gSkY}Vx2a}qV_?98}}Uc%t_bQKfLerdbozl=p-y-`Q?bZuYV z&nUTiTpdoE)u(-|+T_M=>Tu%L&|$0zq*iA1>sPzJmKwiF^G0XCzbth^0E)$r-D_7c zE9M-LXTl&$D0SdZo+y^G8~&pef6j?~u`H2MMrLSEjh8-+Pj6t%30{r9b)7*rCs$4@ z^C|i1Qqwl1Z!}DlD+8mIUxg0Kqp@YK4wX5A>kCY}sI=&Imv5 Et8&;5w|_6$}!yK=G`s&u#Pi<)y&Kj>$wBFMp}7v#ax^&Tb0gw{Jd zfKq*N%zELS-+AICq(dEoss;#7DFH9B=G!eo!om*>*dXS*P~SnV`q1tc;0SYExjVhF z5H*iP#zMz3;axF6k$}h6jPrh~u;BYhWQ^|gj_y&!b|9VV!~-@a)d<0E2~HkS0CT*w z+L=($p?8eZWhP>$!*)RW2yXmQK3k ^^|r!gbw0znaFu%8gHSpeT!CoIDj4H8jRJHPksB (wntVor=y6|Wv_npqLoCI7mU|tDew^N|>PzKm- ziq(j &GKr#L&s^QVr zTI`mREo;uQeA@e09=$nfyLrqSBy5`Ud;8N&_lefy^u?O}6>tGHIdlP}&4&)KGm$w# zFZ-&owXxI*Y9EctiYhpgqFQd($h8y+4Qbq%4%>9b7~U=eRn{rL#Y(pUId%bdCwA%D znv{m$=ZzKHEr0RA)gZt 4p*v~kp0$u~{{#F^V}t}K^KsHB~8qHFC&6>g IX|)Nm^F%f`VT!m(A(mzKoTg+|-dp@} zxjbZj@uJIcTXcd8)%13;h*{!5T e>;3hgv0)w)!Q^7s z*dBNCI)Dp_Vc%oa%Ua1kwxM?G!`-3rJ74moZ86YW$yULuw4AzI+Do8SUOvgFGXLN< zE^k@Vv5FOasP-A8s2NM_I?q=4Rm+uz!j0CnYO!|D#CgA<$V4ykjj0sx h7GCZd~VdEZR7}N`KY12IfIVp?2EM15kZu;rN)^yE#WZw*C z>iVp4n8wP BmEdO0UTt++6kE!pPD*{upQTnI`%1F%Wg9_7yY^GvA#iTxTJA zM uG^v3$=a ~?SkXHv zH7Dr)s^!-x_{9_HfrqV+dwunoz}C2WQ!=*JGxF-Y44*_KI9bdwN38qOZ%DDaw>Dyv z)V<+HI4~Z=FBL3JhI|c`i4kWS=;k>{JZJrj>w)>3o762W0qy}JYn g#sIF={J=R^~trqBo!h 9D>a$t=aaeNo#TS?z$NV0`D!5O{OdykSY`!?jZ#Zl}TYg4jpt-9s01e<`HN2&)) zY&0v+c#eE8)831;y>IJE^8fMq&-oJ3fcp(UUK(_a)%bRPlCVux5ZDiIU{Smw)0pdk zW7np|4<`>07NnpWyP!L}>**6I3hmu;e$HpzV2qmiXZi|NhqA-OG^`ekj=u-$G;TdG zk-o~9v$wZ@qx^a6r_9z}hZdK)Atu)dIHBKJYR@GZ&)qW&I^bQM-dZ-^dX17gjs5*l z=5TlbirpBPK+(tZFZqkZ-?R?Zr*8puO9wzXvC@&j7fipKjDv-3Zp`0`IWGO9QUJPh z$)8}8fU-p*{j-)HF;GJ^Qy hj;l+z!ZJ2A`np;4*^1N|6%yqVKnO49> zLCxM8^x*nvbn7mC>Pas=VZjs)YY1Zz!qTj)Q0oFO{ViE?_vkpkAqeP%S#pe|^m%5B z>ejvr>B%2ixD#VUuU)>iGyP%VD}Rdz$O~mcQnd+(uRktXD$_mzv>x=7E`PCoQFIw% zo?9QpEH9()Oa+Ch?1DZv`M9lrZEF@QsFH4;x0L+B5I~zp!Y-8IO1KeJ`S@6W&Nk3^ z+P|>#i+{4#!UAe`QD_y%(IoKL2l~h0IVe%}u6fIZ1iJyZyeM&Ww0o{#?|69+xI`3Z zgv4)| {332MZKM_SwQgt6p)Lwt3{Y6NM?d*paHQJ~sfZJb1O`ocw{>5xE*~w<_rtBrd zBN>7FDc6P?&)J48UkdAAYuIjX2Z!4HpyS{GY|uqbTi7s#1^^@YOfpwVZ1zvV(qHT* z|Mhybh 6J{(RfS7 z#u@5||DqEr$q+gVGHlzKH{XsK#Ges-Io-Mbwr176NrK2Dx6rc>91xs9DoM$xsi1oi9Cv0B+OnKn=ui!A`%p zO+Nj&8{iqpupatqBMlG;n&1 ywV?|CykLOkh*m;Y&g&b}EnK{+=Y_)o`=Uuc#e#Oc8R+vfP4z{&O~%PJ%s08CZ= z0D&n05WA9tgF{TC!bjCB0kp~i3Ou2$-bpt1rf(M0NK6B3Ptok(%kEi9!2t)d`7y3l zTmivhfpqxOD)3W3;vHa1G%nk7V8q;}4v ;I3+#}LHm@Dh zXfqrhOBFJOVU`%xZ1oJb2^m zS8|W~tVHuqCQnnDTuxnE-?mci_~dNbDgEnRR!0g*sPWX|3CK>&nEUI0smit*1t`y7 z_(4DL&uFlHU|_ZK*Em-G2df6prz2vT3?Ub`;#W(I7qlhArn_F6<@nrHK=D?v8<}JI z!~!;fFZ@?~KciRF8yFL)MADN|Q#~|x 2=SMofb~lj&D4xTTUU9F{D`ms`O(i{ zc-jduzfnZkPl>SGfPc~SO!sIsP1mnN!p_~pqv+bgy|o(D^|w?nfV`i=d(}+F=O5FN zZFJNpx%*y|lSzt6LmvWiT&!pZaT37FL-aSM~E8+&69T&Htgw_V|C z9 @R@dID2=I3k4Lb52lnhN=y7&W+GMHc0``r{&)8CW`pSpHP4Yd?80UVr26Nr)j%@{ z^piAJ{x~QN4&j^3gTCj@n-hEKJ<|5bkt1dX4+2Ht9JzPBA*!Ij@MSE|=2JQD9>j7O zE&(ESGRVr*xjeelVP-_mZ#sdTw2^uw;s{ps4*!{h;s9GkzdB*;6usN?{?9{kz`k~7 z9=keNO3Jx>KnF ;~UetU&+v$cKQ1v2&H8CnZQb?Jm~xbVL!F zA_Y3x72j19?@8h9(G~;x*$U3p 3xs$D>s&C0{q?l6at|Lgjr)6O^vS(II+4!PSXz@nIjy%yPfKp6 z<6*Fl|JM%>iqyO(JV4K^c3$NJJFwm;;bJ_daVf >Z`Rr)7j3Kd!8Op`(Oy+C$HSwZm%V6j72-+eazc%#-nCTR5p zHK^GIlSAku*OGgJlkg9`*!l+kUc+egyCi@-1v5-?2na&nN}<#T5AZ1FN4P=s%Btak zWga7ToNRuyV_z*>#a{jjlIkwO=2jVXp_ROef?%s%S1l3YdMex~&OUN)@OXeyjC47B zHc48s-!H(nbh&VBcG*n=FAL^!(z7@GCuEn4nv4v{i0-g_l+FooDjqgL=t7pJ!x~o( zF(+V1?XU4~e%DF`AMabO1z{0a9k@U3Aol)~KAQ _%;-Tj?6cA|n-vhVtyV7TGfXq$7 zd*JHh0mkBR5Nbhu>IL>0$!1PGJoItJX4NN)%ixgsVeA;WKJo6O?H}ky5&j|+x9J+# z(hp<%;hB6uj8YSlW4CYqa+m_ZrjBn9Ok>A}BXPa!Xn=hNWsH`bosJv^XXghK%z>re z?gZS}dBNCWi+9aYAVeJ@1ZA ;WD|qU^D42 zfv|n_+I-Ah`q!iBpsXkC%V$$r`5t>gEriS$R&3m4@VmfL4**tp(d1((J&s5=W!^Ue zr@OjaSXjO3&AjpTZF-GjrWsgx@50V@KvI>iRoQKREAbgyO3Ax Mr`~Q#H|Nj8g#DY=) literal 0 HcmV?d00001 From f70e591511911767c167473d6176e61106fff195 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sat, 31 Mar 2018 17:46:39 +0800 Subject: [PATCH 05/15] auto commit --- notes/HTTP.md | 2 +- notes/算法.md | 27 ++++++++++++------ pics/33ac2b23-cb85-4e99-bc41-b7b7199fad1c.png | Bin 0 -> 10240 bytes pics/5d4a5181-65fb-4bf2-a9c6-899cab534b44.png | Bin 0 -> 15360 bytes pics/72f0ff69-138d-4e54-b7ac-ebe025d978dc.png | Bin 0 -> 10240 bytes pics/7a80661f-115e-48e0-8a79-837ef7d436c8.png | Bin 0 -> 20480 bytes pics/8f0cc500-5994-4c7a-91a9-62885d658662.png | Bin 0 -> 14336 bytes pics/a01243f1-f5d7-4bee-b16e-1f921d2f58e8.png | Bin 0 -> 15360 bytes pics/b84ba6fb-312b-4e69-8c77-fb6eb6fb38d4.png | Bin 0 -> 24576 bytes pics/f3080f83-6239-459b-8e9c-03b6641f7815.png | Bin 0 -> 8192 bytes 10 files changed, 19 insertions(+), 10 deletions(-) create mode 100644 pics/33ac2b23-cb85-4e99-bc41-b7b7199fad1c.png create mode 100644 pics/5d4a5181-65fb-4bf2-a9c6-899cab534b44.png create mode 100644 pics/72f0ff69-138d-4e54-b7ac-ebe025d978dc.png create mode 100644 pics/7a80661f-115e-48e0-8a79-837ef7d436c8.png create mode 100644 pics/8f0cc500-5994-4c7a-91a9-62885d658662.png create mode 100644 pics/a01243f1-f5d7-4bee-b16e-1f921d2f58e8.png create mode 100644 pics/b84ba6fb-312b-4e69-8c77-fb6eb6fb38d4.png create mode 100644 pics/f3080f83-6239-459b-8e9c-03b6641f7815.png diff --git a/notes/HTTP.md b/notes/HTTP.md index 37d723c9..a9237977 100644 --- a/notes/HTTP.md +++ b/notes/HTTP.md @@ -172,7 +172,7 @@ DELETE /file.html HTTP/1.1 > 要求用隧道协议连接代理 -要求在于代理服务器通信时建立隧道,使用 SSL(Secure Sokets Layer,安全套接字)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。 +要求在于代理服务器通信时建立隧道,使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。 ```html CONNECT www.example.com:443 HTTP/1.1 diff --git a/notes/算法.md b/notes/算法.md index 41b62b2b..42954122 100644 --- a/notes/算法.md +++ b/notes/算法.md @@ -354,7 +354,7 @@ public class UF { 但是 union 操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 - ![]()
+![]()
```java public int find(int p) { @@ -377,7 +377,7 @@ public void union(int p, int q) { 但是 find 操作开销很大,因为同一个连通分量的节点 id 值不同,id 值只是用来指向另一个节点。因此需要一直向上查找操作,直到找到最上层的节点。 -![]()
+![]()
```java public int find(int p) { @@ -654,7 +654,7 @@ public class QuickSort { ### 2. 切分 -取 a[lo] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于等于它的元素,交换这两个元素,并不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[lo] 和左子数组最右侧的元素 a[j] 交换然后返回 j 即可。 +取 a[lo] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于等于它的元素,交换这两个元素,并不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[lo] 和 a[j] 交换位置。![]()
@@ -721,11 +721,12 @@ public class Quick3Way { ### 1. 堆 -定义:一颗二叉树的每个节点都大于等于它的两个子节点。 +堆的某个节点的值总是大于等于子节点的值,并且堆是一颗完全二叉树。 + 堆可以用数组来表示,因为堆是一种完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里我们不使用数组索引为 0 的位置,是为了更清晰地理解节点的关系。 -![]()
+![]()
```java public class MaxPQ{ @@ -760,7 +761,7 @@ public class MaxPQ { 在堆中,当一个节点比父节点大,那么需要交换这个两个节点。交换后还可能比它新的父节点大,因此需要不断地进行比较和交换操作。把这种操作称为上浮。 - ![]()
+![]()
```java private void swim(int k) { @@ -773,7 +774,7 @@ private void swim(int k) { 类似地,当一个节点比子节点来得小,也需要不断的向下比较和交换操作,把这种操作称为下沉。一个节点有两个子节点,应当与两个子节点中最大那么节点进行交换。 -![]()
+![]()
```java private void sink(int k) { @@ -816,11 +817,19 @@ public Key delMax() { 由于堆可以很容易得到最大的元素并删除它,不断地进行这种操作可以得到一个递减序列。如果把最大元素和当前堆中数组的最后一个元素交换位置,并且不删除它,那么就可以得到一个从尾到头的递减序列,从正向来看就是一个递增序列。因此很容易使用堆来进行排序,并且堆排序是原地排序,不占用额外空间。 -堆排序要分两个阶段,第一个阶段是把无序数组建立一个堆;第二个阶段是交换最大元素和当前堆的数组最后一个元素,并且进行下沉操作维持堆的有序状态。 +**构建堆** 无序数组建立堆最直接的方法是从左到右遍历数组,然后进行上浮操作。一个更高效的方法是从右至左进行下沉操作,如果一个节点的两个节点都已经是堆有序,那么进行下沉操作可以使得这个节点为根节点的堆有序。叶子节点不需要进行下沉操作,因此可以忽略叶子节点的元素,因此只需要遍历一半的元素即可。 -![]()
+![]()
+ +**交换堆顶元素与最后一个元素** + +交换之后需要进行下沉操作维持堆的有序状态。 + +![]()
+ +![]()
```java public static void sort(Comparable[] a){ diff --git a/pics/33ac2b23-cb85-4e99-bc41-b7b7199fad1c.png b/pics/33ac2b23-cb85-4e99-bc41-b7b7199fad1c.png new file mode 100644 index 0000000000000000000000000000000000000000..6e8383f35e5e2aa044b8ce500f1ecd59295396be GIT binary patch literal 10240 zcmeHti9gia|G(;%t{b|yq=adAv*w122}ww{%65~XNK8ofWd@atq%lc|#!`a`8O0#m z;EJ(NW3n%k80#2W#@J^3&WwBe-23@_{(oY!SBmEcYs%w-4{-PA6tB`7@iZrw@XffKfZI(HPsamc!&OB{l<3i z_xE=%T=fwU5UJyRZy|ZUz9}GZw9)9iu4SP8%-}|hoehUHM~3XhS`|iKcXT_HCzhgO zRDaAWB|oL-!*?bfJL{kBtv%M!Cg}KUPs4mIXK&&4tC`L^)$bE7hMkJ$KDoEI`uY#w zb2Ambn^p=fgV?{Q8bQor%6weLFbJ~70
ZG$n=1>=(|XKy!ZT{&w;J&%o0{nc|wer#+E1D$%EMRyH4 z%h-HmfK{bO&eZhlR220Tu|L{stqqDJtcJ4JU}TGTdPl8CrBCipq>{BNtJD`iFpE>d zhD{2Z`+cjYgJiw?q$ToC`p -O!quN`p`b! z9M7m!(%7SEopQ^{uo2W3hk!6u!lJsCJ=sSAjfphGszxveD{L6F>ae=@66afPUhDni z64i~nWVIYxDD#Z@V(onK386AWAv=vh&7v&z4aU2Mw$6->grnGHhZTdl7#i|3a?62I!Wo5byx}zcx{2@ofuq~;80ny?vvb20dF>7GfsT2CU4^u_ zgb1o@Z&}zzC=HsmAYP#1a0;1_=-G{9xk2xhJV9jEBv5U}$QlQaJ7m%OS#i`;u7vFK zellG)lE!kSsY*W)ji=u^ bdN ^Tuq~=lI4`D z%D*7Jc3Rn{!>UUJccOqjofv$je|_)X2-$oxJ{_|Pyx8t5R4^FroBeEB|FAE-${(s; zy#H_A5U)erHkyTt5_|}on@9? zl13h3U%1}}-<5tV!HQ!UgE5OWkaLQOiK$A>ns&0xbyk{sJ@Xy%Fn>@t>6TTCee1K$ zK~bU*=8QZn)l2m?Bl)*Jvl?-4^xhtfzhCxnMxo20r_?5jtMi+I%a$X^koor1YB7hf zG52>t3uDBNnQ|Jd@ !s~3+^OlRe%28SW-DSzN`7dS<)C(^01mHc_89#V z_?1^~YPhJho*8%F6zg7BxJDRfhMbB%fFqpoo)Sb^XP+Z}e$9w!e?Q9%s=e>YPhA$J z83LZ{+qW+m+VsBr$6Q1$r6Q;*FJQ2n!0?MuFWRonE66e5j%gR+)v2#6Nc98~NiFQA z9>K+fR9jAnW6IZ35<_Y!OIzbXK6G!R_GzT<;;mNwxhG(0BsAiWA4HHxc}d7AFlb@h zM5)+vLE3ZkovfsLHLk5Q@^#$b7r?#V2yKo!Nphv5f$xVM?ly}b?Cc#M|MiT^voG5P ziJ&NJ#-16-g{jyk_XTRb9BkKFu4^WKet(fYsf-_2JLzFlhO)!`WingbB^6~xmGFJs zm5E9!iNUPuViVqZ%UoU|o?CiP!ab`OEBx_Mn-~w?M9$eA2z_c0BUiVkk4;bxT@a=| z&6hs;jJ(!ZjB9bc)gBh1xGY{j7TVajph$9Ow;`A9#}5xA*#WO0` J{A6)@hDwV75>R=VfT+6OItSG z1ObPy$RarM{M3ylCM6-Drn_dDd9zc+A@??uhZ?rXpTb=o{Ui!-@vSF~I23z2VDZ^P zL`HtcYKsTOf6Gh$s*8*7G+efQvW9a;Kk0y>*Og*%Q&T4Lh=znmF`o|~1LbGw)7N?6 z;gX4-7|#p0i#-<6R($xl%!dyh+%BvzA8dT-#d7Vpezt^%_=DNNt~}|r!Q}`;E>8!> zWhL~tiwn}SSUn>a1gSphLn{24b4N0nZ|noq^m({Na*ngu0C;x6&&4{mI lN>9CQcY5EZZ7iQQPr9-C1 j-Wb z;IZ=Bp55WMNp;W|5?iaxnij #BGiyL-Oed4D-rxgWJ>wso@M|D7PB@?hKW%gBwFB!&!&9~_AaztB6f<7a@@Z2K^ zdnE__K7?C&NlE!7FE6i3%4pWMFFUo=P6s^W^|?d1pjY785+V?W%kq%)jaCGyzlRx% zHgJ37DkB?k$m*KlRco)0$NSDR K)_SJwwD?;Tyi-Tk~!ok+hKJQMem==xZW<2Zvw1_)$@ABq5 zPzG*7mH`q~h)25aVRlb=4de-R9b|gTn)2J&Z4V i@> zw#p!g%LY6jHKq8-l%bLxE}sV`(FOo{4`T+<;Bl(D*Q-(=d3pIaGzl4z^4~YDpz?Z3 zXSjUD>iv#v-WxVo6_?0=_&3fMvb#!8Hegqk&m$N$Tyds4 - NLq`CY?zDL4*miulVo2=wU(Pd|LWCMm zYDkHrtiM}iUcYmv{Xp|&
5LE0zLmtHF;M@ngK zuk+q0iz*cdZLrFEK?yVY=V*QATFd}Cs+!DcoD6g&XnF${8PF4(CaVZ5v#(rPLe#g> zI6khEUcr@V 1&S`$kJ{DcEW!> zZPF@(i1~D&m6Ih=)-j7xrNsEs` Fw+XiIj=g4^mgv@vWi Zm|x@I^*uo_;k~d*~B^3 zYNXTf0V0vV&vIKH+9=8T4m5nMf*`&2&RxFN*<{`()hVPnz=c&_q%jY(MRR212IALr zpT~zjj&@M7Rd}72HP?|R*M5&rCms5!svv5e8umdmkBUwT@pz|BnG9QzzX;fmHNNG! z!jIca?rxXk6V387s6^!^2ftXq$c(%LLNMEcK@o3rrovbz#OVv5CD)fmY*O2&ge Px}GqTpJ7!*WuJW zA0@ZHi;bTT@gIJj#p)j^ZqzCh=gt4q4wUuT)r5s#4wY--Ag+EJ%&n|M2s z?mjIL_QbDeD$V8=$q=oPizEll^wVz$TK;Q&j@?Ggk?R|6BdyV?QMV`k2WNxr n6Ke&<4~C8l0gy@So-aoL`RS)&!nJ)K|XQNm6y z4L-5nU(TITZbGGwkfaCc?*1v(4-Jg7W^Vh$HiaOOtwu1cRpMAPYv4rZ5`dJqAP{fG zk^M#NC#O|RjoY5Nk*u~YaW=R#VYE~h0Y+CV@j9%Y?(|BQME`7q#&c#fXOCEUppEV@ zBq70$r9~9Dtur=@zRoJu3DCZU>6q`sIC(=L5Ff{b3jODMcIbINVFmPQ7r=|PWJXow zCGrK35!R5>DJPrleoq4o@fU*(6?N#;9{F|hMn0zijmB9F#W`Ice{L|ng+I?PuPIl0 zZ@CRr_j{1P*AR{|kh>QV5n+GmMA^P*|LZevw1 &sTU!hpvk z^cKpFCXHNSzF&2KjC|rxi7Bs!3;5Qjgpe9{PV~2lih^j5ITGOPMa)ixYejZ WOfm-bR3`9S{6BE}z$?ae{A33B|kfm~ceyjK*Qy z4T|gbD?8577i23+8id_*ZKS)}^TJB~Z_RvK(uNw0sAS|g1gY=y-=)Xr`f{Ceb@7M| zMs*NIBgc) EVz@jDGQMdG1{a<$*GKp9$;htS^xg1;L!j@=a*8Z;o5 zhL??Wh;lKRzd63#Xd#FZHn+)|nRMh8HxHAH01drAP!Uid{#fDkHPY(OYUkllf)>35 z4( 9^MtIXNMU3JLgb)uWlX;i%z;B{p zBO_aj&BN7WyCm}O@zlYV=wYdItknA@1s;5;A$`rUW>Mt T-wcx|a(BS3+ z*(DdJl}h#dJH_}AW)6AbqjuIKp$k$c8NarC3INj{z|yxCi9fLL^HYn`a?|UiZ>Q~# zU$+{6pLcrqOmd{`-;w$U2D~UY$sXplLyoTulrhpR&qoV1Npb}+FEzcF7pIG+W!R%b zd{dV7v7Har*t4F?>ee(3rThW^9jyUyttIFkkEjxy8?Zjt=gq%q286fHPF@D)Vhr+* zcYe-occ>iOl~T|#KeOuigFL@0R{u>nfG%}|-xqX1m+F{3?EwUY-V+fd>mmCz6dci% z+L5wNUpz7oTcuv+YFpYkz3K?ISZjN;w`^>AVtCsS+2GSWVZd8zG;IL=Di74w%J?&b zJm>NrTNdnr_6bf`&O-eQ&+74AH-Jt^=Z;MZLn;!B17?R<3J=Z2onEoB0*5Os%f^2D zFPb8_&L+Y+4mk8kaqPUl*+TnCl(k`6&{(o?t*r6OwOY|63Blj~Jk630o_IMFM&dF* z{}J)S!ICO@8kjrdV7PaI0eq5fjC!H?PdYNkE`w-Dfz~Ogz5KaWDK2b%1frz9kW60O zp8rNlbXH!P#vZi|8DDAnOH%kIMw&%wg>jLyYMcNDp{?_@z5B}kJ-%2tGeEl#8#r%_ z=$e{mw=d;ZnzAd>a7Wl2eWqa@ZM=4qNWFCptt{GQ0}C|Fx&0eUF{je=)~)R2HQEL- z)O_Gv?Dyrm%&4R6!K1jkI4b3%t6xnh%_Ho}S!k;N{2m#zMX7u0uldJv2Nx*|wc&yY zw1cg!ZMCZK%ZBe}0KbY`V?LpdHNsDWJX*YMu9-B6M{BRTa?(Pl=D$gmwKc2NqfdWX z^Gv^K@=?)S=K%k=OK6N)1Giu1K>Pq8MXl18mIr*u`80_{?bsn=2*R_f)RSgkE$Ax9 z J% zPi7crqIqO~?@O@41wnyCX#7wuL4h8w7^le70~WuZ!*>28Wx3L19$Hv>bW+Ns-&=Fy zC-@ <3J{MJI)T>M`Xjhn>*|dD}r{DX4i4RhBGF zjKDb`^lU myL0IVWaMUzgAe2x2kEj49H}Sxu&&yKtbD`V2N`&6frUw#$O=;>c zFQjiEJxN!=S2Yd_G}K4_Q_2n=H=|T|;|?svi+BuY82`@K7mw6Fx^B )QP}zKD5c3eeVdTp{4e^J<3;;O78z zV*X{6G>ERr@BHX`08~F)y>8F^0Ncpa+au}wJ!ErcHNXTIs+Sy>jiPRR6Gg8)RBY2G z1sbHF{)_&PJ3BjBh%fcJNzeE4ohd(yrT0Q-E2;g5eU;D596R|LEc1ZB3@n2(FW;5! zyFW5qQTcm*RDACnv|yiyb-awm8lsm D;H?!`ProAro?uzHfxm`7<_|-8Xgi7?9?#j1^RRtH@EG_9WhpPJ5 zL|_|v8|g tk_J+c4=wGq*9#Y!( BbL5vj^({)(3}@tSQEwU=P-4u|Q5-y_*}zy( zx4o@RBV7G9T;ta}1HY}cS66z#;qVYsxMtwj&wa@XOEir;aO8WYv1DV2mN!Ju+ZK(< zcFC2 w(lsU)KH4v|0R zpia%3R~vK)F}uq6ICz-Nilm1=ojVLbf*L%k0<)mH!YTtPQg5-iN5(dIaZe)0-fJOX zLvr(WqL==xHf)h%*xmg+QFp{=wa3njW0>@a?OAzweVSPinaDrT!PDVduA*fH;=#z~ zBWzY9T+2J9gmEw*!DfnqmPOm04SIRZ2u-_N9TR?$-0e*`Q-RDkpEkYkhAe4!KiRH> zc;n@x`g#$mVAxXBVh%@M(PvI8YkOUno>JBhYAmO8)P{D3e -r)*4qI+7rkxa5_+!5I1y#7nz`!g z3#XTyw&NYeLFya!cTFu% MWYW;=ozHqne$?vu6P$L5mHqrhuup*tbh1z)*1 z_2{%Ezm0b z_m&gvE2J>CXAb<$Gz))JBB#*`_qP1pCvdUgS`1TuJAySn^*$w|q}hJ!k;FM8v9bcv z@`w9DuSv_JC-V$ixSAD2m!%N@2A-;$ttbwG6^>v>GLh*pP>7tRz >fO#6t6y>k??L0Fr4f7Z-H=YP7 B09;1$1fA<0CV7d7XG=GI5d8|eKluPxaWTRS^O#LMZ~l00Xn9k?0B1F3X8 zx-B=c>N(uzpP9I(hUyxwi$dI(m@+}>I+H(t^!KlgHMen*5RpafaQx5F)(5`pd=IH0 zvZkx|@=pFiCm67aY55gHhF|HEt_Xp>olYNht9v1*;}uKp-Qysqy*i?lN =th8cf^&r(hJTTPD d&uOs;Kk zst-y-FZyX{dmP4r{m6ACn3VaCrdP3|zQm;#xn*tOwQ=zJ!lP7IdiX#$u!#Pfr9&ms zGHHamj|VklO5kko#*LTa4~+0SjsZ8Xm7B85(x?Om>q4KlPhBkeKSWu5vO*i!0>lQ~ znIZZ#8KW>%w(#q?Q$xNY38yehkk)8}pb~R*p@p|Q0!-9i_YJA_&KbR=+(z&VXhkA@ ze){=GrR!y5Y5ag-DZe-ejLu_iwp-VBdc;eb>~D!> 9pO!-s8fsM4a*c?E|5^sjV{~Avn2j{kr5p04`D?t2Es#%0|AEF3oeHiO z2`9fc8I4wcbOYJvxRE+a0B1fLZRTpIebr)C bBXz6Qm_jBt zV*Lem;56%A(ePw0K?{a9&js;lkP&Is1FxRFDz?1al!zNGtzFSNp)4zKYhqsJ(bujB zx`Sqs^Q!{Uki-(bek$vq2$^V#J 4w!iy0R9hLDYsFE?oBk*C$mJOrFU|CK|Ijc%v1k`4wz3T?Q|QC* z@0rsGac}SC|HJ*CyPXGaRm(4O^G>TXk|lC~Q=GR3$k2Y4;3ARxe&^85zd3B)t7_|L zo?unQLtB$gaGiP9GqwDNcW1k6^Ul^Hk^?GYf4cf9QSiEcv)6U7IxMWt@a<|^5D(fd zdC*RCa|2RSIVTn!8(&@&JlMN;MKPZwog_B$&q&2PV~=;f-BeRan`%lV#|>%EJ0* T;ZFH346Yu0)n@{cV4 zqjULTkC)fj0+FgM@h=Hw|4l*_=MspPii|M{NJugJkKU2`wO@zss+oan8y%nZNnr=E z+$)<9@mF_}F7zZ^6j!wC*_~aum%zK2@p5HtUh