锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
1錛夋睙嫻峰競鐢?shù)璇濆忥L(fēng)爜鏄?浣嶆暟錛屾瘡涓浣嶄笂鐨勬暟鐮佸彲浠ユ槸0錛?錛?···8錛?涓換鎰忎竴涓紙鏁板瓧鍙互閲嶅鍑虹幇錛屽00000涔熺畻涓涓數(shù)璇濆彿鐮侊級錛岄偅涔堣繖涓煄甯傛渶澶氭湁澶氬皯涓數(shù)璇濆彿鐮侊紵
錛?錛夌敤0錛?錛?錛?榪?涓暟瀛楋紝鍙互緇勬垚澶氬皯涓病鏈夐噸澶嶇殑4浣嶆暟錛?
錛?錛?#8220;IMO”鏄浗闄呭ゥ鏋楀尮鍏嬬殑緙╁啓錛屾妸3涓瓧姣嶅啓鎴?縐嶄笉鍚岀殑棰滆壊錛岀幇鍦ㄦ湁5縐嶄笉鍚岀殑棰滆壊絎旓紝鎸変笂榪拌姹傝兘鍐欏嚭澶氬皯縐嶄笉鍚岄鑹叉惌閰嶇殑“IMO”.
絳旀鏄?span style="COLOR: #ffffff">錛?1) 100000縐?nbsp;
錛?錛?8縐?nbsp;
錛?錛?0縐?br>
涓嶈繃濂藉儚浜鴻剳瑕佹瘮鐖嗘悶鏇村揩浜?#8230;…ft
]]>
Time Limit: 1000MS |
|
Memory Limit: 30000K |
Total Submissions: 1342 |
|
Accepted: 587 |
Description
Running a taxi station is not all that simple. Apart from the obvious demand for a centralised coordination of the cabs in order to pick up the customers calling to get a cab as soon as possible,there is also a need to schedule all the taxi rides which have been booked in advance.Given a list of all booked taxi rides for the next day, you want to minimise the number of cabs needed to carry out all of the rides.
For the sake of simplicity, we model a city as a rectangular grid. An address in the city is denoted by two integers: the street and avenue number. The time needed to get from the address a, b to c, d by taxi is |a - c| + |b - d| minutes. A cab may carry out a booked ride if it is its first ride of the day, or if it can get to the source address of the new ride from its latest,at least one minute before the new ride's scheduled departure. Note that some rides may end after midnight.
Input
On the first line of the input is a single positive integer N, telling the number of test scenarios to follow. Each scenario begins with a line containing an integer M, 0 < M < 500, being the number of booked taxi rides. The following M lines contain the rides. Each ride is described by a departure time on the format hh:mm (ranging from 00:00 to 23:59), two integers a b that are the coordinates of the source address and two integers c d that are the coordinates of the destination address. All coordinates are at least 0 and strictly smaller than 200. The booked rides in each scenario are sorted in order of increasing departure time.
Output
For each scenario, output one line containing the minimum number of cabs required to carry out all the booked taxi rides.
Sample Input
2
2
08:00 10 11 9 16
08:07 9 16 10 11
2
08:00 10 11 9 16
08:06 9 16 10 11
Sample Output
1
2
Source
鏍規(guī)嵁榪欓亾棰樼洰鐨勬剰鎬濓紝鎴戜滑鍙互寤轟竴寮犲浘錛屽浜庝袱涓?/span>booked taxi ride錛?/span>ri鍜?/span>rj濡傛灉涓杈嗚濺鑳藉鍏堝畬鎴?/span>ri鐨勪換鍔″啀鏈夋椂闂磋刀鍘誨畬鎴?/span>rj鐨勪換鍔★紝閭d箞灝卞緩绔嬩竴鏉?/span>ri鎸囧悜rj鐨勮竟銆?br>
鎸夌収棰樼洰鐨勮姹傦紝瑕侀夋嫨鏈灝戠殑taxi鏉ュ畬鎴愯繖浜涗換鍔°傛樉鐒跺湪涓婇潰榪欎釜渚嬪瓙涓紝闇瑕佸畨鎺?/span>2杈?/span>taxi銆傜粨鍚堣繖涓浘錛屽彲浠ユ妸棰樼洰鐨勮姹傝漿鍖栦負(fù)鎵懼嚭鏈灝戠殑璺緞鏉℃暟錛屼嬌寰楄繖浜涜礬寰勮鐩栭斾腑鎵鏈夌殑杈癸紝渚嬪鍙互閫夋嫨2鏉¤礬寰?/span>1->3->4鍜?/span>1->2灝卞彲浠ヨ鐩栨墍鏈夌殑杈廣備篃鍙互閫夋嫨1->3->4鍜?/span>2錛堝洜涓?/span>2浣滀負(fù)鍒濆绔欙紝涓嶉渶瑕佺敱1杞Щ榪囨潵錛夈傚浜庝竴鏉¤繛緇殑璺緞vi1->vi2->…vik鐢變簬榪欐潯璺緞涓婄殑浠誨姟瀹為檯涓婃槸鐢變竴杈?/span>taxi鏉ュ畬鎴愮殑錛屽彲浠ュ惂榪欐潯璺緞閫鍖栨垚涓や釜鐐?/span>vi1->vik銆傛湁浜嗚繖涓ゆ寤哄浘鐨勬楠や互鍚庯紝闂鐨勬眰瑙e氨鍙互鍙樹負(fù)鎵懼嚭欏剁偣闆嗙殑涓涓渶灝忓瓙闆嗭紝浣胯繖涓《鐐瑰瓙闆嗚鐩栨墍鏈夌殑杈癸紙姣忔潯杈歸兘鑷沖皯鍜屼竴涓《鐐歸泦鐨勯《鐐圭浉榪烇級銆傝繖涓棶棰樺氨鏄浘鐨勬渶灝忕偣瑕嗙洊銆傚啀鐪嬭繖寮犲浘錛岃繕鏈変竴浜涙ц川鑳藉璁╂垜浠洿濂藉湴姹傚嚭鏈灝忕偣瑕嗙洊銆傝繖涓浘鏄竴涓湁鍚戞棤鐜浘錛屾病鏈夎嚜鐜紝灝卞彲浠ユ媶鐐癸紝鎶婂師鍏堝緩鐨勫浘鍙樻垚涓寮犱簩鍒嗗浘銆?br>
鍙互鍐嶅浘涓湅鍑猴紝涓婇潰涓懼嚭鐨勪竴鏉¤礬寰?/span>1->3->4瀵瑰簲浜嗚繖涓簩鍒嗗浘涓殑璺緞1->
寰?#8220;璁$畻鏈哄浘褰㈠”鍜?#8220;璁$畻鏈哄浘鍍忓鐞?#8221;鏄袱闂ㄥ緢鏈夋剰鎬濈殑璇劇▼銆傝繖瀛︽湡鎴戜滑鐨勮紼嬪畨鎺掕繕鏄竴璐綔椋?/p>
鈥斺旇紼嬪帇緙╋紝鎶婅繖涓ら棬璇劇▼鍘嬫垚浜嗕竴闂ㄨ紼嬶紝涓嶄粎濡傛榪樹嬌鐢ㄧ殑鏄唴閮ㄦ暀鏉愶紙浼犺涓殑鍐呴儴鏁欐潗灝辨槸鎶?/p>
璇劇▼鍐呭榪涗竴姝ョ簿綆鍘嬬緝錛夈傚嵆渚垮湪榪欑鎯呭喌涔嬩笅錛屾垜榪樻槸瀵硅綆楁満鍥懼艦鍥懼儚澶勭悊鍏呮弧鐑儏錛屾兂澶氬浜涗笢
瑗匡紝濂藉ソ鍦板仛璇劇▼璁捐銆備粖澶╀復(fù)涓嬭鍓嶏紝鑰佸笀鎶婅紼嬭璁$殑棰樼洰甯冪疆涓嬫潵錛岀湡浠ゆ垜褰誨簳澶辨湜浜嗐傚竷緗簡20+
涓鐩紝铏借娑夊強(qiáng)涓浜涘啗浜嬶紝浣嗘槸瑕佹眰鐪熺殑寰堟按銆傚悗闈㈢粰鍑轟簡涓緋誨垪鍐涗簨鐢?shù)濯勫Q岀伨闅劇數(shù)褰卞ぇ鐗囷紝鍋氭硶灝辨槸
錛?br>1銆佺湅鐗囷紱
2銆佹埅鍥句笌PS錛?br>3銆佸啓鎶ュ憡涓庡仛ppt銆?br> 鎴戞兂浜嗕竴涓嬶紝榪欓噷闈㈠彲鑳戒竴鐐圭悊璁猴紝涓鐐圭紪紼嬮兘涓嶄細(xì)娑夊強(qiáng)鍒幫紝榪欐牱鐨勮紼嬭璁★紝鐜╄繃鐢?shù)鑴戠殑錆h閮戒細(xì)鍋氾紝榪?/p>
騫插槢娣誨湪“淇℃伅宸ョ▼”涓撲笟鐨?#8220;璇劇▼璁捐”閲屽憿錛熺湡鏄彲絎戯紒錛侊紒璇劇▼閮界緝姘寸緝鍒拌繖縐嶇▼搴︿簡錛岄偅榪樺紑浠
涔堣鍛紝鑷嬈轟漢緗簡銆傜◢鏈夌偣鏈笓涓氱煡璇嗙殑浜轟篃涓嶈嚦浜庝細(xì)璁や負(fù)璁$畻鏈哄浘鍍忓鐞嗗氨鏄帺PS鍚с傞偅澶у閲屽
鐢?shù)瀛愬伐绋嬬殑姣曚笟鍚庨兘鍘讳慨寰尝鐐夊Q岄氫俊宸ョ▼鐨勫幓鍗栫數(shù)璇濆崱錛屼俊鎭伐紼嬬殑灝卞幓鐓х浉棣嗗仛PS濂戒簡銆?br>鍞?#8230;…榪欏嚑澶╂鏄柊鐢熷叆瀛︼紝榪樼湅鐫涓鎵逛竴鎵圭殑鏂扮敓寰鎴戜滑瀹胯垗榪欒竟璧幫紝鎴戝績閲岀湡鏄毦榪囷紝鐪熸兂璺熶粬浠
錛?#8220;鍥炲幓鍚э紝璇翠笉瀹氭潵騫磋繕鑳借冧釜娓呭崕銆?#8221;榪樻湁閭d箞澶氬闀匡紝閫佷釜瀛╁瓙涓婂ぇ瀛﹀涓嶅鏄擄紝浣嗕篃璁鎬粬浠繕涓嶇煡閬擄紝浠栦滑鐨勫効瀛愯鎺ュ彈榪欐牱鐨勬暀鑲層傛兂鐫榪欎簺浜嬶紝蹇冮兘鍦ㄧ棝鍟娿?br> 鎮(zhèn)?#8230;…
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 574 | Accepted: 229 |
Description
Input
Output
Sample Input
4 1 2 10 2 3 10 3 3 10 1 3 10 6 1 20 1000 3 25 10000 5 15 5000 22 300 5500 10 295 9000 7 7 6000 8 32 251 2261 123 281 1339 211 235 5641 162 217 7273 22 139 7851 194 198 9190 119 274 878 122 173 8640 0
Sample Output
30 25500 38595
Source
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 211 | Accepted: 82 |
Description
Input
Output
Sample Input
4 10.00000 0.00000 0.00000 -10.00000 -10.00000 0.00000 22.23086 0.42320 -4.87328 11.92822 1.76914 27.57680 156.71567 -13.63236 139.03195 -22.04236 137.96925 -11.70517 129.400249 -44.695226 122.278798 -53.696996 44.828427 -83.507917
Sample Output
4 6 23 100
Source
棰樼洰澶ф剰鏄粰鍑轟笁涓偣鐨?x,y)鍧愭爣錛岃姹傝緭鍑轟竴涓竟鏁版渶灝忕殑姝e杈瑰艦鐨勮竟鏁幫紝浣胯繖涓変釜鐐規(guī)伆濂藉湪
榪欎釜姝e杈瑰艦涓婇潰銆傚叾瀹炶繖涓笁瑙掑艦鍜岃繖涓澶氳竟褰㈡槸鍏卞鎺ュ渾錛岀敱澶栨帴鍦嗙殑鍦嗗績鍑哄彂錛屼笁瑙掑艦鐨勪笁
鏉¤竟鍙互鎶婂渾鍒嗘垚涓変喚錛屾瘡浠藉渾寮ф墍瀵瑰簲鐨勫渾蹇冭鍒嗗埆涓篴rg[0],arg[1]鍜宎rg[2]錛屾澶氳竟褰㈡妸鍦嗗姬
鍒嗘垚鐩哥瓑鐨刵浠斤紝姣忎喚瀵瑰簲鐨勫渾蹇冭涓?*pi/n銆傚叾瀹炰笁瑙掑艦鐨勪笁涓灝卞垎鍒崰鐢ㄤ簡鑻ュ共絳変喚姝e杈瑰艦
鎵鍒掑垎鐨勫渾寮э紝鏈鍚庝篃灝卞彧瑕佹眰arg[0],arg[1],arg[2]鍜?*pi鐨勬渶澶у叕綰︽暟(gcd)鍗沖彲銆備絾鏄繖閲屾槸
涓搴﹂兘鏄誕鐐規(guī)暟錛屾墍浠ヨ繕瀹氫箟涓涓誕鐐規(guī)暟鐨刧cd錛岃綆楁誕鐐規(guī)暟鐨刧cd鍙互鍒╃敤math.h鐨勫嚱鏁癴mod
(x,y)琛ㄧずx%y銆備緥濡?.5%0.3=0.2錛寈%y鐨勭粨鏋滀負(fù)涓嶈秴榪噛鐨勪竴涓誕鐐規(guī)暟銆備笅闈㈠啓浜嗕竴涓猣mod(x,y)鑷繁
鐨勫疄鐜般?br>double fmod(double x, double y)
{
return x-floor(x/y)*y;
}
鏈変簡fmod鍑芥暟浠ュ悗錛屽氨鍙互鐢ㄥ畠鏉ユ眰gcd浜嗭紒
double fgcd(double a, double b)
{
double t;
if(dblcmp(a-b) == 1) //a>b
{
t=a;
a=b;
b=t;
}
if(dblcmp(a) == 0) return b;
return fgcd(fmod(b,a),a);
}
浠婂ぉ鍘繪箹澶ф垜璁や負(fù)灝辮閬垮厤鎴戜滑緇勫啀鍑虹幇榪欑鎯呭喌錛屼竴瀹氳璇婚錛岃澶氭兂棰橈紒澶ф竻鏃╁潗鏍¤濺涓璺鍏夌殑鍒頒簡婀栧ぇ錛堥暱娌欎粖澶╂悶鐏偓浼犻掗婕旓紝浜哄緢澶氾紝緇撴灉鏍¤濺鏃犺鏃佷漢鍦板紑浜嗚繃鍘伙級銆傜姣旇禌榪樻湁涓涓灝忔椂鐨勬椂闂淬傝繖鏃?/span>alpc62璺熸垜璇達(dá)紝浠栦粖澶╃殑鐘舵佷笉濂斤紝鏄ㄦ櫄鍋?/span>topcoder鍋氬埌寰堟櫄鎵嶇潯銆備簬鏄壘浜嗕釜鍦版柟澶х潯涓闃碉紝閱掓潵鍚庡氨綺劇楗辨弧鐨勮浠婂ぉ鍙互鏁查浜嗐?/span>
棰樼洰鍗板埛鍦板緢涔憋紝鍒嗛鐨勬椂鍊欏氨涓漢鎾曚簡1/3鐨勯鐩?/span>Alpc62鍏堟嬁鍒頒簡A錛岀敤涓涓?/span>log鍑芥暟榪囨帀浜嗐傜劧鍚庢垜鐪嬮錛屽彂鐜頒竴涓腑鏂囧瓧絎︿覆DP棰橈紝鎴戣寰楀彲浠ュ仛錛屽氨璺?/span>62璇撮浜嗐?/span>62澶ф暡涓闃碉紝鎴戝氨涓鐩村湪鎵鵑鐩腑鐨?/span>trick錛屽洜涓烘垜鎰熻榪欓亾棰樻湁寰堝娌¤娓呮鐨勫湴鏂癸紝涓嶄箙紼嬪簭鍐欏畬錛屾病鍑烘牱渚嬶紝鐒跺悗鎴戜滑寮濮嬫鏌ワ紝鍙戠幇棰樼洰涓湁涓涓敊璇紝浜庢槸灝辮窇鍘葷綉欏典笂鐪嬶紝鎴戠殑澶╁晩錛佺綉欏典笂鐨勬弿榪板拰鎴戜滑鎵嬩笂鎷垮埌鐨勯鐩樊浜嗚繖涔堝錛屾寜鐓?/span>clarification涓婅鐨勪竴鍒囦互緗戦〉涓婄殑涓哄噯錛屼簬鏄垜浠鐫緗戦〉涓婄殑棰橈紝榪囦簡鏍蜂緥錛屼竴浜ゆ槸WA錛屾彁浜や簡鎵撳嵃浠g爜錛屼簬鏄?/span>62瑙夊緱瑕佹崲棰樸傝繖鏃?/span>alpc07璇諱簡涓閬撶寽鏁板瓧鐨勯錛屾垜浠垽鏂槸寮遍錛岀畝鍗曟毚鎼炲氨琛屻?/span>Alpc07涓婂幓鏁詫紝緇撴灉WA錛岃繖涓嬫悶寰楅儊闂蜂簡銆備笉綆℃垜浠張鎹㈤錛屾垜鍙堣浜嗗叏鍦烘渶澶氫漢榪囩殑涓閬撻錛屾垜寮濮嬭繕鍦ㄦ兂DP錛岃窡alpc62璇翠簡浠ュ悗錛屼粬姣笉鐘硅鮑鍦拌錛?/span>dijkstra鍢涳紝鏄叏騫存垚閮界儹韜禌鐨勫師棰樸傚緢蹇氨
浠婂ぉ鍦ㄦ瘮璧涗腑錛屾垜鍩烘湰涓婃病鏈夋暡棰橈紝鍦ㄧ粍閲岄潰鍗忚皟鍒嗛錛屾敞鎰忓満涓婄殑褰㈠娍銆傚氨鍦ㄨ繖嬈$殑姣旇禌涓垜瑙夊緱璇婚瀵逛簬涓涓槦浼嶆潵璇村緢閲嶈銆傜壒鍒槸鎯寵鍑?/span>
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 1146 | Accepted: 390 |
Description
Input
Output
Sample Input
11 6 1 2 1 3 1 4 1 5 2 6 2 7 2 8 4 9 4 10 4 11
Sample Output
2
Hint
Source
鐨勬椂鍊欏垎棰橈紝鎴戣DEF錛屽緢蹇垜灝卞彂鐜頒簡E鏄竴閬撴按棰橈紝涓婃墜灝辨暡錛屾祴璇曚簡鍑犱釜鏁版嵁涔嬪悗灝?/p>
submit浜嗐傞仐鎲懼晩錛岃繖灝辨槸鎴戜滑緇勮繖鍦烘瘮璧涘敮涓鐨勪竴涓?/Y銆傚湪涓崡璧涘墠澶滐紝鎴戣繕鍦ㄦ兂鏈夊敖
閲忓鐨?/Y錛屼竴涓婂満榪欎箞蹇氨姘磋繃浜嗕竴閬撻錛屾垜榪樹互涓轟粖澶╃殑棰樼洰寰堢畝鍗曘傚綋鏃剁殑蹇冩儏閭d釜
嬋鍔ㄥ晩……榪囬鍚庢垜鍙堢珛椹D棰橈紝鐪嬭搗鏉ュ緢鍍忎竴閬撴ā鎷熼錛屾垜鑷俊鍦拌涓鴻繖棰樿窡E涓鏍鳳紝
椹笂鍙堝紑濮嬫暡浠g爜錛屾暡鐫鏁茬潃灝卞彂鐜頒笉瀵逛簡錛屾暟鎹噺杈懼埌浜?00000錛屾毚鎼炵殑璇濅細(xì)瓚呮椂錛屾垜
鎰忚瘑鍒拌繖閬撻涓嶅厜鏄函綺圭殑妯℃嫙錛屽簲璇ヨ鍊熷姪浜庝簺鏁版嵁緇撴瀯鐨勪簡銆傛垜浠粍鏀炬參浜嗚剼姝ャ?/p>
alpc40鍜宎lpc43浠嶅湪璇婚錛屾帴鐫alpc40璺熸垜璁睠棰橈紝700涓偣涓夊嚭涓変釜鐐癸紝浣垮緱榪欎笁涓偣
紜畾鐨勫鎺ュ渾鍗婂緞鏈澶с侽(n^3)鐨勬椂闂翠細(xì)瓚呮椂錛屼簬鏄垜鍙堜竴嬈′笉鍔犳濈儲鍦拌“紿佸寘”錛屽叴
鑷村媰鍕冨湴鏁蹭簡涓獊鍖咃紝緇撴灉WA銆傛墦鍗頒唬鐮侊紝浠ヤ負(fù)鏄垜鐨勭獊鍖呴敊浜嗭紝鍐嶆敼錛屽啀WA銆傝繖鏃跺凡緇?/p>
涓や釜澶氬皬鏃惰繃鍘諱簡錛屾垜浠繕鏄竴涓皵鐞冦備竴嬈℃鐨刉A璁╂垜鍐烽潤涓嬫潵鎯籌紝闂娌¤繖涔堢畝鍗曪紝
鍚庢潵璁ㄨ鍙戠幇鍏堟眰紿佸寘錛屽啀鏋氫婦鐐圭殑鏂規(guī)硶鏄敊鐨勩傚仛浜嗕袱涓灝忔椂鐨勭畻娉曚粠鏍規(guī)湰涓婃槸閿欑殑
錛屽綋鏃舵垜灝遍鎰熷埌姣旇禌鍚庣殑緇撴灉浜嗐傛渶鍚庢暡浜嗕釜O(n^3)鐨勬毚鎼烇紝TLE銆傛鏃舵垜宸茬粡鏀懼純浜嗐?/p>
姣旇禌涓綔涓轟竴涓富鍔涳紝鎴戣寰楁垜鐨勮〃鐜板疄鍦ㄦ槸澶樊浜嗭紝娌℃湁璁ょ湡鍦拌璁哄拰鍒嗘瀽灝辨暡棰橈紝澶?/p>
閮ㄥ垎鏃墮棿鍗犵敤鐫閿洏錛屼互鑷翠簬alpc43鏁村満姣旇禌閮芥病鏈夌鍒伴敭鐩樸傜粍闃熻禌鍙樻垚浜嗘垜鐨勪釜浜鴻禌
錛屽茍娌℃湁鍙戞尌涓変釜浜虹殑鍚堝姏銆傜壒鍒槸鍒頒簡鏈鍚?5鍒嗛挓錛屽彉鎴愪簡鍨冨溇鏃墮棿錛屾病棰樺彲鍋氫簡錛屾垜
浠紑濮嬭竟鍚冩眽鍫★紝杈瑰埛rank list……
鎬葷粨榪欐姣旇禌錛岄鍏堟槸鎴戯紝鍦轟笂鐨勭粡楠岃繕涓嶈凍銆傛瘮濡傚湪榪欐姣旇禌涓満涓婂嚭鐜頒簡娌¢鍋?/p>
錛岀畻娉曢敊璇瓑鑷村懡鐨勬儏鍐墊椂錛屾垜瀹屽叏灝變笉鑳芥帶鍒惰繖鏍風(fēng)殑灞闈紝鍐插姩錛?gt;澶辮惤->鏀懼純錛屽湪緇勯槦
璧涗腑寰堝繉璁沖嚭鐜拌繖鏍風(fēng)殑鎯呭艦銆傛瘮璧涚殑鏃跺欏拰騫蟲椂鍋氶閮戒笉涓鏍鳳紝褰撴椂鑴戝瓙灝卞緢娣蜂貢錛屽啀涔?/p>
娌″績鎬濇兂鍏朵粬鐨勯鐩簡銆傚彟澶栦篃鏄嚜宸辯殑瀹炲姏鍘熷洜錛屽棰樼洰鎶婃彙寰椾笉濂姐傚浜庢垜浠粍錛屾垜
瑙夊緱浜掔浉鐨勪氦嫻佸拰璁ㄨ榪樻湁寰呮敼榪涳紝鏈夋椂璇撮鎰忥紝瀵規(guī)柟寰堥毦棰嗕細(xì)錛屾瘮璧涗腑鐨勮璁轟篃娌″嚭鐜?/p>
鏈夋剰涔夌殑浜偣銆?br> alpcs閮藉湪濂藉ソ鍦板弽鎬濆弽鎬濆啀鍙嶆?#8230;…涔熻緇欐垜鑷繁鐨勬満浼?xì)迤堜笉澶氬Q岃鐪熷仛濂芥瘡涓鍦烘瘮
璧涳紝姣忓満姣旇禌閮借鏈夋敹鑾楓?/p>
榪囦簡涓騫寸殑鍔姏錛屼粖騫村彇寰椾簡榪欎釜鏈轟細(xì)銆傚拰鎴戝悓緇勭殑榪樻湁alpc40鍜宎lpc43銆傛垜浠鉤鏃惰繕閮?/p>
姣旇緝浜嗚В浜嗐俛lpc40鍜屾垜鏄竴涓鑸嶇殑錛屽鉤鏃跺仛棰樼殑浜ゆ祦涔熸瘮杈冨錛屾垜浠袱鍐欑▼搴忕殑椋庢牸
涔熷樊涓嶅錛堜竴涓佸笀鏁欑殑鍢沕_^錛夈傛垜瑙夊緱alpc40鍦ㄥ仛鏁板棰橈紝鎵捐寰嬬殑棰樼洰鏃惰繕鏄緢蹇兘
鎵懼埌鏂規(guī)硶鐨勶紝鍦ㄦ瘮璧涚殑鏃跺欙紝浠栨瘮杈冨枩嬈㈣嚜宸卞嚭鏁版嵁錛屾暡瀹岄鍚庢繪槸涓嶆柇鍦板嚭鏁版嵁鏉ユ楠?/p>
鑷繁鐨勭▼搴忥紝鍦ㄦ牎璧涗腑灝辯湅鍑轟簡錛岃櫧鐒朵粬浜ら鐨勬椂闂翠笉鏄渶鏃╃殑錛屽洜涓轟粬涓鐩村湪鍑烘暟鎹祴
璇曡嚜宸辯殑紼嬪簭錛屼竴鐩存祴鍒拌嚜宸辮涓烘病鏈夐棶棰樹簡錛屾墠鎻愪氦錛屽緢澶ф鐜囧嚭1/Y鐨勩傛墍浠ュ敖綆′氦棰?/p>
涓嶅揩錛屼絾鍥犻敊寰楀皯錛岀綒鏃跺皯錛屾牎璧涙椂鍦ㄥ悓鏍烽鐩暟鐨勪漢涓繕鏄帓鍦ㄤ簡鍓嶉潰銆傛垜瑙夊緱榪欑偣闈?/p>
甯稿ソ錛屽湪鏄庡ぉ鐨勬瘮璧涗腑錛屾垜浠鍏堣姹傜ǔ銆傛垜瑙夊緱鎴戜滑鐨勫疄鍔涚粷瀵逛笉鑷充簬寮哄埌鎶婃墍鏈夌殑棰?/p>
鐩兘鍋氬嚭鏉ワ紝涔熶笉瑙佸緱浼?xì)姣斿埆錆h澶氬嚭棰橈紝鎵浠ュ湪寰堝鍚屾牱棰樼洰鏁扮殑浜轟腑錛岃繕鏄鎷肩綒鏃剁殑
銆傝繖灝遍渶瑕佸湪姣旇禌涓仛鐨勭ǔ錛屼簤鍙栧敖閲忓鐨?/Y銆傛垜涔熻鍏嬫湇騫蟲椂姣旇緝鎬ヨ簛鐨勪範(fàn)鎯紝鍒囧繉涓?/p>
瑕佷竴鍑烘牱渚嬪氨浜わ紝鍥為【涓涓嬭嚜宸辯殑紼嬪簭錛屾祴璇曚竴涓嬫暟鎹紝鏌ユ壘閿欒銆傝繖涓ゆ姣旇禌鐪嬩簡
alpc43鐨勪唬鐮侊紝鎴戣寰椾粬鐨勪唬鐮佸疄鍦ㄦ槸寰堜貢錛屽緢澶氱緝榪涳紝鎹㈣閮界敤寰椾笉瑙勮寖錛屽啓紼嬪簭鐨勬椂
鍊欏鏄撻犳垚鎬濊礬涓嶆竻鏅幫紝鍦ㄦ鏌ョ▼搴忕殑鏃跺欎篃寰堥毦鍙戠幇閿欒錛屼細(xì)嫻垂寰堝鏃墮棿銆傛垜瑙夊緱姣?/p>
璧涗腑錛岀粰alpc43鍋氫簺浠g爜閲忎笉澶э紝浣嗘槸鎬濊礬鑳藉鍑烘潵寰楁瘮杈冩竻鏅扮殑棰樼洰銆傝嚦浜庢垜錛屾垜瑙夊緱
搴旇鎷呰搗澶ч噺鐨勪唬鐮佷換鍔★紝鍦ㄧ粍閲岋紝鎴戠殑浠g爜閫熷害榪樺彲浠ャ傚彲浠ュ啓鐐逛唬鐮侀噺澶х殑妯℃嫙棰橈紝
灝介噺蹇湴AC錛屽ソ涓烘垜浠粍鑺傜渷鏃墮棿銆傚彟澶栵紝涓浜涜璁$畻娉曪紝鏁版嵁緇撴瀯鐨勯鐩紙緗戠粶嫻侊紝浜?/p>
鍒嗗浘錛岄珮綺懼害錛岀嚎孌墊爲(wèi)錛岃綆楀嚑浣曠瓑錛夛紝鎴戜篃瑕佹暡鏁詫紝浜夊彇鑳藉啿鍑烘洿澶氱殑棰樸?br> 浠庝粖澶╃殑鐑韓璧涙潵鐪嬶紝鎴戠殑鐘舵佷竴鐐歸兘涓嶅ソ銆傚彲鑳芥槸榪欎釜鏄熸湡錛屽張瑕佸仛棰橈紝鍙堣鑰冭瘯
錛岃繕瑕佺粍緇囨暟鎹簱鐨勫涔?fàn)锛屾湁鐐规悶寰楀お绡忎簡銆傚氨鍐欒繖涔堢偣浜嗭紝浠婃櫄浼戞伅濂界偣錛屼絾鎰挎槑澶╄兘
淇濇寔鏈浣崇殑鐘舵乛_^
Time Limit: 15000MS |
|
Memory Limit: 150000K |
Total Submissions: 944 |
|
Accepted: 218 |
Description
The rotation game uses a # shaped board, which can hold 24 pieces of square blocks (see Fig.1). The blocks are marked with symbols 1, 2 and 3, with exactly 8 pieces of each kind.
Initially, the blocks are placed on the board randomly. Your task is to move the blocks so that the eight blocks placed in the center square have the same symbol marked. There is only one type of valid move, which is to rotate one of the four lines, each consisting of seven blocks. That is, six blocks in the line are moved towards the head by one block and the head block is moved to the end of the line. The eight possible moves are marked with capital letters A to H. Figure 1 illustrates two consecutive moves, move A and move C from some initial configuration.
Input
The input consists of no more than 30 test cases. Each test case has only one line that contains 24 numbers, which are the symbols of the blocks in the initial configuration. The rows of blocks are listed from top to bottom. For each row the blocks are listed from left to right. The numbers are separated by spaces. For example, the first test case in the sample input corresponds to the initial configuration in Fig.1. There are no blank lines between cases. There is a line containing a single `0' after the last test case that ends the input.
Output
For each test case, you must output two lines. The first line contains all the moves needed to reach the final configuration. Each move is a letter, ranging from `A' to `H', and there should not be any spaces between the letters in the line. If no moves are needed, output `No moves needed' instead. In the second line, you must output the symbol of the blocks in the center square after these moves. If there are several possible solutions, you must output the one that uses the least number of moves. If there is still more than one possible solution, you must output the solution that is smallest in dictionary order for the letters of the moves. There is no need to output blank lines between cases.
Sample Input
1 1 1 1 3 2 3 2 3 1 3 2 2 3 1 2 2 2 3 1 2 1 3 3
1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3
0
Sample Output
AC
2
DDHH
2
Source
鍥句腑鐨?/span>#瀛楁牸鐨?/span>4鏉$珫綰匡紝鍙互鎸?/span>8涓柟鍚戝掕漿閲岄潰鐨勬暟瀛楁柟鍧楋紝褰撲腑闂寸殑8涓暟瀛楁柟鍧楁槸鍚屼竴涓暟瀛楁椂錛屾父鎴忕粨鏉熴傝繖閬撻灝辮姹傛悳绱竴涓渶鐭礬寰勶紝鍊掕漿8涓柟鍚戜嬌寰椾腑闂?/span>8涓暟瀛楃浉絳夈傝繖閬撻鐩湅璧鋒潵寰堝儚涓閬撳崟綰殑BFS錛岀湅浜?/span>POJ閲岄潰璇?/span>BFS浼?xì)鐖嗗唴瀛樺Q屾垜娌¤瘯錛屼及璁″啓寰楀ソ鐨勪篃鐖嗕笉浜嗐備絾鏄及璁″啓BFS榪樿娑夊強(qiáng)鍒扮姸鎬佺殑鍒ら噸錛岀▼搴忓啓璧鋒潵涔熶笉鏂逛究銆傛垜鐢ㄤ簡榪唬鍔犳繁鐨勬悳绱㈡柟娉曘傜涓嬈℃帴瑙﹁繖涓畻娉曪紝鎴戣涓涓嬫垜鐨勭悊瑙o細(xì)
鍘熸潵鎴戝緢涓嶇悊瑙h凱浠e姞娣憋紝鎼滅儲鐨勬繁搴︿竴灞備竴灞傚湴鍔狅紝鍦ㄥ悗闈㈢殑鏌愪竴娣卞害闄愬埗涓嬫悳绱紝蹇呭畾浼?xì)鎼滃埌鍓嶉潰娣卞害鎵鑳芥悳鍒扮殑緇撴灉錛岃繖浼?xì)閫犳垚閲嶅鎼滅儲銆傚熀浜庤繖鐐癸紝鎴戜竴鐩撮兘璁や負(fù)榪唬鍔犳繁鎼滅儲鐨勬柟娉曞緢鍐椾綑錛屽綋鐒朵篃鏄嚜宸變粠鏉ラ兘娌℃湁鍔ㄦ墜璇曡繃銆傚儚榪欓亾棰樺氨緇欐垜鐨勬敹鑾蜂笉灝戯紝鏈夌殑鏃跺欓夋嫨涓瀹氱殑絳栫暐榪涜鎼滅儲錛屾垜浠槸寰堥毦紜畾瑙f墍鍦ㄧ姸鎬佺┖闂寸殑娣卞害鐨勶紝鏈夋椂鍙兘瑙g殑娣卞害涓嶅ぇ錛屼絾鏁翠釜鐘舵佺┖闂寸殑娣卞害寰堝ぇ錛岀洸鐩殑dfs鎼滅儲鍦ㄧ姸鎬佺┖闂撮噷灝辨湁鍙兘浼?xì)瓒婇櫙偠婃繁锛寴q熻繜鍑轟笉浜嗚В錛屽悓鏃舵暣涓姸鎬佺┖闂寸殑瀹藉害涔熷緢澶э紝鐢?/span>BFS鍙兘灝變細(xì)鐖嗙┖闂淬傝凱浠e姞娣辨悳绱㈡伆鎭版槸鍙栦簡涓涓姌涓傚埄鐢ㄤ簡dfs鐨勪紭鍔匡紝闄愬埗浜嗘悳绱㈢殑娣卞害錛岄伩鍏嶄簡鍑虹幇鏃犺В鐨勫鍦般傜敱浜庢繁搴︽槸閫愪釜澧炲姞鐨勶紝褰撴悳鍒頒竴涓В鍚庡氨閫鍑猴紝鎵浠ラ伩鍏嶄簡BFS涓垽閲嶇殑涓姝ユ搷浣滐紝褰撶劧鍦ㄨ凱浠f繁鎼滅殑榪囩▼涓紝榪樺彲浠ュ姞鍏ュ壀鏋濓紝鍙互浼樺寲紼嬪簭銆備絾鏄垜鐨勭▼搴忓湪POJ涓婅繕涓嶅揩錛岃繕瑕佹壘鎵懼師鍥狅紝涔熻榪樻湁浼樺寲銆備笅闈㈡槸涓浜涘叧閿唬鐮侊細(xì)
Source from錛?/span> http://acm.pku.edu.cn/JudgeOnline/problem?id=2676
Sudoku涓枃鍚?#8220;鏁扮嫭”娓告垙錛屾父鎴忚鍒欐槸鍦ㄤ竴涓?/span>9×9鐨勬柟鏍間腑濉叆1錛?/span>9榪?/span>9涓暟瀛楋紝9×9鐨勫ぇ鏂規(guī)牸鍙堣鍒掑垎鎴愪簡9涓?/span>3×3鐨勫皬鏂規(guī)牸錛岃姹傚~鍏ョ殑榪?/span>1錛?/span>9榪?/span>9涓暟瀛椾腑錛屽湪姣忎竴琛岋紝姣忎竴鍒楀強(qiáng)姣忎竴涓皬鏂規(guī)牸涓兘涓嶈兘閲嶅鍑虹幇銆?/span>
鍦?/span>pku涓婏紝鎴戞毚鎼滅殑鏂規(guī)硶錛屽皢姣忎釜絀烘牸鐨勪綅緗嚑涓嬶紝鐒跺悗鐢?/span>dfs寰閲屽~鏁幫紝涓嶇鍚堟潯浠剁殑灝卞洖婧傛柟娉曞涓嬶細(xì)
Source
Problem: 2676 User: alpc60
Memory: 80K Time: 1171MS
Language: C++ Result: Accepted
Source
#include <stdio.h>
#include <string.h>
struct P
{
int x,y,num;
}point[100];
int map[10][10],count;
bool mr[10][10],mc[10][10],mm[10][10];
int dfs(int n);
int find(int x, int y);
int main()
{
int i,j,cases;
//freopen("2676.txt","r",stdin);
scanf("%d",&cases);
while(cases--)
{
count=0;
memset(mc,false,sizeof(mc));
memset(mr,false,sizeof(mr));
memset(mm,false,sizeof(mm));
memset(map,0,sizeof(map));
for(i=1; i<=9; i++)
for(j=1; j<=9; j++)
{
scanf("%1d",&map[i][j]);
if(map[i][j]==0)
{
point[count].x=i;
point[count].y=j;
point[count].num=0;
count++;
}
else
{
mr[i][map[i][j]]=true;
mc[j][map[i][j]]=true;
mm[find(i,j)][map[i][j]]=true;
}
}
dfs(0);
//{
for(i=0; i<count; i++)
map[point[i].x][point[i].y]=point[i].num;
for(i=1; i<=9; i++)
{
for(j=1; j<=9; j++)
{
printf("%d",map[i][j]);
}
printf("\n");
}
//}
}
return 0;
}
int dfs(int n)
{
int i,t;
if(n>=count)
return 1;
t=find(point[n].x,point[n].y);
for(i=1; i<=9; i++)
{
if(!mr[point[n].x][i] && !mc[point[n].y][i] && !mm[t][i])
{
mr[point[n].x][i]=true;
mc[point[n].y][i]=true;
mm[t][i]=true;
point[n].num=i;
if(dfs(n+1))
return 1;
mr[point[n].x][i]=false;
mc[point[n].y][i]=false;
mm[t][i]=false;
point[n].num=0;
}
}
return 0;
}
int find(int x, int y)
{
int r,c;
r=x%3?(x/3+1):(x/3);
c=y%3?(y/3+1):(y/3);
return (r-1)*3+c;
}
1273 Drainage Ditches
榪欐槸涓閬撴瘮杈冨崟綰殑緗戠粶嫻侊紝棰樼洰瑕佹眰鍙姹傚嚭婧愮偣鍒版眹鐐圭殑鏈澶ф祦灝辮浜嗭紝鑰屽茍涓嶉渶瑕佷換浣曠殑寤烘ā鎶借薄鐨勪笢瑗匡紝鍞竴涓鐐硅娉ㄦ剰鐨勬槸錛岃鑰冭檻鏈夐噸杈圭殑鎯呭喌銆?/span>
榪欓噷鎴戠敤鐨勬槸澧炲箍璺硶姹傜殑鏈澶ф祦錛屾祦浠庢簮鐐?/span>s鍑哄彂錛岀敤BFS鎵懼埌涓鏉″騫胯礬寰勶紝鐒跺悗鎵捐繖鏉¤礬寰勪笂鐨勬渶灝忓?/span>min錛屽澧炲箍璺繘琛屾墿灞曪紝姣忎竴嬈℃墿灞曚細(xì)浣垮緱f[pre[i]][i]鐨勫煎澶э紝閭d箞瀹冪殑鍙嶅悜璺緞f[i][pre[i]]鐨勫間細(xì)鍑忓皬錛屼竴鐩磋繘琛屼笅鍘伙紝鐩村埌鎵句笉鍒板騫胯礬涓烘錛岀畻娉曠粨鏉熴?/span>
Source
Problem Id:1273 User Id:linyangfei
Memory:240K Time:15MS
Language:C++ Result:Accepted
Source
#include <stdio.h>
#include <string.h>
int n,m,pre[205];
int f[205][205];
bool mark[205];
int bfs();
__int64 MaxFlow();
int main()
{
int i,s,e,c;
//freopen("1273.in","r",stdin);
while(scanf("%d%d",&m,&n)!=EOF)
{
memset(f,0,sizeof(f));
for(i=0; i<m; i++)
{
scanf("%d%d%d",&s,&e,&c);
if(f[s-1][e-1]==0)
f[s-1][e-1]=c;
else
f[s-1][e-1]+=c;
}
printf("%I64d\n",MaxFlow());
}
return 0;
}
int bfs()
{
int q[205],qt=0,qh=1,i,x,min;
q[qt]=0;
mark[0]=true;
while(qt<qh)
{
x=q[qt];
if(x==n-1)
{
min=100000000;
for(i=n-1; pre[i]!=-1; i=pre[i])
min=f[pre[i]][i]<min?f[pre[i]][i]:min;
return min;
}
for(i=1; i<n; i++)
{
if(!mark[i] && f[x][i]>0)
{
q[qh++]=i;
mark[i]=true;
pre[i]=x;
}
}
qt++;
}
return 0;
}
__int64 MaxFlow()
{
int i,min;
__int64 maxflow=0;
memset(mark,0,sizeof(mark));
for(i=0; i<n; i++)
pre[i]=-1;
while(min=bfs())
{
for(i=n-1; pre[i]!=-1; i=pre[i])
{
f[pre[i]][i]-=min;
f[i][pre[i]]+=min;
}
maxflow+=min;
memset(mark,0,sizeof(mark));
for(i=0; i<n; i++)
pre[i]=-1;
}
return maxflow;
}
1149 PIGS
涔熸槸涓閬撳緢緇忓吀鐨勭綉緇滄祦鐨勯鐩紝棰樼洰澶ф剰鏄?/span>Mirko鏈?/span>M涓尓鍦堬紝鐚湀閲岄潰鏈変竴瀹氭暟閲忕殑鐚紝浣嗕粬娌℃湁閽ュ寵錛岃屽彧鏈夋潵涔扮尓鐨勯【瀹㈡墠浼?xì)鏈変竴浜涚壒瀹氭埧闂寸殑閽ュ寵錛屾瘡嬈¢【瀹㈡潵涔嬪墠錛岄兘璺?/span>Mirko棰勭害濂斤紝鎵浠?/span>Mirko鐨勪換鍔″氨鏄壘鍑轟竴涓鍒掞紝浣夸粬鑳藉崠鍑烘渶澶氭暟閲忕殑鐚傚浜庢瘡浣嶉【瀹紝Mirko鍙互閫夋嫨鍗栧嚭鐚殑鏁伴噺錛屼篃鍙互鍦ㄨ欏懼鎵撳紑鐨勭尓鍦堥棿浠繪剰璋冩暣鐚殑鏁伴噺錛屾瘡涓尓鍦堢殑瀹歸噺鏃犻檺澶с?/span>
鎴戣寰楄繖涓棶棰樼殑涓涓叧閿偣鏄緩妯★紝濡備綍寤虹珛涓涓綉緇滄祦鐨勬ā鍨嬪緢鍏抽敭銆傛垜鎶婃墍鏈夌殑鐚湀緇熶竴鐪嬫垚涓涓ぇ鐨勬簮鐐?/span>S錛屾妸姣忎釜欏懼鐪嬫垚鏄竴涓妭鐐癸紝鐒跺悗鍐嶄漢宸ュ湴娣誨姞涓涓眹鐐廣傝繖鏍峰彲浠ュ緱鍑轟笅闈㈢殑璺緞鍏崇郴銆?/span>
1銆?nbsp;鍦ㄥ厛鍒扮殑欏懼鍜屽悗鍒扮殑欏懼涔嬮棿鏈変竴鏉¤礬寰勶紝鎸囧悜鍚庡埌鐨勯【瀹紝榪欐潯璺緞鐨勫閲忔棤闄愬ぇ銆?/span>
2銆?nbsp;鍦ㄦ簮鐐規(guī)湁鎸囧悜鍚勪釜欏懼鐨勮礬寰勶紝璺緞鐨勫閲忎負(fù)欏懼鎷ユ湁鐨勯挜鍖欐墍鑳芥墦寮鐨勭尓鍦堢殑鐚殑鎬婚噺錛屾敞鎰忥紝褰撲袱涓【瀹㈡嫢鏈夊悓涓鎶婇挜鍖欑殑鏃跺欙紝鐚湀鐨勬暟閲忓彧鑳藉姞鍒頒竴涓【瀹㈣妭鐐圭殑璺緞涓婏紝涓嶈兘閲嶅鍔狅紝浠栦滑涔嬮棿鐨勮漿縐誨叧緋誨氨闈?/span>1涓袱欏懼闂村閲忔棤闄愬ぇ鐨勮礬寰勬潵瀹炵幇銆?/span>
鎴戞兂鏈変簡榪欎袱鐐癸紝鎶婄綉緇滄祦鐨勬ā鍨嬪緩绔嬭搗鏉ュ悗錛屾眰瑙g殑綆楁硶鎸夌収1273鐨勬ā鐗堝氨搴旇寰堝鏄撲簡銆?/span>
#include <stdio.h>
#include <string.h>
const int INF=100000000;
int f[105][105],pig[1005],key[1005][105],pre[105];
bool mark[105];
int m,n;
int bfs();
int MaxFlow();
int main()
{
int i,j,c,p,k;
//灝嗙尓鍦堢湅浣滀竴涓ぇ鐨勬簮鐐?/span>0錛屽啀澶栧姞涓涓眹鐐?/span>n+1
freopen("1149.txt","r",stdin);
while(scanf("%d%d",&m,&n)!=EOF)
{
for(i=1; i<=m; i++)
scanf("%d",&pig[i]);
memset(f,0,sizeof(f));
memset(key,0,sizeof(key));
for(i=1; i<=n; i++)
{
scanf("%d",&c); //姣忎綅欏懼鎷ユ湁閽ュ寵鐨勬暟閲?/span>
for(j=1; j<=c; j++)
{
scanf("%d",&p); //杈撳叆姣忔妸閽ュ寵鐨勭紪鍙?/span>
f[0][i]+=pig[p];
key[p][i]=1;
pig[p]=0;
}
scanf("%d",&c); //杈撳叆姣忎綅欏懼闇瑕佺尓鐨勬暟閲?/span>
f[i][n+1]=c;
}
for(i=1; i<=m; i++)
for(j=1; j<=n; j++)
{
if(key[i][j])
for(k=j+1; k<=n; k++)
{
if(key[i][k])
f[j][k]=INF;
}
}
printf("%d\n",MaxFlow());
}
return 0;
}
int bfs()
{
int q[205],qt=0,qh=1,i,x,min;
q[qt]=0;
mark[0]=true;
while(qt<qh)
{
x=q[qt];
if(x==n+1)
{
min=100000000;
for(i=n+1; pre[i]!=-1; i=pre[i])
min=f[pre[i]][i]<min?f[pre[i]][i]:min;
return min;
}
for(i=1; i<=n+1; i++)
{
if(!mark[i] && f[x][i]>0)
{
q[qh++]=i;
mark[i]=true;
pre[i]=x;
}
}
qt++;
}
return 0;
}
int MaxFlow()
{
int i,min;
int maxflow=0;
memset(mark,0,sizeof(mark));
for(i=0; i<=n+1; i++)
pre[i]=-1;
while(min=bfs())
{
for(i=n+1; pre[i]!=-1; i=pre[i])
{
f[pre[i]][i]-=min;
f[i][pre[i]]+=min;
}
maxflow+=min;
memset(mark,0,sizeof(mark));
for(i=0; i<=n+1; i++)
pre[i]=-1;
}
return maxflow;
}
榪欐槸鎴戠殑絎竴涓?/span>DP錛岄鐩殑鎰忔濆緢綆鍗曪紝鍦ㄤ竴涓煩闃甸噷闈㈡壘瀹冪殑瀛愮煩闃碉紝浣垮緱瀛愮煩闃墊暟鍊間箣鍜屽埌杈炬渶澶с傚叾瀹炲氨鏄渶澶у瓙孌靛拰闂鍦ㄤ簩緇寸┖闂翠笂鐨勬帹騫褲傚厛璇翠竴涓嬩竴緇寸殑鎯呭喌鍚с傝鏈夋暟緇?/span>a0,a1…an,鎵鵑櫎鍏朵腑榪炵畫鐨勫瓙孌碉紝浣垮畠浠殑鍜岃揪鍒版渶澶с傛渶寮濮嬬殑鎯蟲硶錛屾槸鏋氫婦鐭╅樀鐨勯暱搴︼紝璁$畻姣忎釜瀛愮煩闃電殑鍜岋紝鐒跺悗姣旇緝寰楀嚭鏈澶у鹼紝榪欐牱瑕佹秷鑰楃殑鏃墮棿涓?/span>O(n)銆傝鎴戜滑鍐嶆兂鎯籌紝濡傛灉榪欎釜搴忓垪鐨勬瘡涓涓暟閮芥槸鏁存暟錛岄偅涔堝畠浠殑鏈澶у瓙孌靛拰灝辨槸鎶婃墍鏈夌殑鏁扮浉鍔犮傛墍浠ユ垜浠兂瑕佸敖鍙兘澶氬湴鎵懼埌姝f暟鐩稿姞銆傚湪搴忓垪涓湁璐熸暟鐨勬儏鍐典笅錛屼粠澶村紑濮嬫壂鎻忔暟緇勶紝鎶婃鏁伴兘鐩稿姞錛岃繖鍏朵腑鍙兘浼?xì)鏈夎礋鏁板Q屼竴縐嶆儏鍐墊槸錛氳礋鏁板拰鍑忓皬瀛愭鍜岋紝浣嗚繖鏃跺瓙孌靛拰浠嶇劧涓烘錛岀敤sum璁板綍涓嬭繛緇瓙孌靛拰鐨勬渶澶у鹼紝緇х畫鎯沖悗鎵弿錛屽洜涓哄悗闈㈡湁鍙兘鍑虹幇鏇村ぇ鐨勬鏁扮殑鎯呭喌錛屼細(xì)浣垮拰姣斿師鏉ユ病鍔犺礋鏁頒箣鍓嶆洿澶э紱絎簩縐嶆儏鍐墊槸錛氬姞鍏ヤ竴涓礋鏁板悗錛屾槸榪欎釜榪炵畫鐨勫瓙孌靛拰鐨勫煎彉鎴愪簡璐熸暟錛岃繖鏃跺氨瑕佹姏寮冭璐熸暟浠ュ強(qiáng)璇ヨ礋鏁頒箣鍓嶇殑鎵鏈夊簭鍒楋紝鍥犱負(fù)鍓嶉潰鑻ユ湁瀛愭涓庡悗闈㈡瀯鎴愪簡榪炵畫鐨勫瓙孌碉紝鍒欒繖涓瓙孌典竴瀹氫細(xì)鍖呮嫭榪欎釜璐熸暟錛岃屽湪榪欎釜璐熸暟涔嬪墠鐨勫簭鍒楃殑鍜屾槸涓礋鏁幫紝閭d箞榪欎釜瀛愭鐨勫拰涓瀹氫笉鏄渶澶х殑瀛愭鍜屻傛姏寮冭繖涓礋鏁頒箣鍓嶇殑搴忓垪鍚庯紝瀛愭鍜屼粠榪欎釜璐熸暟鍚庨潰鐨勭涓涓暟綆楄搗錛岀戶緇壂鎻忋?/span>
//涓緇存暟緇勬眰鏈澶у瓧孌?/span>
int submax1(int a[], int n)
{
int b=0;
int bn=-32767;
int i;
int sum=0;
for(i=0; i<n; i++)
{
if(b>0)
{
b+=a[i];
}
else if(a[i]>bn && a[i]<0)
{
bn=a[i];
b=a[i];
}
else
{
b=a[i];
}
if(b>sum)
{
sum=b;
}
}
if(sum==0)
return bn;
else
return sum;
}
鍏朵腑鍙橀噺b灝辨槸璁板綍褰撳墠鎵弿榪囩殑瀛愭鍜岀殑錛岃?/span>sum璁板綍鐨勬槸瀛愭鍜岀殑鏈澶у?/span>
浜岀淮鐨勬儏鍐碉細(xì)
榪欓噷鎴戜嬌鐢ㄤ簡涓涓緢綆鍗曠殑鍋氭硶錛屽湪浜岀淮鏁扮粍a[i][j]閲岄潰鏋氫婦絎竴緇寸殑闀垮害k錛岀劧鍚庡緱鍒頒竴涓?/span>k*n鐨勫瓙鐭╅樀錛屾妸榪欎釜瀛愮煩闃電殑姣忎竴鍒楁暟鍊肩浉鍔狅紝灝辨妸榪欎釜浜岀淮鏁扮粍杞寲鎴愪簡涓緇達(dá)紝鍐嶈皟鐢ㄥ嚱鏁?/span>int submax1(int a[], int n)錛屽氨璁$畻寰楀嚭鏈澶у箋?/span>
鎬葷粨錛氭劅瑙夋垜鍋氳繖閬撻鐩繕涓嶆槸寰堝儚DP錛屽彧鏈夊湪姹備竴緇存儏鍐典笅鐨?/span>sum璁板綍鏈澶у鹼紝浠ュ強(qiáng)鍦ㄦ壂鎻忔槸璁$畻鐨勫瓙孌靛拰b錛屼唬琛ㄤ簡鏌愭暟鍓嶉潰榪炵畫鐨勬渶澶у瓙孌靛拰銆?/span>
浜屻?/span>1579 Function Run Fun
榪欒偗瀹氭槸涓涓蹇冪Н铏戠殑鍑芥暟錛屾病鐪嬪嚭瀹冩湁浠涔堝疄闄呯殑鐢ㄥ
Consider a three-parameter recursive function w(a, b, c):
if a <= 0 or b <= 0 or c <= 0, then w(a, b, c) returns: 1
if a > 20 or b > 20 or c > 20, then w(a, b, c) returns: w(20, 20, 20)
if a < b and b < c, then w(a, b, c) returns: w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c)
otherwise it returns: w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1)
榪欐湰韜氨鏄竴涓掑綊鍑芥暟錛岃鏄寜鐓у嚱鏁版湰韜啓閫掑綊寮忥紝緇撴灉鑲畾鏄?/span>TLE錛岃繖閲屾垜寮浜嗕竴涓笁緇存暟緇勶紝浠?/span>w(0,0,0)寮濮嬮掓帹錛岄愭浜х敓鍒?/span>w(20,20,20)鐨勫鹼紝澶嶆潅搴?/span>O(n^3)
鎬葷粨錛氳繖閬撻鏄緢鍦伴亾鐨?/span>DP錛屽洜涓哄畠鐨勫瓙闂瀹炲湪鏄お澶氫簡錛屼絾榪樻槸灞炰簬綆鍗曢鐩殑鑼冪暣錛屽氨鍍忔妸fabonacci鍑芥暟澧炲姞鍒頒笁緇達(dá)紝闄愬埗鏉′歡澶氱偣鑰屽凡錛岃屽疄闄呬笂鐨勫仛娉曢兘涓鏍楓?/span>
涓夈?/span>1080 Humman Gene Function
搴旇璇磋繖鏄竴閬撴瘮杈冪粡鍏哥殑DP錛屼袱涓插熀鍥犲簭鍒楀寘鍚?/span>A銆?/span>C銆?/span>G銆?/span>T錛屾瘡涓や釜瀛楁瘝闂寸殑鍖歸厤閮戒細(xì)浜х敓涓涓浉浼煎鹼紝姹傚熀鍥犲簭鍒楋紙瀛楃涓詫級鍖歸厤鐨勬渶澶у箋?/span>
鎰熻榪欓鏈夌偣鍍忔眰鏈闀垮叕鍏卞瓙搴忓垪銆傚彧涓嶈繃鎶婃眰鏈澶ч暱搴︽敼鎴愪簡姹傛渶澶х殑鍖歸厤鍊箋傜敤浜岀淮鏁扮粍m[i][j]璁板綍瀛楃涓?/span>a涓殑絎?/span>i涓瓧絎︿笌瀛楃涓?/span>b涓殑絎?/span>j涓瓧絎﹀尮閰嶆墍浜х敓鐨勬渶澶у箋傝嫢瀛楃涓?/span>a鐨勯暱搴︿負(fù)la錛屽瓧絎︿覆b鐨勯暱搴︿負(fù)lb錛屽垵濮嬫椂m[la][k](0<=k<=lb-1),榪欓噷鍗充負(fù)瀛楃涓?/span>a鐨勬湯灝句笌b涓殑瀛楃鍖歸厤錛屽洜涓鴻秴榪囦簡瀛楃涓?/span>a鐨勯暱搴︼紝鎵浠ュ尮閰嶇殑鏃跺欏彧鑳芥椂浠ョ┖鏍?/span>’-’鍖歸厤銆傚悓鐞嗗彲浜х敓m[k][lb](0<=k<=la-1)錛岀殑鎵鏈夊鹼紝鍐嶄互姝ゅ線鍓嶉掓帹錛屽叾鐘舵佽漿縐繪柟紼嬩負(fù)
m[i][j]=max{map[i][j]+m[i+1][j+1],m[‘-‘][j]+m[i][j+1],m[i][‘-’]+m[i+1][j]}
鎵浠ユ渶鍚?/span>m[0][0]鍗充負(fù)鎵姹傘?/span>
鍥涖?/span>2533 Longest Ordered Subsequence
寰堟棭浠ュ墠灝辯湅榪囪繖棰橈紝姹傛渶澶ч掑搴忓垪錛岄偅鏃跺垰鍒氭檽寰椾粈涔堝彨“鍔ㄦ佽鍒?#8221;錛屾槸銆婄畻娉曡璁′笌鍒嗘瀽銆嬶紙鐜嬫檽涓滐級涓婄殑涓閬撲範(fàn)棰橈紝寮濮嬩笉浼?xì)鍋氥傚悗鏉ユ兂浜嗕竴縐嶅緢絎ㄧ殑鍔炴硶錛岀敤浜?/span>O(n^2)鐨勬椂闂達(dá)紝榪橀檮鍔犱簡n^2鐨勭┖闂淬傜湅浜嗕笘閾殑涓ょ鏂規(guī)硶錛屼竴縐嶆槸O(n^2),涓縐嶆槸O(nlogn)銆備袱縐嶆柟娉曟牳蹇冪殑鏂規(guī)硶閮戒竴鏍鳳紝鐢ㄤ竴涓?/span>n澶у皬鐨勪竴緇寸┖闂?/span>(a[n])錛?/span>a[i]琛ㄧず瀛愪覆闀垮害涓?/span>i鏃舵墍鏈夊瓙涓叉渶澶у間腑鐨勬渶灝忓鹼紝鍥犱負(fù)瑕佹壘涓涓?/span>i闀垮害鐨勫瓙涓詫紝閭d箞a[i]鐨勫艱嚦灝戣姣旈暱搴︿負(fù)i-1瀛愪覆涓殑涓涓渶鏈綅鐨勫艱澶с備箣鎵浠ヤ細(xì)鏈変袱縐嶆椂闂村鏉傚害鐨勫樊鍒紝灝辨槸鍦ㄦ煡鎵?/span>i-1闀垮害鐨勬湯灝懼間腑鐨勬渶灝忓肩殑鏃跺欙紝鍓嶈呮槸綰挎х殑鎼滅儲錛屽悗鑰呮槸鐢ㄧ殑浜屽垎鎼滅儲錛屾彁楂樹簡鏃墮棿鏁堢巼銆傚彟澶栬涓涓嬭繖棰樼殑鍙樺艦鍚э紝1631 Briging signals錛屾槸鏈夊緢澶氳礬鐢卞櫒鎼嚎錛岃姹傛眰鍑轟簰涓嶇浉浜ょ殑鎼厤鐨勬渶澶т釜鏁般傜粏緇嗗垎鏋愪竴涓嬮鐩紝鍙琚尮閰嶇殑璺敱鍣ㄥ簭鍙鋒槸涓涓掑鐨勫簭鍒楋紝鍒欎粬浠殑榪炵嚎灝變笉浼?xì)鐩镐氦锛尀鎶姌q欓杞寲涓烘眰鏈澶ч掑搴忓垪鐨勯棶棰樸備絾闇瑕佹敞鎰忕殑鏄繖棰樼殑闂瑙勬ān杈懼埌浜?/span>40000錛?/span>Time Limit :1000MS錛屾墍浠ュ湪榪欓噷瑕侀夌敤鍒氭墠鎻愬埌鐨?/span>O(nlogn)鐨勭畻娉曪紝鎵嶄笉浼?xì)瀵艰?/span>TLE銆?/span>
浜斻?/span>1014 Dividing
瀹為檯涓婃棭灝辯湅鍒拌繖棰樹簡錛岄偅鏃跺ACM鐨勮璇嗚繕寰堝辜紼氾紝鍒氬瀹岀▼搴忚璁★紝瀛︿細(xì)鎬庝箞鐢ㄩ掑綊錛屼篃涓嶇湅棰樼洰鐨勬潯浠訛紝鍙嶆灝辨槸鍏marble錛屽啓浜嗕釜閫掑綊鐨勭▼搴忥紝嫻嬭瘯鏁版嵁褰撶劧鑳介氳繃錛屼絾鍏剁粨鏋滆偗瀹氭槸TLE浜嗐傚張榪囦簡涓孌墊椂闂達(dá)紝鏈変簡鐐規(guī)椂闂存晥鐜囩殑瑙傚康錛屽啓浜嗕釜鏋氫婦娉曡綆楁誨拰鐨?/span>1/2鐨勫彲杈炬э紝涓嶈繃榪樻槸鏈夊緢澶氭儏鍐墊垜閮芥病鏈夎冭檻鍒幫紝緇撴灉WA浜嗐傚埌鐜板湪瀛?/span>DP錛屽啀鏉ョ湅鎯蟲兂榪欓錛屽叾瀹炶繕鏈夋洿濂界殑瑙f硶銆備篃鏄綆楁誨拰鐨?/span>1/2(sum)鐨勫彲杈炬э紝濡傛灉marble鐨勬繪暟鏄?/span>n錛屽垯DP綆楁硶鐨勬椂闂村鏉傚害鍙互杈懼埌O(n*sum)銆傜敤涓涓竴緇存暟緇勬爣璁頒粠0錛?/span>sum鎵鏈夊姞鍜岀殑鍙揪鎬э紝瀵逛簬涓棰楀疂鐭崇殑浠峰?/span>i錛屾暟緇?/span>a[j]==true錛岃〃紺哄拰涓?/span>j鍙揪錛岄偅涔堝彲寰楀嚭
a[i+j]=true,鍗?/span>i+j鐨勫煎彲杈俱傚驚鐜互鑷翠簬鐢ㄥ畬鎵鏈夌殑瀹濈煶錛岃瀵?/span>a[sum]鐨勫鹼紝true鍗充負(fù)榪欎簺瀹濈煶鍙垎錛屽弽涔嬩笉鍙垎銆?/span>
鍏?/span>2192 Zipper
鍙堟槸涓閬撳瓧絎︿覆鐨勫姩鎬佽鍒掗鐩紝綆榪頒竴涓嬶細(xì)緇欏嚭涓変釜瀛楃涓詫紝s1,s2,s3錛?/span>s3鐨勯暱搴︿負(fù)s1涓?/span>s2闀垮害涔嬪拰錛屽垽鏂?/span>s1錛?/span>s2鏄惁涓?/span>s3鐨勪笉閲嶅悎鐨勫叕鍏卞瓙搴忓垪銆傚叾瀹炲氨鏄垽鍒叕鍏變箣搴忓垪鐨勫崌綰х増錛屾妸鍘熸潵鐨勪竴瀵逛竴錛屾敼鎴愪簡涓瀵逛簩銆傛垜鐢ㄤ竴涓簩緇存暟緇?/span>mark[i][j]璁板綍s1涓殑絎?/span>i涓瓧絎︿互鍙?/span>s2涓殑絎?/span>j涓瓧絎﹁兘鍚︿笌s3[i+j]鎯沖尮閰嶃?/span>
If(s1[i]==s3[i+j]) mark[i+1][j]=true;//s1涓殑絎?/span>i涓瓧絎﹀尮閰嶏紝鍒?/span>s1涓插悜鍚庣Щ涓涓瓧絎?/span>
If(s2[j]==s3[i+j]) mark[i][j+1]=true;//s2涓殑絎?/span>j涓瓧絎﹀尮閰嶏紝鍒?/span>s2涓插悜鍚庣Щ涓涓瓧絎?/span>
榪欐牱鐢?/span>O(n^2)鐨勬椂闂達(dá)紝閫掓帹鑳戒駭鐢?/span>mark[c1][c2]鐨勫鹼紝鍊間負(fù)true杈撳嚭鍗寵兘澶熷叏閮ㄥ尮閰嶃?/span>
涓冦?/span>2576 Tug of War
鎴戣寰楅潪甯告湁蹇呰鍋氱殑涓閬撻鐩傝繖閬撻鐩湅浼煎緢綆鍗曪紝瀹炶川灝辨槸n涓暟錛屽皢鍏跺垎鎴愪袱鍫嗭紝涓ゅ爢鏁伴噺鐨勫樊璺濅笉瓚呰繃1錛屽茍涓斾嬌榪欎袱鍫嗘暟瀛椾箣鍜屾渶鎺ヨ繎銆傛槸涓閬撳姩鎬佽鍒掗鐩紝鐪嬭搗鏉ョ畝鍗曟槸鍥犱負(fù)鍙椾簡1014棰樼殑褰卞搷錛屼絾榪欓涓ゅ爢鐨勬暟鐩槸紜畾鐨勶紝涓鍫嗘槸n/2涓紝鍙︿竴鍫嗗垯鏄?/span>n-n/2涓?/span>,鑰?/span>1014棰樻槸涓嶅彈鍔犲拰鏁扮洰鐨勫獎鍝嶇殑銆傝繖棰樹篃涓嶅悓涓庡綾沖嫆楠ㄧ墝閭i錛屽洜涓洪偅棰樹腑鍚勪釜鏁板瓧涔嬮棿鏄竴涓瀵瑰簲鐨勩傝嫤鎯充簡涓澶╂病鏈夌粨鏋滐紝鐪嬫潵榪欓榪樿瀵繪眰鍏跺畠鐨勬柟娉曘傝繖棰樹笉鏄垜鑷繁鎯抽櫎鏉ョ殑錛岀湅浜?/span>alpc02鐨勪唬鐮侊紝鑷繁鍙堢収鑷繁鐨勭悊瑙i噸鍐欎簡涓閬嶃?/span>
璁板綍鐘舵佹槸鐢ㄤ竴涓簩緇存暟緇勶紝mark[i][j]琛ㄧずi涓暟鐩稿姞錛屽叾鍊艱兘鍚﹁揪鍒?/span>j錛屽鏋滆兘mark[i][j]鐨勪負(fù)true銆傚浜庝竴涓緭鍏ョ殑鏁?/span>w錛屼慨鏀?/span>i涓暟鐨勬瘡涓縐嶇姸鎬侊紝鍏剁姸鎬佽漿縐繪柟紼嬶細(xì)
If(m[i][j]) then m[i][j+w]=true;//j+w鐨勫煎彲鐢?/span>j鐨勫煎姞寰?/span>
鐢卞悗寰鍓嶄慨鏀規(guī)瘡涓涓?/span>i涓嬬殑鍙揪鍊箋傞偅涔堟渶鍚庡氨鍙鍐?/span>n/2琛屼腑鎵懼嚭m[n/2][j]鐨勬渶澶у鹼紙j<=total/2錛夛紝榪欏氨鏄袱鍫嗕箣鍜屾渶鎺ヨ繎鐨勪竴緇勬暟鍊箋?/span>
鍏?/span>2441 Arrange the Bulls
榪欓閲屾垜鐪嬪埌浜嗗姩鎬佽鍒掔殑涓縐嶆柊鐨勬柟娉曘傛瘡澶寸墰鏈夎嚜宸卞枩嬈㈢殑綃悆鍦猴紝鎴戜滑鐨勪換鍔″氨鏄畨鎺掕繖浜涚墰鍒板畠浠枩嬈㈢殑綃悆鍦哄幓錛岀劧鍚庤綆楁墍鏈夊悎鐞嗙殑瑙g殑鏁伴噺錛堢鐞冨満鐨勬暟鐩渶澶?/span>20涓級銆傛樉鐒訛紝瑕佹壘鍒頒竴涓В錛屽緢瀹規(guī)槗灝辮兘鎼滃嚭錛屼絾鏄姹傛墍鏈夎В鐨勬暟閲忥紝濡傛灉鍐嶇敤鎼滅儲鐨勬柟娉曪紝鍦ㄦ椂闂翠笂鏄笉鍫繊鍙楃殑銆傝繖閲岀敤浜嗕竴縐嶆柊鐨勬柟娉曪紙瀵逛簬鎴戞潵璇存槸涓縐嶆柊鏂規(guī)硶^_^錛夈傜敤浜岃繘鍒舵暟璁板綍褰撳墠綃悆鍦轟嬌鐢ㄧ殑鐘舵侊紝“
涓縐嶆槸鐢ㄦ粴鍔ㄦ暟緇勶紝榪欑鏂規(guī)硶鍗犵敤鏃墮棿絀洪棿閮借緝澶э紝鍙︿竴縐嶆槸鐘舵佸帇緙╃殑DP錛屾柟娉曟瘮杈冨閥濡欍?em>鍛靛懙錛岃璁插緱鏇存繁鐐癸紝絳夋垜鍙樻垚鐗涗漢鍦ㄧ畫鍚?#8230;…
涔?jié)銆?/span>2738 Two Ends
鏈夌偣鎯沖崥寮堢殑棰樼洰錛屾垜浜嬬敤dp鏉ュ仛鐨勩傛湁涓緇勬暟錛屼袱涓漢鍒嗗埆杞祦浠庢暟緇勪袱澶村彇鏁幫紝絎竴涓彇鏁扮殑浜哄彲浠ラ夌敤浠繪剰鐨勭瓥鐣ワ紝絎簩涓漢鍒欒涓鐩翠嬌鐢ㄨ椽蹇冪瓥鐣ャ傞棶鏈鍚庣涓涓漢鎵鍙栧緱鐨勬暟瀛椾箣鍜屾瘮絎簩涓漢鍙栧緱鐨勬暟瀛椾箣鍜屾渶澶氬澶氬皯銆?/span>
寰堝鏄撴兂鍒?/span>DP錛岀浜屼釜浜虹殑鍙栨暟瑙勫垯鏄竴瀹氱殑錛屽彧鏈夌涓涓釜浜哄彲浠ラ夋嫨錛岄偅涔堝湪絎竴涓漢鍙栨暟鐨勬椂鍊欏氨鏈夌姸鎬佽漿縐繪柟紼嬶紝dp[i][j]琛ㄧず鍓嶉潰鏄i涓暟鍚庨潰鏄j涓暟鐨勬椂鍊欑涓涓漢鎵鑳藉緱鍒版暟瀛楀拰鐨勬渶澶у箋?/span>
if(dp[i][j]+a[i]>dp[i+1][j])
dp[i+1][j]=dp[i][j]+a[i]; //鍙栧墠闈㈢殑鏁?/span>
if(dp[i][j]+a[j]>dp[i][j-1])
dp[i][j-1]=dp[i][j]+a[j]; //鍙栧悗闈㈢殑鏁?/span>
閭d箞絎簩涓漢鐨勭姸鎬佽漿縐誨氨鐩稿姣旇緝濂界‘瀹氫簡錛?/span>
if(a[i]<a[j] && dp[i][j]!=-1 && dp[i][j]>dp[i][j-1])
dp[i][j-1]=dp[i][j];
if(a[i]>=a[j] && dp[i][j]!=-1 && dp[i][j]>dp[i+1][j])
dp[i+1][j]=dp[i][j];
鏈鍚庝竴姝ュ彧闇姣旇緝dp[i][i]鐨勫鹼紝閫夊叾涓渶澶х殑鍑烘潵灝辮浜?/span>^_^