锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美日韩精品欧美日韩精品一
,你懂的视频欧美,欧美大片一区http://m.shnenglu.com/Climber-pI/archive/2011/08/05/152580.htmlClimber.pIClimber.pIFri, 05 Aug 2011 12:51:00 GMThttp://m.shnenglu.com/Climber-pI/archive/2011/08/05/152580.htmlhttp://m.shnenglu.com/Climber-pI/comments/152580.htmlhttp://m.shnenglu.com/Climber-pI/archive/2011/08/05/152580.html#Feedback0http://m.shnenglu.com/Climber-pI/comments/commentRss/152580.htmlhttp://m.shnenglu.com/Climber-pI/services/trackbacks/152580.html7.26
鏈闀垮叕鍏卞瓙搴忓垪lcs, O(N^2)
f[i][j] = max{f[i-1][j], f[i][j-1], f[i-1][j-1]+1(if A_i==B_j)}
鍒濆鍖杅[_][0] = f[0][_] = 0
7.27
緙栬緫璺濈edit, O(N^2)
f[i][j] = min(f[i][j-1] + 1, f[i-1][j] + 1, f[i-1][j-1] + !(A_i==A_j))
鍒濆鍖杅[i][0] = f[0][i] = i
*鍙傝僛榪欓噷]http://en.wikipedia.org/wiki/Levenshtein_distance
*鐘舵佽漿縐昏繃紼嬩腑, 鍏呭垎涓嶄竴瀹氭渶浼? 蹇呰鎵嶆槸鏈浼? 浜嬪疄涓婅竟鐣屾潯浠舵繪湁鍏跺叿浣撴剰涔?br />*[鐩稿叧]http://www.matrix67.com/blog/archives/333
鏈鐭洖鏂囦覆palindrome[poj 1159], O(N^2)
1.濂楃敤lcs, O(N^2), 60
f[i][j] = max{f[i-1][j], f[i][j-1], f[i-1][j-1]+1(if A_i==B_j)}
鍒濆鍖杅[_][0] = f[0][_] = 0, n - f[n][n]鍗充負(fù)絳旀
*鍒╃敤婊氬姩鏁扮粍浼樺寲, 絀洪棿澶嶆潅搴(N), 80
*鍏抽敭璇彞k = 1 - k, 娉ㄦ剰鍦ㄥ唴灞傚驚鐜
2.濂楃敤edit, O(N^2), 30
f[i][j] = min(f[i][j-1] + 1, f[i-1][j] + 1, f[i-1][j-1] + 2*!(A_i==A_j))銆?br />鍒濆鍖杅[i][0] = f[0][i] = i, f[n][n]/2鍗充負(fù)絳旀
3.O(N^2), 30
f[i,j]琛ㄧず灝咥i..Aj鍙樹負(fù)鍥炴枃涓茬殑鏈灝忎唬浠鳳紝鍒?br />f[i][j] = f[i+1][j-1] (鑻i=Aj)
min(f[i+1][j],f[i][j-1])+1 錛堣嫢Ai<>Aj錛?br />4.鍒╃敤浣嶈繍綆椾紭鍖?br />http://www.csse.monash.edu.au/~lloyd/tildeStrings/Alignment/86.IPL.html
紜竵鎵鵑浂coin[瀹屽叏鑳屽寘], O(N^2)
f[j] = min(f[j], f[j-c[i]]+1)
鍒濆鍖杅[0] = 0, f[1..T] = INT_MAX
*娉ㄦ剰涓嬫爣闈為浂 鍜?INT_MAX鐨勬孩鍑?/p>
7.28
瀵煎脊鎷︽埅missile[LIS + 浜屽垎], O(NlogN)
(1)浜屽垎鏌ユ壘O(logn)
f[i] = max(f[j] + 1) (j < i)
d[i] = min(f[k]) (f[k] == i)
鏄撶煡d[i]鍗曡皟, 鍥犺屽彲浠ュ埄鐢ㄤ簩鍒嗘煡鎵鵑檷浣庡鏉傚害, i鏈澶у煎嵆LIS闀垮害涓簍, 閭d箞
i) f[i-1] < k <= f[i] (1 <= i <= t)
ii) 鑻 > 浠繪剰f[], 鍒檉[t+1] = k;
iii) 鑻?k, 鍒檉[1] = k;
*渚嬪瓙鍙傝[榪欓噷]http://www.matrix67.com/blog/archives/112
[浠g爜瀹炵幇]
//鎯呭喌ii鍜宨ii闇瑕佸崟鐙鐞?br />x = 1; y = t;
while (x <= y){
m = (x + y)/2;
if (f[m-1] < k && k <= f[m]) break;//瀵逛簬鏈闀夸笂鍗囧瓙搴忓垪鍜屾渶闀夸笉涓嬮檷瀛愬簭鍒楀垽瀹氭潯浠朵笉鏄???
//if (f[m-1] < k && k <= f[m]) return m;
else if (k > f[m]) x = m + 1錛?br /> else y = m - 1;
//return x;
}
*鍒╃敤娉ㄩ噴, 鍙互閬垮厤瀵規(guī)儏鍐礽i鐨勫崟鐙鐞哃IS鐨勬柟妗? 璁板綍鏂規(guī)闇瑕佷嬌鐢╬re鏁扮粍, 鑼冧緥涓嶇煡???
*闇瑕佹敞鎰忕殑鏄? f鏁扮粍緇欏嚭鐨勫茍闈炴槸涓涓?br />(2)鏈灝戦摼鍒掑垎 = 鏈闀垮弽閾鵑暱搴?鍏充簬鍋忓簭闆? 鍙傝銆婄粍鍚堟暟瀛︺婸73)
[Dilworth瀹氱悊]浠わ紙X,≤錛夋槸涓涓湁闄愬亸搴忛泦錛屽茍浠鏄弽閾劇殑鏈澶х殑澶у皬銆傚垯X鍙互琚垝鍒嗘垚m涓絾涓嶈兘鍐嶅皯鐨勯摼銆?/p>
鏈闀夸笉涓嬮檷瀛愬簭鍒條is[LIS + 浜屽垎], O(NlogN)
瀵筟1..k-1][k+1..n]涓や釜搴忓垪鍒嗗埆榪涜涓嬈IS鍗沖彲.
*闂鐨勫叧閿箣澶勫湪浜庣涓嬈$悊瑙d笉褰誨簳鍜屾誕韜? 浠ュ強(qiáng)瀵逛簬鍥伴毦紼嬪害鐨勪笉鍚堢悊浼拌.
7.29
鍔犲垎浜屽弶鏍?wèi)tree[鍖洪棿 + 璁板綍鏂規(guī)], O(N^3), 20min
f[i][j] = max(f[i][k-1] * f[k+1][j] + A[k]) (i <= k <= j)
鍒濆鍖杅[i][i] = A[i], f[i+1][i] = 1
[璁板綍鏂規(guī)]pa[i][j] = k, 閫掑綊鍗沖彲, [杈圭晫]pa[i][j] == i 鎴栬?j, 浠ュ強(qiáng)i == j鐨勬儏鍐?/p>
鏁存暟鍒掑垎separate[鍖洪棿 + 璁板綍鏂規(guī)], O(N^3), 2h
f[k][i]琛ㄧず搴忓垪1..i鍒嗘垚k孌電殑鏈澶у?br />f[k][i] = max(f[k-1][j-1] * A[j][i])
pa[k][i] = j
鍒濆鍖杅[1][_] = A[1][_], 鍏朵粬f[][] = -1
*娉ㄦ剰絳夊彿鎯呭喌鍚屾牱闇瑕佹洿鏂?br />if (f[K][i] <= f[K-1][k-1] * A[k][i])
f[K][i] = f[K-1][k-1] * A[k][i],
pa[K][i] = k; //璁板綍鏂規(guī)
*灝哰pa[k][i], i]鍔犲叆絳旀, 閫掑綊[1, pa[k][i]-1], [杈圭晫] k == 0
*鍦╓in涓嬩嬌鐢╨ong long鍗犱綅絎︿負(fù)"%I64d", 鍦↙inux涓嬪崰浣嶇涓?%lld", 鑰冭瘯涓埄鐢?lt;fstream>閬垮紑鍗犱綅絎﹂棶棰?/p>
鍑稿杈瑰艦鐨勪笁瑙掑墫鍒哾ivision[鍖洪棿]
f[i][j] = max{f[i][k] + f[k][j] + w(i, j, k)} (i < k < j)
鍒濆鍖?<=i-j<=2鐨刦鍙負(fù)0, 鍏朵粬涓?1
*琛ㄨ揪寮忎腑鍚屾椂鍑虹幇l(fā)ong long鍜宨nt鐨勮瘽, 浼?xì)鑷姩铦{鎹負(fù)int
*鍙繃浜?涓偣, 鍘熷洜涓嶇煡 -> 鏁版嵁閿欒, 鏈鍚?涓偣output涓鏍?br />*鍚勭紲炵墰浠櫘閬嶆寚鍑烘病鏈夎冭檻i>j鐨勬儏鍐?-> 鎬庝箞鍐???
鏈哄櫒鍒嗛厤machine[鍖洪棿], O(N^3)
f[i][j] = max(f[i-1][k] + A[i][j-k]) (0 <= k <= j)
鍒濆鍖杅[][] = 0, f[i][j] = max(f[i][j], A[i][j])
*娉ㄦ剰璇婚"絎琲涓叕鍙稿垎閰峧鍙版満鍣ㄧ殑鐩堝埄", 涓嶆槸鍒嗛厤絎琷鍙版満鍣ㄧ殑鐩堝埄
瑁呯闂box[鍒嗙粍鑳屽寘], O(N^2), 30min
f[i][j] = max{f[i-1][j], f[i-1][j-c[i][k]] + w[i][k]}
鍒濆鍖杅[][] = 0
*璇婚鏃舵敞鎰忓彉閲忕殑瀵瑰簲鍏崇郴
*娉ㄦ剰鏈涓儗鍖呬笉涓瀹氳瑁呮弧
7.31
鏈闀垮墠緙prefix[鍒ゆ柇鎬p], O(kN), 70min
f[i] |= f[i - len[j]] & check(i - len[j] + 1, j) (1 <= i,j <= n)
鍒濆鍖杅[] = 0, check(x,y)琛ㄧず涓諱覆[x,x+len[y]-1]鍜屽墠緙y鏄惁鐩稿悓
*寮勯敊j鍜宭en[j], 娉ㄦ剰鏂圭▼鐨勫瓧姣嶆寚浠? 浠ュ強(qiáng)瀹炵幇涓殑瀛楃鎸囬拡浣嶇疆, 娉ㄦ剰闈欐佹煡閿橻30min]
*[8.4浼樺寲]鎶奵heck鍑芥暟鐩存帴鍐欏湪寰幆涓? 濡傛灉f[i] == 1鐩存帴break -> 渚濇棫瓚呮椂涓変釜鐐?br />*[8.5浼樺寲]i鐨勪笂闄愪負(fù)min(n, ans + 20), 鏇存柊f[i]鐨勬椂鍊欒褰昦ns鍗沖彲 -> AC
8.1
鍏抽敭瀛愬伐紼媝roject[DAG鏈闀胯礬], 70min
f[i] = max(f[j] + w[i]) (G[j][i] == 1)
鍒濆鍖杅[i] = w[i]
璁板綍鏂規(guī), 鍒╃敤f[i] == w[i] + f[j] (G[j][i] == 1)
*鍒╃敤瀹氫箟姹傛嫇鎵戞帓搴? 杈撳嚭鏂規(guī)鍙互鍒╃敤闃熷垪灝嗛掑綊杞寲涓鴻凱浠? 鏃犺В鎯呭喌鐢╢lag鏍囪(inq鏁扮粍琛ㄧず鏄惁鍦ㄩ槦鍒椾腑)
*鍦ㄧ焊涓婂啓鍑哄叧閿儴鍒嗙殑浠g爜, 涓ゅ嶈璺?姣斿閫掓帹鎴栬呰蹇嗗寲鍑芥暟, 杈撳嚭鏂規(guī)鐨勫嚱鏁?
8.2
涓夎铔嬬硶trigon[鍧愭爣dp], 130min
[鍋氭硶1](闇淇濈暀絀烘牸)
f_[i][j]琛ㄧず浠?i, j)涓洪《鐐圭殑Rt△鐨勬渶澶ц竟闀?br />瀵逛簬鍊掍笁瑙掑艦, 鑷彸鍚戝乏 f1[i][j] = min(f1[i+1][j], f1[i][j+1]) + 1
鑷乏鍚戝彸 f2[i][j] = min(f2[i+1][j], f2[i][j-1]) + 1
瀵逛簬姝d笁瑙掑艦, 鑷彸鍚戝乏 f1[i][j] = min(f1[i-1][j], f1[i][j+1]) + 1
鑷乏鍚戝彸 f2[i][j] = min(f2[i-1][j], f2[i][j-1]) + 1
鍒濆鍖? f[][] = 0(A[][] = '#'), f[][] = 1(A[][] = '-'); min(f1[i][j], f2[i][j])^2鐨勬渶澶у煎嵆涓虹瓟妗?br />[鍋氭硶2](涓嶉渶淇濈暀絀烘牸)
f[i][j]琛ㄧず浠?i, j)涓洪《鐐圭殑△鐨勬渶澶ч珮搴?br />瀵逛簬鍊掍笁瑙掑艦, f[i][j] = min(f[i-1][j], f[i-1][j+1], f[i-1][j+2]) + 1
瀵逛簬姝d笁瑙掑艦, f[i][j] = min(f[i+1][j], f[i+1][j-1], f[i+1][j-2]) + 1
鍒濆鍖? f[][] = 0(A[][] = '#'), f[][] = 1(A[][] = '-'); min(f[i][j])^2鍗充負(fù)絳旀
*杈撳叆闇淇濈暀絀烘牸, 鍗′簡30min(鎺掗櫎ASCII涓?0鎴?3鐨勫瓧絎﹀嵆鍙?
*娌℃湁鑰冭檻姝f柟鍚? 澶х害2h鏃跺鐓td鍙戠幇
*鏈変袱涓偣鏁版嵁閿欒, 瀵圭収std鍚庡彂鐜皊td浠呭綋妯潗鏍囦負(fù)濂囨暟鏄冭檻鍊掍笁瑙掑艦, 妯潗鏍囦負(fù)鍋舵暟鏃惰冭檻姝d笁瑙掑艦, 鑰岄鐩腑鏃犳闄愬埗
*瀛︿範(fàn)鍒╃敤鎵瑰鐞嗗鎷嶇殑鍐欐硶
@echo off
:again
gen
trigon
trigon_me
fc trigon.out trigon_me.out > nul
if not errorlevel 1 goto again
閫夎course[鏍?wèi)迮瀌p]
[鍋氭硶1]澶氬弶杞簩鍙?br />f[i][j]琛ㄧず浠涓烘牴鑺傜偣鐨勬爲(wèi)涓? 閫夋嫨j闂ㄨ
f[i][j] = max(f[i.r][j], f[i.l][k] + f[i.r][j-k-1] + i.v) (0<=k<j)
鍒濆鍖杅[][] = 0
*鏃犳硶璁板綍鏂規(guī) -> gXX琛ㄧず姣旇緝鍥伴毦
[鍋氭硶2]娉涘寲鐗╁搧
??? -> 鎯蟲挒澧?-> 闇瑕佸涔?/p>
閫氬悜鑷敱鐨勯挜鍖檏ey[鏍?wèi)迮瀌p], 150min, zoj 2280
f[i][j]琛ㄧず浠涓烘牴鑺傜偣鐨勬暟, 鑺辮垂鑳介噺涓簀鏃跺彲浠ユ嬁鍒扮殑鏈澶氱殑閽ュ寵鏁?br />f[i][j] = max(f[i.r][j], f[i.l][k] + f[i.r][j-k-i.c] + i.v) (o<=k<=j-i.c)
鍒濆鍖杅[][] = -1, 杈圭晫澶勭悊f[i][j] = 0(i<=0 || j<0)
*璁板綍鍚勭偣閭繪帴鐭╅樀, 鍒╃敤dfs鏋勯犳爲(wèi)(娉ㄦ剰澶勭悊鍚庡彇娑堥偦鎺?, 騫跺鍙夎漿浜屽弶 -> 30min
*瀵逛簬f[i.r][j]涓嶅繀鍦ㄨ蹇嗗寲鎼滅儲(chǔ)鍑芥暟涓亶鍘嗘墍鏈夊厔寮? 鍙亶鍘嗘渶榪戠殑鍗沖彲
*娉ㄦ剰璇婚, 鍑哄彂鐐逛負(fù)1, i.c鍜宨.v闈炶礋 -> 1.5min
*娉ㄦ剰闈欐佹煡閿? 濡傝蹇嗗寲鎼滅儲(chǔ)涓璬p(i, j)鎵撴垚f(i, j)鐨勬儏鍐?br />*瑙夊緱姣旇緝鏅曠殑鏃跺欑瓑涓涓嬪啀璋冮, 鍙互鍏堝共鐐瑰埆鐨? 榪欐牱鍙互鍑忓皯鏃墮棿鐨勬氮璐?/p>
璀﹀崼瀹夋帓security[鏍?wèi)迮瀌p], 100min
[鐘舵乚
f[i][0]琛ㄧず浠涓烘牴鑺傜偣, 騫跺湪i瀹夋帓璀﹀崼鐨勬渶灝忚姳璐?br />f[i][1]琛ㄧず浠涓烘牴鑺傜偣, i鐨勭埗鑺傜偣宸插畨鎺掕鍗殑鏈灝忚姳璐?br />f[i][2]琛ㄧず浠涓烘牴鑺傜偣, i鐨勫瓙鑺傜偣宸插畨鎺掕鍗殑鏈灝忚姳璐?br />[鏂圭▼]
f[i][0] = Σmin(f[i.son][0], f[i.son][1], f[i.son][2]) + i.v
f[i][1] = Σmin{f[i.som][0], f[i.son][2]} (i涓嶆槸鏍?wèi)鐨勬牴鑺傜?
f[i][2] = min{Σmin{f[i.son][0], f[i.son][2]}(i.son != k) + f[k = i.son][0]}
[鍒濆鍖朷
瀵逛簬鍙惰妭鐐? f[i][0] = i.v, f[i][1] = 0, f[i][2] = i.v
瀵逛簬鍏朵粬鍊? f[][] = -1
*瀵逛簬鏍硅妭鐐圭殑瀵繪壘, 鍒╃敤prev[i]璁板綍i鐨勫墠椹? 鑻?prev[i], 鍒檌涓烘爲(wèi)鏍?br />*緇撳悎鎵瑰鐞嗗拰makedata浠ュ強(qiáng)灝忚寖鍥存毚鍔涚▼搴? 鍙互鏈夋晥鍦伴伩鍏嶅悇縐嶉敊璇強(qiáng)鏋佺鎯呭喌 -> 闇瑕佸涔?fàn)鎼滅?br />*瀵逛簬榪欑被棰樼洰, 鎬濊冪殑鍏抽敭鍦ㄤ簬鍒嗙被鍐欏嚭鏂圭▼, 騫舵敞鎰忔柟紼嬬殑杈圭晫鏉′歡(綾諱技:tyvj 娌℃湁涓婂徃鐨勮垶浼?
*瀵逛簬鏍?wèi)迮瀌p, 瀛樺湪涓ょ綾誨瀷; 涓縐嶆槸瀵逛簬鍔犳潈璺緞闀垮害闄愬埗, 鍙︿竴縐嶅垯鏄眰鍔犳潈鏈鍊?/p>
8.4
闈掕洐鐨勭儲(chǔ)鎭糵rog[鍖洪棿dp]
鍒濈湅鏄渶灝忕敓鎴愭爲(wèi)闂, 浣嗘槸姝ら鏈夊嚑涓壒鍒殑鎬ц川:
1.浠?鍙瘋嵎鍙朵負(fù)璧風(fēng)偣, 緇堢偣涓嶅畾
2.閬嶅巻鑽峰彾鐨勬渶鐭礬寰勬槸涓鏉¢摼
3.棰樼洰緇欏嚭鐨勫潗鏍囬『搴忔槸涓涓『鏃墮拡鏂瑰悜鐨勫杈瑰艦
4.鏈鐭礬寰勪笉鐩鎬氦(鐢諱竴涓洓杈瑰艦, 鍒╃敤涓夎褰㈡ц川鍙互瑙傚療鍒?
鏍規(guī)嵁鎬ц川1鍜?, 瀹規(guī)槗寰楀嚭O(N^3)鐨勬柟紼? 寰堟槑鏄句細(xì)瓚呮椂
f[i][j] = min(f[k][j-1] + d[i][k]) (i!=k)
-f[i][j]琛ㄧず浠涓鴻搗鐐? 闀垮害涓簀鐨勬渶鐭礬寰? 鍒濆鍖杅[i][1] = 0
榪涜岃冭檻鎬ц川3鍜?, 鍥犺屽浜庣偣1, 鍙兘閫夋嫨鐩擱偦鐨勭偣2鍜宯, 鍙互寰楀埌O(N^2)鐨勬柟紼?br />f[i][j][0] = min{f[i+1][j-1][0] + d[i][i+1], f[i+1][j-1][1] + d[i][i+j-1]}
f[i][j][1] = min{f[i][j-1][1] + d[i+j-1][i+j-2], f[i][j-1][1] + d[i+j-1][i]}
-f[i][j][0]琛ㄧず浠涓鴻搗鐐? 闀垮害涓簀鐨勬渶鐭礬寰? f[i][j][1]琛ㄧず浠涓虹粓鐐? 闀垮害涓簀鐨勬渶鐭礬寰? 鍒濆鍖杅[][1][] = 0
-涓涓疄鐜頒笂鐨勫皬浼樺寲, 淇濊瘉d[i][j](i<j)
*娉ㄦ剰闈欐佹煡閿? 鍖哄埆鍙橀噺鍚? 鎬濊冪畻娉曠殑榪囩▼搴旇闀夸簬璋冭瘯鐨勮繃紼?br />*淇浜嗘祴璇曠偣6
鐏濺榪涚珯train[綰挎p], 70min
1.M <= 3 -> 鍙互鍒嗙被璁ㄨ
2.鍙瓨鍦ㄤ竴鏉¤建閬? M鍙兘鍐沖畾杞ㄩ亾鐨勯暱搴?-> 濡傛灉鍚屾椂鍦ㄨ建閬撲腑, i鍦╦鍓嶇殑蹇呰鏉′歡鏄痠.s<=j.s鍜宨.t<=j.t
3.灝忕珯宸ヤ綔浜哄憳鍙互浠繪剰瀹夋帓榪欎簺鐏濺榪涚珯鐨勫厛鍚庢帓鍒?-> 璁板繂鍖栨悳绱?br />4.灝忕珯鍏佽鍑犺締鐏濺鍚屾椂榪涚珯鎴栧嚭绔?-> 鎵鏈夋潯浠墮兘鍙彇絳夊彿
M = 1, f[i] = max(f[j] + 1) (i.t <= j.s)
M = 2, f[i][j] = max(f[j][k] + 1) (i.t <= k.s)
M = 3, f[i][j][k] = max(f[j][k][l] + 1) (i.t <= l.s)
鍒濆鍖杅 = 0, 鍒╃敤vis璁板綍鏄惁璁$畻榪? 鍚勪笅鏍囦簰涓嶇浉絳?br />*鏋氫婦榪囩▼涓敞鎰忓壀鏋? 鍒╃敤i!=j鍜宨.s<=j.s,i.t<=j.t閫愬眰澶勭悊鍗沖彲
*[璇婚]鏄庣‘瑕佹眰鐨勬槸浠涔? 瀛樺湪鍝簺鏉′歡, 鍐檒ist
*[鏈獙璇乚鍏堝浠ヨ繘绔欐椂闂翠負(fù)絎竴鍏抽敭瀛? 鍑虹珯鏃墮棿涓虹浜屽叧閿瓧榪涜蹇帓, 鐒跺悗鐩存帴閫掓帹, 涓嬫爣婊¤凍i < j < k < l
蹇闂meal[璧勬簮鍒嗛厤(涓嶅Θ璁や負(fù)鏄儗鍖?dp + 璐績浼樺寲] -> 綾諱技, usaco 3.4.4 rocker
f[k][i][j]琛ㄧずk鏉$敓浜х嚎鐢熶駭i涓眽鍫? j涓柉鏉℃椂鐢熶駭楗枡鐨勬渶澶у? p[k][i][j]琛ㄧず絎琸鏉$敓浜х嚎, 鍏朵粬鍚?
f[k][i][j] = max{f[k][i-ki][j-kj] + p[k][i][j]}
sum[i] = sum[i-1] + A[i]
鍒濆鍖杅[1][i][j] = p[1][i][j], f[2..n][i][j] = -1, 澶嶆潅搴(N*100^4)
鍑犱釜浼樺寲
1.娉ㄦ剰鍒版瘡縐嶇墿鍝佹繪暟灝忎簬100, 鏈澶т駭閲忕殑涓婇檺鏄痩im = min(100/a, 100/b, 100/c, sum[n]/(a*p1+b*p2+c*p3))
2.涓轟簡閬垮厤鏁扮粍瓚婄晫, i鐨勪笂闄愭槸min(lim*a, sum[n]/p1), j鐨勪笂闄恗in(lim*b, (A[k] - i*p1)/p2);
ki鐨勪笂闄恗in(i, A[k]/p1), kj鐨勪笂闄恗in(j, (A[k] - ki*p1)/p2) -> 瀵逛簬閫楀彿鍙寵竟, 鍏跺疄灝辨槸ki*p1+kj*p2<=A[k]
3.灝嗙▼搴忎腑鐨刴in/max鐢╥f璇彞鏇夸唬
4.瀵逛簬姣忎竴濂楃敓浜х嚎, 灝介噺鎴愬鐢熶駭
[鍙嶄緥]
1 1 1
2 3 7
3
15 16 17
璐績鍙緱鏈澶у間負(fù)3, 瀹為檯涓?5 = 7 + 3 + 3 + 2, 16 = 7 + 3 + 2 + 2 + 2, 17 = 7 + 7 + 3, 鏈澶у間負(fù)4;
鍒╃敤浼樺寲1鍜?鍙互榪?涓祴璇曠偣, 浼樺寲3鍙互榪涗竴姝ヤ紭鍖栨椂闂村父鏁? 鍒╃敤浼樺寲4鍙互榪?涓祴璇曠偣
AC紼嬪簭鍙傝[姝ゆ枃]http://hi.baidu.com/zijingningmeng/blog/item/2761617e2afe7ae32e73b3b3.html
*璋冭瘯榪囩▼涓殑涓昏闂鏄竟鐣屾孩鍑?娌℃湁鍖哄垎鏄惁璁$畻榪?, 鍙橀噺鍚嶅啓閿?br />*緗戜笂鏈夎娉曡〃紺哄幓鎺夋瘡縐嶇墿鍝佺殑浠舵暟闄愬埗鍚? 棰樼洰鍙樻垚緗戠粶嫻?-> gXX璇佷吉
*姣旇禌鐨勮瘽, 涓嶅Θ灝忔暟鎹?n<5)DP, 澶ф暟鎹?n>=5)璐績, 榪欐牱搴旇鍙互寰楀埌瓚呰繃涓鍗婄殑鍒嗘暟
鍗¤濺鏇存柊闂truck, O(N^2), 1h
f[i][k]琛ㄧず絎琲騫存煇杞﹀凡浣跨敤浜唊騫?br />f[i][k] = max{f(i+1, 1) + R[0] - U[0] - C[k], f(i+1, k+1) + R[k] - U[k]}
鍒濆鍖杅[][] = -1, 杈圭晫鏉′歡f[i][k] = 0(i>N,k>K), 鍒╃敤璁板繂鍖栨悳绱㈠疄鐜?br />璁板綍鏂規(guī)鍒╃敤bool鍨嬫暟緇刾rev[i][j][k]璁板綍鏄惁璐拱鏂拌濺, 閫掑綊鍗沖彲
*灝藉彲鑳戒笉鎹㈡柊杞?br />*鍒╃敤鏍蜂緥鏋勯犳爲(wèi), 鍐欏嚭鐘舵佸嵆鍙緱鍒版柟紼?br />*嫻嬭瘯鐐?瀛樺湪絳変環(huán)鏂規(guī), 宸蹭慨姝f暟鎹?鍙兘闇瑕丼pecial Judge)
*f[i][j][k]涓璱鍜宬鍙互鍞竴紜畾鐘舵? 鍥犺屽彲浠ュ幓鎺変腑闂?緇?/p>
閫夎course[鏍?wèi)迮瀌p + 璁板綍鏂規(guī)], 澶氬弶杞簩鍙夊疄鐜?br />f[i][j]琛ㄧず浠涓烘牴鑺傜偣鐨勬爲(wèi)涓? 閫夋嫨j闂ㄨ
f[i][j] = max(f[i.r][j], f[i.l][k] + f[i.r][j-k-1] + i.v) (0<=k<j)
鍒濆鍖杅[][] = 0
[璁板綍鏂規(guī)]
鍒╃敤print(i, j)閫掑綊, vis[i][j]琛ㄧず鏄惁宸查亶鍘? [杈圭晫]i∈[1, m], j∈[1, n]
right[i][j]琛ㄧずf[i][j]鏄惁絳変簬f[i.r][j]
prev[i][j] = k琛ㄧずf[i][j]鐢眆[i.l][k],f[i.r][j-k-1]鎺ㄥ緱, 榪欐椂闇璁板綍p[i] = 1
浠?鍒皀鍒ゆ柇p[i]鐩存帴杈撳嚭鍗沖彲.
8.5
騫垮満閾虹爾闂floor[鐘跺帇dp], 2h
f[i][S] = Σf[i-1][S'] (S鐢盨'鎺ㄥ緱)
鍒濆鍖杅[1][0] = 1, f[h+1][0]鍗充負(fù)絳旀
瀵逛簬姣忎釜f[i-1][S']鍒╃敤dfs(褰撳墠琛宨, 褰撳墠琛岀姸鎬乻1, 涓嬩竴琛岀姸鎬乻2, 褰撳墠琛屾寚閽坘)瀵繪壘S
if(!(s2 & 1<<k) && !(s2 & 1<<(k+1)))
dp(i, s1, s2, k + 2);//瀛樺湪榪炵畫涓や釜絀轟綅, 鍗蟲í鏀?br />dp(i, s1, s2 ^ (1<<(k)), k + 1);//瀵瑰綋鍓嶄綅鍙栧弽, 鍗崇珫鏀?br />鍒╃敤int淇濆瓨姣忎竴浣嶇殑鎽嗘斁鏂瑰紡, 1琛ㄧず褰撳墠琛岃涓婁竴琛屽崰鐢? 0琛ㄧず褰撳墠琛屾湭琚崰鐢?br />[杈圭晫]k = 0, 閫掑綊榪囩▼涓璳 > w鍒欓鍑?/p>
紜湪鍦版澘floor2[鐘跺帇dp]
f[i][S] = Σf[i-1][S'] (S鐢盨'鎺ㄥ緱)
鍒濆鍖杅[1][0] = 1, f[h+1][0]鍗充負(fù)絳旀
*瀹炵幇鏃犺兘, 鏈緇堟斁寮?-> 鎴戝簲璇ュ幓瀛︿綅榪愮畻浼樺寲BFS -_-
*楸肩墰銆婄姸鎬佸帇緙┿嬬悊瑙d笉鑳? NOI瀵煎垔鏈卞叏姘戞枃绔燾ode涓嶅叏.
*鑰楁椂鏈闀跨殑棰樼洰寰寰涓嶆槸琛ㄩ潰涓婄殑闅鵑, 鑰屾槸閭d簺琚畝鍗曚及璁$殑闅鵑

]]>- Problem List (7.13 ~ 7.20)http://m.shnenglu.com/Climber-pI/archive/2011/07/21/151551.htmlClimber.pIClimber.pIThu, 21 Jul 2011 07:55:00 GMThttp://m.shnenglu.com/Climber-pI/archive/2011/07/21/151551.htmlhttp://m.shnenglu.com/Climber-pI/comments/151551.htmlhttp://m.shnenglu.com/Climber-pI/archive/2011/07/21/151551.html#Feedback0http://m.shnenglu.com/Climber-pI/comments/commentRss/151551.htmlhttp://m.shnenglu.com/Climber-pI/services/trackbacks/151551.html7.13
p1057 閲戞槑鐨勯綆楁柟妗圼鍒嗙粍鑳屽寘], 1.5h
f[v] = max{f[v], f[v - c[i][j]] + w[i][j]}
*娉ㄦ剰璇婚錛屼富浠剁殑緙栧彿鍜岀墿鍝佺紪鍙風(fēng)浉鍚岋紝榪欓噷璋冧簡1h
*娉ㄦ剰閫楀彿鐨勪嬌鐢?br />
@Ural p1018 Binary Apple Tree[鏍?wèi)迮瀅, 1.5h{澶ч噺鍙傝冮瑙
f[i][j] = max(f[tree[i].l][k] + f[tree[i].r][j-k-1] + tree[i].v)
*鍒濆鍖栦腑浣跨敤-1鏍囪鏈綆?閬垮厤閲嶅0)
*閫掑綊寤烘爲(wèi) -> 瀵繪壘鍎垮瓙鐨勮繃紼嬪彲鍒╃敤閭繪帴琛ㄤ紭鍖朳鏈獙璇乚
*璁板繂鍖栨悳绱[t][q]鍒濆鍖栦負(fù)0, 鏍硅妭鐐瑰兼渶鍚庤綆? 娉ㄦ剰鐗規(guī)畩鎯呭喌0
*鐗瑰埆娉ㄦ剰, 鎶婇鐩腑鐨?杈規(guī)潈 杞崲涓?鐐規(guī)潈, 浠ュ強(qiáng)q鐨勭浉鍏沖彉鍖?br />
7.15
#p1051 閫夎[鏍?wèi)迮濪P], 1.5h
f[i][j] = f[tree[i].r][j] (宸﹀瓙鏍?wèi)绌?
f[tree[i].l][k]+f[tree[i].r][j-k-1]+tree[i].v (宸﹀瓙鏍?wèi)闈灲I?
*澶氬弶鏍?wèi)铦{浜屽弶鏍?-> 宸﹀効瀛? 鍙沖厔寮?br />if (!left[a]) tree[a].l = i;
else tree[left[a]].r = i;
left[a] = i;
**璁板繂鍖栨悳绱㈣繃紼嬩負(fù)浠涔堜笉鑳界洿鎺ヨ繑鍥瀒nt -> 瀹為獙璇佸疄浼?xì)寮曡捣閿欒? 鍘熷洜涓嶆槑 -> 鐩茬洰鍚堝茍璇彞鎵鑷?br /> if (f[i][j] || i == 0 || j <= 0) return 0;
搴斾負(fù)
if (i == 0 || j <= 0) return 0;
if (f[i][j]) return f[i][j] ;
-> 鍚堝茍姝ょ被鎺у埗杈圭晫璇彞搴旀敞鎰忚繑鍥炲?br />**娉涘寲鑳屽寘鍋氭硶 http://archive.cnblogs.com/a/2091585/
p1087 sumsets[瀹屽叏鑳屽寘+緇熻鏂規(guī)鏁癩, 60min
f[i][j] = f[i-1][j] + f[i][j-c[i]] (f[0][0] = 1)
涓寮濮嬬洸鐩垪琛ㄦ壘閫掓帹寮? 灝濊瘯鏃犳灉. 鍚庡彂鐜伴鐩湰鎰忓嵆瀹屽叏鑳屽寘闂, 2^k鏄墿浣? 瀹炵幇鏃舵敞鎰忛檷緇?
*緇熻鏂規(guī)鎬繪暟闂閫掓帹寮忎腑max鏀逛負(fù)+, 娉ㄦ剰f[0] = 1
*姝ょ被闂娉ㄦ剰楂樼簿搴︾殑瀹炵幇 鎴栬?mod(娉ㄦ剰棰樼洰涓姹? 濡傛湰棰?浣嶇簿搴?
*鍙︿竴縐嶆柟紼?f[i] = f[i-1] (i=2k+1) -> 宸查氳繃瑙傚療寰楀埌
f[i-1] + f[i/2](i=2k) -> 鍔ㄦ満鏄粈涔?
p1079 鏁板瓧涓夎褰?[鍧愭爣DP], 30min
f[i][j] = max(f[i+1][j], f[i+1][j+1]) + A[i][j] (0 < j <= i <= n/2)
閫氳繃鍒嗘瀽鍙煡, 鎸囧畾鐐?n/2, n/2)鍓?i, i)蹇呭彇, 鑰屽叾鍚庡拰涓鑸暟瀛椾笁瑙掑仛娉曠浉鍚? 緇堢偣涓篺[n/2][n/2]
鏁呮渶緇堢瓟妗?#931;f(i,i)_(0 < i < n/2) + f[n/2][n/2]
*鍧愭爣闂娉ㄦ剰鍒嗘瀽璧風(fēng)偣鍜岀粓鐐圭殑瑕佹眰
p1084 鏁板瓧涓夎褰?[鍧愭爣DP], 10min
(x, y)鍓? f1[i][j] = max(f1[i-1][j-1], f1[i-1][j]) + A[i][j] (0 < j <= i <= x)
(x, y)鍚? f2[i][j] = max(f2[i+1][j], f2[i+1][j+1]) + A[i][j]
鍒嗘瀽鍙煡, (x, y)鍓嶉『鎺? 鎸囧畾緇堢偣涓?x, y), 璧風(fēng)偣蹇呯劧涓?1, 1), (x, y)鍚庨嗘帹, 鎸囧畾緇堢偣涓?x, y)
鏁呮渶緇堢瓟妗堜負(fù)f1[x][y] + f2[x][y] - A[x][y]
p1076 鏁板瓧涓夎褰?[鍒ゅ畾鎬P], 30min
f[i][j][(k+A[i][j])%100] = f[i+1][j][k] | f[i+1][j+1][k]
閫氳繃澧炲姞緇村害杞寲涓哄垽瀹氭ч棶棰? 鐢變簬鍙栨ā鎵浠鐨勯『搴忎笉紜畾, 鍥犺岀敤鍧愭爣鏉ユ帶鍒墮『搴?br />
7.16
#p1048 鐢板繉璧涢┈[璐績 + DP], 1.5h
1.O(N + NlogN), [棰樿В鏉ヨ嚜緗戠粶]鎬濇兂鏄繖鏍風(fēng)殑, 鍏堟妸鍚勭粍椹殑閫熷害浠庡ぇ鍒板皬鎺掑簭, 鐒跺悗鐢ㄧ敯蹇岀殑椹『搴忎笌榻愬▉鐜嬬殑椹瘮杈?br />if錛堢敯蹇岀殑椹揩錛夋瘮杈冧笅涓瀵歸┈錛?br />else if錛堢敯蹇岀殑椹參錛夌敤鐢板繉鏈鎱㈢殑椹拰榻愬▉鐜嬬殑榪欏尮椹禌
else{
浠庢湭榪涜姣旇禌鐨勯熷害灝忕殑椹紑濮嬩粠鍚庡線鍓嶆瘮
if錛堢敯蹇岀殑椹揩錛?nbsp; //榪欓噷鏄繀欏葷殑錛屽惁鍒欏鏋滄槸90 73 71 鍜?90 70 70 錛岄偅涔堟病鏈夎繖涓槸
緇х畫寰鍓嶆瘮 //2-1,鏈変簡鐨勮瘽灝辨槸2+0錛岄潪甯擱噸瑕?br /> else 鐢ㄨ繖鍖歸┈鍜屽垰鎵嶈窇騫崇殑榻愬▉鐜嬬殑椹瘮
//鎬諱箣鍘熷垯灝辨槸濡傛灉榪欏尮椹笉鑳借耽錛屽氨璁╀粬鍜屾瘮浠栧揩寰堝鐨勯┈姣旓紝榪欐牱淇濇寔閫熷害杈冨揩鐨勯┈
}
*while寰幆鏉′歡, f1 <= r1
2.O(N^2 + NlogN), 鏉ヨ嚜:http://hi.baidu.com/lyltim/blog/item/57fccd1153ea851eb9127ba9.html
[璐績鍒嗘瀽]
1銆佸鏋滅敯蹇屽墿涓嬬殑椹腑鏈寮虹殑椹兘璧笉浜嗛綈鐜嬪墿涓嬬殑鏈寮虹殑椹紝閭d箞搴旇鐢ㄦ渶宸殑涓鍖歸┈鍘昏緭緇欓綈鐜嬫渶寮虹殑椹?br />2銆佸鏋滅敯蹇屽墿涓嬬殑椹腑鏈寮虹殑椹彲浠ヨ耽榻愮帇鍓╀笅鐨勬渶寮虹殑椹紝閭e氨鐢ㄨ繖鍖歸┈鍘昏耽榻愮帇鍓╀笅鐨勬渶寮虹殑椹?
3銆佸鏋滅敯蹇屽墿涓嬬殑椹腑鏈寮虹殑椹拰榻愮帇鍓╀笅鐨勬渶寮虹殑椹墦騫崇殑璇濓紝鍙互閫夋嫨鎵撳鉤鎴栬呯敤鏈宸殑椹緭鎺夋瘮璧涖?br />[DP鍋氭硶]
f[i,j]=max{f[i-1,j]+g[n-(i-j)+1,i],f[i-1,j-1]+g[j,i]}
鍏朵腑g[i,j]琛ㄧず鐢板繉鐨勯┈鍜岄綈鐜嬬殑椹垎鍒寜鐓х敱寮哄埌寮辯殑欏哄簭鎺掑簭涔嬪悗錛岀敯蹇岀殑絎琲鍖歸┈鍜岄綈鐜嬬殑絎琷鍖歸┈璧涜窇鎵鑳藉彇寰楃殑鐩堝埄
#p1402 涔岄緹媯媅璺緞DP], 1.5h
f[i][j][k][l] = max(f[i-1][j][k][l], f[i][j-1][k][l], f[i][j][k-1][l], f[i][j][k][l-1]) + A[i+2j+3k+4l+1]
浠ュ崱鐗囨暟涓洪樁孌? 鐘舵乫[i][j][k][l]琛ㄧず榪樺墿涓嬫瘡縐嶇墝鍚勫灝戝紶鏃跺緱鍒扮殑鏈澶у? 娉ㄦ剰璧峰浣嶇疆
*鍗′簡1h鍥犱負(fù)琚?5鐨勮繃娌沖拰08鐨勪紶綰告潯闄愬埗鎬濈淮, 璁や負(fù)浠ユ墍鍦ㄤ綅緗負(fù)闃舵, 鎯沖絀洪棿闄嶇淮
*[闄嶇淮鏉′歡]鐘舵佸悇緇村害瀛樺湪絳夐噺鍏崇郴, 鍥犺屽彲鍑忓皯鏃墮棿澶嶆潅搴? 浣嗘槸涓嶈兘鏀瑰彉絀洪棿澶嶆潅搴?br />
#p1052 娌℃湁涓婂徃鐨勮垶浼?xì)[鏍?wèi)迮濪P], 1.5h
f[i][0] = ∑max{f[j][0], f[j][1]} (j∈i.son), i涓嶅弬鍔?br />f[i][1] = ∑f[j][0] + tree[i].v (j∈i.son), i鍙傚姞
[杈圭晫]鑻涓哄彾鑺傜偣, f[i][0] = 0, f[i][1] = tree[i].v
鍓嶅崐涓皬鏃跺啓瀹屼簡澶氬弶杞簩鍙? 璇佹槑浜唋eft[]鐨勫繀瑕佹?
*鐘舵佽璁¢棶棰? 娌℃湁鍖哄垎i鍙傚姞鍜屼笉鍙傚姞鐨勬儏鍐? 騫惰涓篺[i]鐢眆[j](涓嶅彇i, j鏄痠鐨勫効瀛?鍜宖[k](鍙杋, k鏄痠鐨勫瓩瀛?鎺ㄥ緱
*鍙惰妭鐐圭殑鍒濆鍖? 瀵逛簬f[i][]姹傚拰鑰岄潪鍙栨渶澶у? 閫夊彇鏍硅妭鐐硅岄潪鍙惰妭鐐?闇瑕佷袱涓暟緇勬槧灝?
*鐢變簬30min鏃舵柟紼嬭冭檻涓嶅懆, 瀵艱嚧澶氭淇, 鍥犺屽崱浜?h. 鍔″繀瑕佸厛鍐欏嚭姝g‘鏂圭▼.
7.18
p1134 CCR鐨勪腑鑰冧箣鑰冨墠璁″垝[妯℃嫙], 50min
璇枃棰? 棰樼洰鎻忚堪闂寰堝ぇ, 嫻垂浜?.5h, google浜嗕竴涓猻td涔嬪悗寰楀埌姝g‘棰樻剰. 棰樼洰鏄被浼糱eads鐨勬ā鎷熼, 灝嗙幆浠庢煇澶勬墦鏂? 浣垮緱涓ょ縐戠洰綾誨瀷鐩稿悓鐨勫ぉ鏁版渶澶?瀵繪壘鐩稿悓縐戠洰鐨勬潯浠禔[j+1] = 'w' || A[j+1] = A[i].
*鐜姸闂鐨勫鐞嗘柟娉? 2n-1, 鍦ㄦ湰棰樹腑鍙屾柟鍚戝悓鏃惰繘琛屼笉濡?n-2
#p1088 treat[鍖洪棿DP], 20min
f[i][j] = max{f[i+1][j] + A[i] * (n+i-j), f[i][j-1] + A[j] * (n+i-j)} (0 < i < j <= n)
f[i][j]琛ㄧず[i, j]鏈彇鏃剁殑鏈澶у? 鍒濆鍖杅[i][j] = A[i] * n, 浠ラ暱搴涓洪樁孌? 鏁?j = i+l-1
*鑰冭檻絎琸嬈″彇鏁? k = n - (i-j+1) + 1(鍖呮嫭榪欐), 鏄ㄥぉ娌℃兂鍒拌繖鐐瑰崱浜嗗緢涔?br />*鍦ㄧ綉涓婃壘鍒頒簡鍙﹀涓縐嶈緗姸鎬佺殑鏂規(guī)硶, 璁緁[i][j]鏄彇i涓暟, 宸﹁竟鍙杍涓? 鏂圭▼錛?br />f[i][j] = max(f[i - 1][j - 1] + i * A[j], f[i - 1][j] + i * A[n - (i - 1 - j)])
-> 鐚滄兂鍔ㄦ満: 瀛樺湪絳夊紡 鍓?+ 鍚?= 鎬繪暟, 鐘舵佺殑璁劇疆閮芥槸涓轟簡鎻忚堪鐫涓変釜閲?
agirnet[Krusal], 20min
澶嶄範(fàn)騫舵煡闆嗗疄鐜扮殑Krusal
p1307 鑱旂粶鍛榌Krusal],50min
蹇呴夎竟鍏堜嬌鐢╯et[find(e[i].u)] = find(e[i].v)鍚堝茍, 騫惰褰曟潈鍜? 鐒跺悗鎸変竴鑸殑Krusal鍋氬嵆鍙?
*浣跨敤stdlib.h鐨剄sort闂存帴鎺掑簭澶辮觸, 鍘熷洜涓嶇煡(20min)
*娉ㄦ剰姝ゆ椂k++涓嶈兘騫跺叆涓嬩竴琛岃鍙ヤ腑, 鍚﹀垯++k鍜宬鍊間笉鍚屽鑷磋緭鍏ラ敊璇?
++k,
scanf("%d%d%d", &must[k].u, &must[k].v, &must[k].w);
7.20
p1113 欖旀棌瀵嗙爜[LIS妯″瀷], 40min, 6WA
f[i] = max{f[j] + 1} (A[j]涓篈[i]鍓嶇紑, 1 <= j < i)
*娉ㄦ剰鏈澶у間笉涓瀹氬湪f[n]涓? 闇瑕佸f[1] -> f[n]榪涜寰幆媯(gè)鏌? 鍗′簡30min
p1187 灝忛渚犵殑娓稿洯鏂規(guī)[0/1鑳屽寘], 15min
f[i][j] = max(f[i-1][j], f[i-1][j - c[i]] + w[i])
瀛樺湪鍙兘鏈婊$殑鎯呭喌, 鏁呭驚鐜鏌[n][]鍗沖彲
#p1190 縐湪鍩庡牎[鑳屽寘DP], 1.5h, 6WA
f[k][j] = f[k][j - w[i]] (j - w[i] >= 0)
綾諱技鍒嗙粍鑳屽寘鐨勫仛娉? 璁板綍姣忕粍鐗╁搧鐨勬墍鏈夊彲鑳藉? 鑻[1..k][V]鍚屾椂涓簍rue, 鍒橵涓烘渶鍊? 涔熷彲浠ュ湪璇誨叆鏃? 寰幆媯(gè)鏌ユ瘡緇勭墿鍝佺殑鍙兘鍊?
*娉ㄦ剰璇婚, 灝ゅ叾鏄悇縐嶆暟鎹寖鍥? 涓嶈閲嶅鍘誨勾絎簩棰?!!
*璇誨叆鏃舵敞鎰廙AXn+1, 鐣欐剰-1鐨勬儏鍐? 鏄劇劧絳旀涓嶄細(xì)瓚呰繃鎵鏈夊煄鍫$殑鏈灝忛珮搴?鑰岄潪鏈澶?.
*棰樼洰涓茍娌℃湁寮鴻皟鎸夐『搴忓彇縐湪, 鍥犺屼竴寮濮嬫墦浜嗘ā鎷? 涔嬪悗鎵嬭幢鍘籊oogle. 瀵逛簬榪欑被闂, 鍦ㄦ彁浜ゅ悗鑻ュ彂鐜板垯搴旂戶緇濊? 姝ゅ涓嶈緇欓鐩鍔犳潯浠?
**娉ㄦ剰榪欑被紜畾鍚勭粍鐗╁搧鎵鏈夊彲鑳藉煎啓娉?鍜?鏈浼樺煎啓娉曠殑鍖哄埆
*涓緇勬祴璇曟暟鎹?
5
87 76 65 54 32 21 23 -1
64 75 25 63 76 23 75 13 64 23 -1
09 78 76 46 32 45 23 -1
23 34 45 -1
12 34 23 -1
p1213 宓屽鐭╁艦[LIS妯″瀷/DAG鏈闀胯礬], 1h, 9WA
(1)f[i] = max(f[j] + 1) (rect[i]鍙祵濂梤ect[j])
*鍒濆鍖杅[] = 1; 鍒濆鍖栦負(fù)0, 杈撳嚭+1浼?xì)瀵艰嚧閿欒? 鍘熷洜涓嶇煡.
-> 鍙︿竴縐嶅啓娉?by Ylen): f[0] = 0, f[] = INT_MAX;
*娉ㄦ剰棰樼洰娌℃湁寮鴻皟鐭╁艦闂村瓨鍦ㄩ『搴? 鍥犺屽瓨鍦ㄥ悗鏁堟? 鏄撶煡闈㈢Н灝忕殑鐭╁艦涓嶄細(xì)宓屽闈㈢Н澶х殑鐭╁艦, 鍥犺屼互闈㈢Н涓哄叧閿瓧瀵箁ect榪涜闂存帴鎺掑簭.
(2)f[i] = max(f[j] + 1 | (i,j)∈G)
鑻ect[i]鍙祵濂梤ect[j], 鍒欏緩绔嬩竴鏉′粠i鍒癹鐨勮竟, 姹傛渶闀胯礬鍗沖彲
]]> - Problem List (5.7)http://m.shnenglu.com/Climber-pI/archive/2011/05/07/145912.htmlClimber.pIClimber.pISat, 07 May 2011 12:26:00 GMThttp://m.shnenglu.com/Climber-pI/archive/2011/05/07/145912.htmlhttp://m.shnenglu.com/Climber-pI/comments/145912.htmlhttp://m.shnenglu.com/Climber-pI/archive/2011/05/07/145912.html#Feedback0http://m.shnenglu.com/Climber-pI/comments/commentRss/145912.htmlhttp://m.shnenglu.com/Climber-pI/services/trackbacks/145912.html5.7
p1004 婊戦洩[2d鏈闀夸笅闄嶅瓙搴忓垪]
鏃犳濊礬.
p1005 閲囪嵂[綆鍗?1鑳屽寘], 璋冧簡1.5h
[spec,1d] f[j] = max{f[j], f[j - c[i]] + w[i]}, 鑳藉鏈夋晥閬垮厤f[i][j]涓璱鐨勬寚浠i棶棰?br>*2d鍐欐硶欏繪敞鎰廸[i][j] = f[i-1][j]鐨勫間紶閫?br> for (i = 1; i <= n; i++)
for (j = T; j >= 1; j--)
if (j >= t[i])
f[i][j] = max(f[i - 1][j], f[i - 1][j - t[i]] + w[i]);
else f[i][j] = f[i - 1][j];
p1003 鎵懼晩鎵懼晩鎵綠F[鍔犲己鐗?1鑳屽寘], 璋冧簡1h
璇婚鍒嗘瀽鍚庡彂鐜版槸0/1鑳屽寘妯″瀷, 鏃墮棿闇瑕佸崟鐙鐞?(涓寮濮嬭涓鴻璁板綍璺緞, 鍏跺疄涓嶇敤榪欎箞楹葷儲(chǔ))
f[m][r] = max{f[m][r], f[m - rmb[i]][r - rp[i]] + 1}
t[m][r] = max{t[m][r], f[m - rmb[i]][r - rp[i]] + time[i]}, 濡傛灉f[m]..鍜宖[m-rmb[i]]..鐩哥瓑,娉ㄦ剰鏇存柊t[m][r]
[琛鍐檙ocker鐨勬椂鍊欐兂鍒頒竴縐嶆柟娉曪紝瀵逛簬dp錛岀淮搴﹀線寰鏄渶瑕佽〃紺虹殑閲忔暟-1錛屾墍浠ュ叧浜庢柟紼嬬姸鎬佺殑琛ㄧず鍙互浠庢椂闂村鏉傚害銆佺┖闂村鏉傚害銆侀渶瑕佽〃紺虹殑閲忔暟緇煎悎鑰冭檻.姝ら涓姞涓妕ime鐨勮瘽錛屾樉鐒剁垎鏃墮棿錛岀劧鍚庝粠榪欎釜鏂瑰悜鎬濊冩柟紼?
p1015 鍏礬涔樿濺[綰挎p]
f[i] = max{f[i - k] + A[k]} (1 <= k <= 10)
p1011 浼犵焊鏉鍙岀嚎紼媎p + 鏃墮棿闄嶇淮]
娉ㄦ剰璇婚, 棰樼洰涓殑鏉ュ洖絳変環(huán)涓轟袱嬈″悓鏃剁殑鍗曞悜榪囩▼
f[x1][y1][x2][y2] = max{f[x1-1][y1][x2-1][y2], f[x1-1][y1][x2][y2-1], f[x1][y1-1][x2][y2-1], f[x1][y1-1][x2-1][y2]}+A[x1][y1]+A[x2][y2]
娉ㄦ剰姣忎釜鏁癷f and only if鍙栦竴嬈? f[x1][y1][x2][y2] -= A[x1][y1](x1=x2&&y1=y2)
p1014 涔樻硶娓告垙[鍖洪棿dp]
鏃犳濊礬

]]> - USACO 4.1.1 Nuggetshttp://m.shnenglu.com/Climber-pI/archive/2010/10/19/130467.htmlClimber.pIClimber.pITue, 19 Oct 2010 09:05:00 GMThttp://m.shnenglu.com/Climber-pI/archive/2010/10/19/130467.htmlhttp://m.shnenglu.com/Climber-pI/comments/130467.htmlhttp://m.shnenglu.com/Climber-pI/archive/2010/10/19/130467.html#Feedback0http://m.shnenglu.com/Climber-pI/comments/commentRss/130467.htmlhttp://m.shnenglu.com/Climber-pI/services/trackbacks/130467.html閲嶅惎usaco.
鎶借薄鍑烘ā鍨?鍙互鍙戠幇鏄竴涓畝鍗曠殑瀹屽叏鑳屽寘闂,澶嶆潅搴(N^2+VN).闇瑕佽冭檻鍑犵鐗規(guī)畩鎯呭喌:
(1)鏃犺В
褰撲笖浠呭綋n涓暟涓湁涓涓暟涓?.
(2)鎯熶竴瑙?br>闇瑕佺‘瀹氱殑鏄綋縐痸鐨勬渶澶у?棰樿В涓槸鏈澶х殑涓や釜鏁扮殑鏈灝忓叕鍊嶆暟,紼嬪簭涓嬌鐢ㄦ渶澶ф暟鐨勫鉤鏂?璇佹槑鏂規(guī)硶涓嶇煡.
(3)鏃犻檺瑙?br>n涓暟涓嶄簰璐?br>
1
/**//*
2
ID: liuyupa1
3
PROG: nuggets
4
LANG: C++
5
*/
6
#include<stdio.h>
7
int w[15] =
{0}, f[66000] =
{0};
8
int p[] =
{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251};
9
void swap(int *x, int *y)
{
10
int k = *x; *x = *y; *y = k;
11
}
12
int max(int x, int y)
{
13
return x>y ? x : y;
14
}
15
int main()
{
16
FILE *fin, *fout;
17
fin = fopen("nuggets.in", "r");
18
fout = fopen("nuggets.out", "w");
19
int n, i, j;
20
fscanf(fin, "%d", &n);
21
for (i = 1; i <= n; i++) fscanf(fin, "%d", &w[i]);
22
for (j = 0; j < 54; j++)
{
23
int t = 0;
24
for (i = 1; i <= n; i++)
25
if (w[i] % p[j] == 0) t++;
26
if (t == n)
{
27
fprintf(fout, "0\n", p[j]);
28
return 0;
29
}
30
}
31
for (i = 1; i < n; i++)
32
for (j = i+1; j <= n; j++)
33
if (w[i] > w[j]) swap(&w[i], &w[j]);
34
if (w[1] == 1)
{
35
fprintf(fout, "0\n", p[j]);
36
return 0;
37
}
38
for (i = 1; i <= n; i++)
39
for (j = 0; j <= w[n]*w[n]; j++)
40
if (j-w[i] >= 0)
41
f[j] = max(f[j], f[j-w[i]]+w[i]);
42
i = w[n-1]*w[n];
43
while (i > -1 && f[i] == i) i--;
44
fprintf(fout, "%d\n", i);
45
return 0;
46
}
47

]]> - NOIp 2005 榪囨渤http://m.shnenglu.com/Climber-pI/archive/2010/10/08/129084.htmlClimber.pIClimber.pIFri, 08 Oct 2010 13:54:00 GMThttp://m.shnenglu.com/Climber-pI/archive/2010/10/08/129084.htmlhttp://m.shnenglu.com/Climber-pI/comments/129084.htmlhttp://m.shnenglu.com/Climber-pI/archive/2010/10/08/129084.html#Feedback1http://m.shnenglu.com/Climber-pI/comments/commentRss/129084.htmlhttp://m.shnenglu.com/Climber-pI/services/trackbacks/129084.html綰挎p錛屼絾鏄寖鍥村緢鍙樻? = =
30%鐨勬柟紼嬪緢瀹規(guī)槗鎯沖埌:
[鐘舵乚 f[i]琛ㄧず浠?鍒癷鐐規(guī)渶灝戣俯鍒扮殑鐭沖瓙鏁? stone[i]琛ㄧずi鐐規(guī)湁鏃犵煶瀛?
[鏂圭▼] f[i] = max{f[i-j] + stone[i]} (S<=j<=T)
[鍒濆鍖朷 f[0] = 0, 鍏朵粬璧嬪間負(fù)鏃犻檺澶?
鍦ㄥ疄鐜扮殑鏃跺欓渶瑕佹妸鏂圭▼鍙樺寲涓?f[i+j] = max{f[i] + stone[i+j]}錛屼笉鐒跺湪[1,S]浼?xì)鍑虹幇寰堣寮傜殑缁撴?
鐢變簬m榪滆繙灝忎簬l錛屾暣涓簭鍒椾笂鐨勭煶瀛愰潪甯哥█鐤?鎵浠ュ彲浠ュ噺灝戠姸鎬?浣嗘槸鐩墠瀵規(guī)榪樻槸鏈変簺涓嶈В.
鏌愮鎬濊礬鏄紝灝嗙煶瀛愰棿璺濆ぇ[1,2,..,9,10]=2520鐨勯愭鍑忚嚦灝忎簬2520.娉ㄦ剰瑕佸湪鏀跺熬澧炲姞0鍜宭涓や釜"鐭沖瓙"錛岃繖鏍瘋綆楁柊鐨刲杈冧負(fù)鏂逛究.
1
#include<stdio.h>
2
#include<iostream>
3
using namespace std;
4
#define MAXN 1000000;
5
bool L[200000] =
{0};
6
int f[200000] =
{0}, stone[110] =
{0};
7
int min(int x, int y)
{return x < y ? x : y;}
8
void swap(int x, int y)
{
9
int k = stone[x];
10
stone[x] = stone[y];
11
stone[y] = k;
12
}
13
int main()
{
14
int l, S, T, M, i, j;
15
scanf("%d%d%d%d", &l, &S, &T, &M);
16
for (i = 1; i <= M; i++) scanf("%d", &stone[i]);
17
stone[0] = 0;
18
for (i = 1; i < M; i++)
19
for (j = i+1; j <= M; j++)
20
if (stone[i] > stone[j]) swap(i, j);
21
stone[++M] = l;
22
for (i = 1; i <= M; i++)
{
23
while (stone[i] - stone[i-1] > 2520) stone[i] -= 2520;
24
if (i != M) L[stone[i]] = 1;
25
}
26
l = stone[M--];
27
for (i = 0; i <= l; i++) f[i] = MAXN; f[0] = 0;
28
for (i = 0; i < l; i++)
29
for (j = S; j <= T; j++)
{
30
int k = i+j;
31
if (i + j >= l) k = l;
32
f[k] = min(f[k], f[i]+L[i]);
33
}
34
printf("%d\n", f[l]);
35
}

]]> - NOIp 2003 鍔犲垎浜屽弶鏍?/title>http://m.shnenglu.com/Climber-pI/archive/2010/10/05/128667.htmlClimber.pIClimber.pITue, 05 Oct 2010 03:10:00 GMThttp://m.shnenglu.com/Climber-pI/archive/2010/10/05/128667.htmlhttp://m.shnenglu.com/Climber-pI/comments/128667.htmlhttp://m.shnenglu.com/Climber-pI/archive/2010/10/05/128667.html#Feedback4http://m.shnenglu.com/Climber-pI/comments/commentRss/128667.htmlhttp://m.shnenglu.com/Climber-pI/services/trackbacks/128667.html褰P錛岄渶瑕佽褰曟柟妗堬紝騫舵敞鎰忕┖鏍?wèi)鐨勬儏鍐?
[鐘舵乚f[i][j]浠庣粨鐐筰鍒癹鐨勬渶澶у姞鍒嗗?/span>
[鏂圭▼]f[i][j] = max{f[i][k-1]*f[k+1][j]+a[k]} (i<=k<=j)
瀹炵幇鏂圭▼鐨勬椂鍊欏驚鐜『搴忛潪甯稿叧閿?緇撶偣鏁扮敱灝忓埌澶у驚鐜?/span>.鍚﹀垯浼?xì)鍑虹幇闇瑕佺殑鍊兼湭璁$畻鐨勬儏鍐?
璁板綍鏂規(guī)鍙互鐢ㄤ竴涓暟緇刣[i][j]璁板綍k錛岀劧鍚庨掑綊瀵繪壘鏂規(guī)騫惰褰?
1 #include<stdio.h>
2 #include<iostream>
3 using namespace std;
4 int f[35][35] = {0}, d[35][35] = {0}, ans[35] = {0}, t = 0;
5 void print(int start, int end){
6 if (start > end) return;
7 if (start == end) {ans[++t] = start; return;}
8 ans[++t] = d[start][end];
9 print(start, d[start][end]-1);
10 print(d[start][end]+1, end);
11 }
12 int main(){
13 int n, a[35] = {0}, i, j, k, l;
14 scanf("%d", &n);
15 for (i = 1; i <= n; i++){
16 scanf("%d", &a[i]);
17 f[i][i-1] = 1;
18 f[i][i] = a[i];
19 }
20 for (l = 2; l <= n; l++)
21 for (i = 1; i <= n; i++)
22 for (k = i; k <= i+l-1; k++){
23 j = i+l-1;
24 if (f[i][j] < f[i][k-1]*f[k+1][j] + a[k]){
25 f[i][j] = f[i][k-1]*f[k+1][j] + a[k];
26 d[i][j] = k;
27 }
28 }
29 printf("%d\n", f[1][n]);
30 print(1, n);
31 for (i = 1; i < t; i++) printf("%d ", ans[i]);
32 printf("%d\n", ans[t]);
33 }
34

]]> - NOIp 2006 閲戞槑鐨勯綆楁柟妗?/title>http://m.shnenglu.com/Climber-pI/archive/2010/10/05/128662.htmlClimber.pIClimber.pITue, 05 Oct 2010 02:11:00 GMThttp://m.shnenglu.com/Climber-pI/archive/2010/10/05/128662.htmlhttp://m.shnenglu.com/Climber-pI/comments/128662.htmlhttp://m.shnenglu.com/Climber-pI/archive/2010/10/05/128662.html#Feedback0http://m.shnenglu.com/Climber-pI/comments/commentRss/128662.htmlhttp://m.shnenglu.com/Climber-pI/services/trackbacks/128662.html棰樼洰涓檮浠朵笉瓚呰繃2涓紝鍥犺屼富闄勪歡瀛樺湪4縐嶄笉鍚岀殑瀛樺彇鎯呭喌錛屽彲浠ヨ漿鍖栦負(fù)鍒嗙粍鑳屽寘闂.
[鐘舵乚f[k][v]琛ㄧず娣誨姞鍓峩緇勭墿鍝侊紝鍓╀綑絀洪棿涓簐鏃剁殑鏈澶у?/span>
[鏂圭▼]f[k][v] = max{f[k-1][v], f[k-1][v-c[i]]+w[i]}
娉ㄦ剰寰幆欏哄簭.(鍙傝銆婅儗鍖呬節(jié)璁層?
闇瑕佹敞鎰忕殑闂(2嬈A):
1.浠旂粏璇婚錛岀‘瀹氱紪鍙峰搴旂殑鐗╁搧.
2.娉ㄦ剰鍒版柟紼嬩腑鐨勫弬鏁伴潪璐?鑳屽寘綾婚棶棰橀渶娉ㄦ剰).
1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 using namespace std;
5 int c[65][4], w[65][4], f[32000], set[70] = {0};
6 int max(int a, int b){return a > b ? a : b;}
7 int main(){
8 int n, m, v, p, q, i, j, t = 0;
9 FILE *fout = fopen("budget.out", "w");
10 memset(c, -1, sizeof(c));
11 memset(w, -1, sizeof(w));
12 memset(f, 0, sizeof(f));
13 scanf("%d%d", &n, &m);
14 for (i = 0; i < m; i++){
15 scanf("%d%d%d", &v, &p, &q);
16 j = 0;
17 if (!q) {
18 c[++t][0] = v;
19 w[t][0] = v*p;
20 set[i+1] = t;
21 }
22 else{
23 q = set[q];
24 if (w[q][1] == -1){
25 //printf("dgfdgds\n");
26 c[q][1] = c[q][0] + v;
27 w[q][1] = w[q][0] + v*p;
28 }
29 else if (w[q][2] == -1){
30 c[q][2] = c[q][0] + v;
31 w[q][2] = w[q][0] + v*p;
32 c[q][3] = c[q][1] + v;
33 w[q][3] = w[q][1] + v*p;
34 }
35 }
36 }
37 for (i = 1; i <= t; i++)
38 for (v = n; v >= 0; v--)
39 for (j = 0; j < 4; j++)
40 if (c[i][j] != -1 && v-c[i][j] >= 0){
41 f[v] = max(f[v], f[v-c[i][j]]+w[i][j]);
42 }
43 printf("%d\n", f[n]);
44 }
45

]]> - Dp鏈http://m.shnenglu.com/Climber-pI/archive/2010/10/03/128437.htmlClimber.pIClimber.pISun, 03 Oct 2010 04:23:00 GMThttp://m.shnenglu.com/Climber-pI/archive/2010/10/03/128437.htmlhttp://m.shnenglu.com/Climber-pI/comments/128437.htmlhttp://m.shnenglu.com/Climber-pI/archive/2010/10/03/128437.html#Feedback1http://m.shnenglu.com/Climber-pI/comments/commentRss/128437.htmlhttp://m.shnenglu.com/Climber-pI/services/trackbacks/128437.html璁板綍鍐欒繃鐨刣p棰樼洰錛屽茍鍒嗙被錛屽皾璇曟葷粨鍑烘煇綾婚鐩殑涓鑸ā鍨?
(棰樼洰鍓嶆墦*鐨勬湭緙栫▼楠岃瘉)
銆愮嚎鎬фā鍨嬨?/h3>
Tyvj 1049 鏈闀夸笉涓嬮檷瀛愬簭鍒楅棶棰?[O(n^2) [榪樺瓨鍦ㄥ熀浜庝簩鍒嗘煡鎵劇殑O(nlogn)綆楁硶]]
- [鐘舵乚 f[i]琛ㄧず浠?鍒癷鐨勬渶闀夸笉涓嬮檷瀛愬簭鍒? 鏈澶у奸渶鏇存柊.
- [鏂圭▼] if(a[j]<=a[i]) f[i] = max{f[j]} (0<j<i, 1<i<=n)
NOIp 2004 鍚堝敱闃熷艦 [O(n^2), 鍙屽悜鏈闀夸笂鍗囧瓙搴忓垪]
- [鏂圭▼] f[i] = max{f[j]}+1 , 鏋氫婦k(0<=k<=n).
Rqnoj 164 鏈闀垮叕鍏卞瓙涓?[璁板綍鏂規(guī) 瀛愪覆榪炵畫 O(n^2)]
- [鐘舵乚 f[i][j]琛ㄧず 瀛愪覆A絎琲涓瓧絎?鍜?瀛愪覆B絎琷涓瓧絎?鍓?鍏叡瀛愬簭鍒楅暱搴?/li>
- [鏂圭▼] f[i][j] = f[i-1][j-1]+1(a[i]=b[j],a[i-1]=b[j-1])|max{f[i-1][j],f[i][j-1]}
UVa 111/10405 [鏈闀垮叕鍏卞瓙搴忓垪闂,O(n^2). 鍙互浣跨敤婊氬姩鏁扮粍闄嶈嚦O(n).]
- [鐘舵乚 f[i][j]琛ㄧず 瀛愪覆A絎琲涓瓧絎?鍜?瀛愪覆B絎琷涓瓧絎?鍓?鍏叡瀛愬簭鍒楅暱搴?/li>
- [鏂圭▼] f[i][j] = f[i-1][j-1]+1(a[i]=b[j])|max{f[i-1][j],f[i][j-1]}
UVa 507 [鏈澶ц繛緇拰,O(n).]
- [鐘舵乚 f[i]琛ㄧず褰撳墠瀛愬簭鍒楀拰(闈炶礋)
- [鏂圭▼] f[i]=max{f[i-1]+a[i], a[i]},閫掓帹榪囩▼涓渶鏇存柊鏈澶у?
銆愮煩闃墊ā鍨嬨?/h3>
*UVa 10285 婊戦洩 [璁板繂鍖栨悳绱?鏈闀夸笅闄嶅瓙搴忓垪浜岀淮鐗堟湰]
- [鐘舵乚 f[i][j]琛ㄧず浠?i,j)寮濮嬬殑鏈闀夸笅闄嶅瓙搴忓垪闀垮害.
- [鏂圭▼] f[i][j] = max{f[i-1][j], f[i][j-1], f[i+1][j], f[i][j+1]}+1(f[i][j]>f[i-1][j]..)
UVa 108
- 鏈澶х煩闃靛拰錛孫(n^3)錛屾柟紼嬩笉浼? 鏈澶ц繛緇拰鐨勪簩緇寸増鏈?
NOIp 2000 鏂規(guī)牸鍙栨暟 O(n^4)
- [鐘舵乚 f[i][j][k][l]琛ㄧず涓や漢鍒嗗埆鍒?i,j)銆?k,l)鎵鍙栬繃鐨勬暟鐨勫拰.G[i][j]琛ㄧず鏂規(guī)牸閲岀殑鏁?
- [鏂圭▼] f[i][j][k][l] = max{f[i-1][j][k-1][l], f[i-1][j][k][l-1], f[i][j-1][k-1][l], f[i][j-1][k][l-1]}+G[i][j]+(i==k&&j==l ? 0 : G[k][l])
NOIp 2008 浼犵焊鏉?/p>
(1) O(n^4)
- [鐘舵乚 f[x1][y1][x2][y2] 琛ㄧず浠庡嚭鍙戠偣鍒嗗埆鍒?x1,y1)銆?x2,y2)鍙栫殑鏈澶у?G[x][y]琛ㄧず璇ユ牸鐨勬暟.
- [鏂圭▼] f[x1][y1][x2][y2] = max{f[x1-1][y1][x2-1][y2],f[x1-1][y1][x2][y2-1],f[x1][y1-1][x2-1][y2],f[x1][y1-1][x2][y2-1]}+G[x1][y1]+G[x2][y2](濡傛灉浣嶇疆涓嶉噸澶?
- [涓涓噸瑕佷紭鍖朷 鏄劇劧鏈?strong>y2=x1+y1-x2(y2>0),鍥犺屾椂闂村鏉傚害鍙互闄嶅埌O(n^3).Cena鏄劇ず鎬葷敤鏃朵粠榪?s闄嶅埌榪?.3s錛屾晥鏋滄槑鏄?
*(2) O(n^3)
- [鐘舵乚 f[p][x1][x2],p琛ㄧず緇忚繃鐨勬牸瀛愭暟.
- [鏂圭▼] f[p][x1][x2]=max{f[p-1][x1-1][x2-1],f[p-1][x1-1][x2],f[p-1][x1][x2-1],f[p-1][x1][x2]}+G[x1][p-x1]+G[x2][p-x2](濡傛灉浣嶇疆涓嶉噸澶?
USACO 5.3.4/3.3.4 [鐭╅樀dp,O(n^2)]
- [鐘舵乚 f[i][j]琛ㄧず浠?i,j)涓哄彸涓嬭鐨勬鏂瑰艦鏈澶ц竟闀?/li>
- [鏂圭▼] f[i][j] = min{f[i-1][j], f[i-1][j-1], f[i][j-1]}+1 (0<=i,j<n)
- [棰勫鐞哴 鑻[i][j]=1鍒檉[i][j]=1.
銆愯儗鍖呴棶棰樸?/h3>
USACO 3.3.2
- [鐘舵乚 f[a1][a2][a3][a4][a5]涓轟拱a1浠剁墿鍝?,a2浠剁墿鍝?,a3浠剁墿鍝?,a4浠剁墿鍝?,a5浠剁墿鍝?鏃訛紝鎵闇鐨勬渶灝戜環(huán)鏍?/li>
- [鏂圭▼] f[a1][a2][a3][a4][a5] = min{f[a1-p[i][1][a2-p[i][2][a3-p[i][3][a4-p[i][4]][a5-p[i][5]+p[i][0]} (0<i<=s, ak-p[i][k]>=0,p[i][0]鏄紭鎯犲悗鐨勪環(huán)鏍?
- [杈圭晫鏉′歡] f[0][0][0][0][0]=0;
- USACO瀹樻柟瑙f硶寰堟湁鍚彂鎬э紝鐢ㄦ渶鐭礬錛屾妸姣忕鐘舵乕a1][a2][a3][a4][a5]錛坅1浠剁墿鍝?,a2浠剁墿鍝?,a3浠剁墿鍝?,a4浠剁墿鍝?,a5浠剁墿鍝?錛夌湅鎴愪竴涓偣錛屽垯鑷沖7776涓偣錛岃屾瘡涓紭鎯犲氨鏄竴鏉¤竟錛屽垯鑷沖105鏉¤竟銆?鎺ヤ笅鏉ュ氨鏄眰[0,0,0,0,0]鍒扮洰鏍囩姸鎬佺殑鏈鐭礬錛岀敤Dijkstra(Heap浼樺寲)鍗沖彲.
USACO 3.1.2 [瀹屽叏鑳屽寘闂, O(n)鎴朞(n^2).]
- [鐘舵乚 f[i][j]琛ㄧず鏀懼叆絎琲涓墿浣撳悗鍓╀綑浣撶Н涓簀
- [鏂圭▼] f[i][j] = f[i-1][j] + f[i][j-c[i]]+w[i]
USACO 3.1.6 [瀹屽叏鑳屽寘闂,O(n).]
- [鐘舵乚 f[i]琛ㄧず鍑戞垚i鍒嗛偖璧勭殑鏈灝戦偖紲ㄦ暟.
- [鏂圭▼] f[i] = min{f[i-v[j]]+1} (i-v[j] >= 0, 0<=i<n, f[0] = 0).
USACO 2.3.4
- [鐘舵乚 f[i,j]琛ㄧず鍓峣縐嶈揣甯佹瀯鎴恓鐨勬柟娉曟暟錛岀敤c[i]璁板綍璐у竵鐨勯潰鍊?
- [鏂圭▼] f[i,j]=f[i-1,j]; 涓嶇敤絎琲縐嶈揣甯?
f[i,j]=f[i-1,j]+f[i,j-c[i]] 鐢ㄧi縐嶈揣甯侊紝j>=c[i]
銆愭爲(wèi)褰€?/h3>
USACO 2.3.2
- [鐘舵乚 f[i,j]琛ㄧず鐢╥涓偣緇勬垚娣卞害鏈澶氫負(fù)j鐨勪簩鍙夋爲(wèi)鐨勬柟娉曟暟錛屽垯錛?/li>
- [鏂圭▼] f[i,j]=鈭?f[k,j-1]脳f[i-1-k,j-1])(k鈭坽1..i-2})
- [杈圭晫] f[1,i]=1
- 鎴戜滑瑕佹眰鐨勬槸娣卞害鎭板ソ涓篕鐨勬柟娉曟暟S錛屾槗鐭=f[n,k]-f[n,k-1]銆備絾闇瑕佹敞鎰忕殑鏄紝濡傛灉姣忔閮藉彇妯★紝鏈鍚庡彲鑳戒細(xì)鏈塮[n,k]<f[n,k-1],鎵浠ュ彲浠ョ敤S=(f[n,k]-f[n,k-1]+v) mod v
銆愬叾浠栫被鍨嬨?/h3>
USACO 1.5.1 [鏁板瓧涓夎褰
- [鐘舵乚 f[i][j]琛ㄧず浠?i,j)寮濮嬬粡榪囩殑鏁板瓧鐨勬渶澶у拰
- [鏂圭▼] f[i][j] = max{f[i+1][j], f[i+1][j+1]}+a[i][j]
USACO 3.3.5 [鍗氬紙闂]
- [鐘舵乚 s[i][j]琛ㄧず浠巌鍔犲埌j鐨勫拰, 鏋氫婦l=j-i. f[i][j]琛ㄧず浠巌鍒癹鍏堝彇鑰呰兘寰楀埌鐨勬渶澶ф暟瀛楀拰.
- [鏂圭▼] f[i][j] = s[i][j] - min{f[i+1][j], f[i][j-1]}
USACO 3.2.2
- [鐘舵乚 f[n][m]琛ㄧず鑷沖m涓?鐨刵浣嶄簩榪涘埗鏁版暟閲?/li>
- [鏂圭▼] f[n][m] = f[n-1][m] + f[n-1][m-1] (f[0][m] = 1)

]]> - NOIp 2008 浼犵焊鏉?/title>http://m.shnenglu.com/Climber-pI/archive/2010/10/02/128362.htmlClimber.pIClimber.pISat, 02 Oct 2010 14:28:00 GMThttp://m.shnenglu.com/Climber-pI/archive/2010/10/02/128362.htmlhttp://m.shnenglu.com/Climber-pI/comments/128362.htmlhttp://m.shnenglu.com/Climber-pI/archive/2010/10/02/128362.html#Feedback0http://m.shnenglu.com/Climber-pI/comments/commentRss/128362.htmlhttp://m.shnenglu.com/Climber-pI/services/trackbacks/128362.html鍜?000鐨勬柟鏍煎彇鏁板鍑轟竴杈?鏁版嵁鍔犲己浜嗕竴鐐癸紝濡傛灉鏄8鐨勫洓緇磀p鍙兘浼?xì)瓒呮?80).鎵浠ラ渶瑕佷紭鍖?
1.鏅氱殑鍥涚淮鍋氭硶
銆愮姸鎬併慺[x1][y1][x2][y2] 琛ㄧず浠庡嚭鍙戠偣鍒嗗埆鍒?x1,y1)銆?x2,y2)鍙栫殑鏈澶у?G[x][y]琛ㄧず璇ユ牸鐨勬暟.
銆愭柟紼嬨?strong>f[x1][y1][x2][y2] = max{f[x1-1][y1][x2-1][y2],f[x1-1][y1][x2][y2-1],f[x1][y1-1][x2-1][y2],f[x1][y1-1][x2][y2-1]}+G[x1][y1]+G[x2][y2](濡傛灉浣嶇疆涓嶉噸澶?
銆愪竴涓噸瑕佷紭鍖栥戞樉鐒舵湁y2=x1+y1-x2(y2>0),鍥犺屾椂闂村鏉傚害鍙互闄嶅埌O(n^3).Cena鏄劇ず鎬葷敤鏃朵粠榪?s闄嶅埌榪?.3s錛屾晥鏋滄槑鏄?
2.涓夌淮鍋氭硶(鍙傝冨畼鏂歸瑙?
銆愮姸鎬併慺[p][x1][x2],p琛ㄧず緇忚繃鐨勬牸瀛愭暟.
銆愭柟紼嬨?strong>f[p][x1][x2]=max{f[p-1][x1-1][x2-1],f[p-1][x1-1][x2],f[p-1][x1][x2-1],f[p-1][x1][x2]}+G[x1][p-x1]+G[x2][p-x2](濡傛灉浣嶇疆涓嶉噸澶?
鏈紪紼嬮獙璇?
3.鏇翠紭鍖栫殑鍋氭硶
dy紲炵墰鎸囧嚭錛岃繘涓姝ョ殑浼樺寲闇瑕佺敤鍒?strong>鏈灝忚垂鐢ㄦ渶澶ф祦.(NOIP緇濆瓚呯翰,鍙互紜畾涓嶄細(xì)鏇存繁浜?)
銆怌ode銆?/p>
1 #include<stdio.h>
2 #include<iostream>
3 using namespace std;
4 int f[52][52][52][52] = {0}, n, G[52][52];
5 int max(int a, int b, int c, int d){
6 if (a < b) a= b;
7 if (a < c) a= c;
8 if (a < d) a= d;
9 return a;
10 }
11 int main(){
12 int m, n, i, j, k, l;
13 scanf("%d%d", &m, &n);
14 for (i = 1; i <= m; i++)
15 for (j = 1; j <= n; j++)
16 scanf("%d", &G[i][j]);
17 for (i = 1; i <= m; i++)
18 for (j = 1; j <= n; j++)
19 for (k = 1; k <= m; k++){
20 if (i+j-k > 0) l = i+j-k; else continue;
21 f[i][j][k][l] = max(f[i-1][j][k-1][l], f[i-1][j][k][l-1], f[i][j-1][k-1][l], f[i][j-1][k][l-1])+G[i][j]+G[k][l];
22 if (i == k && j == l) f[i][j][k][l] -= G[i][j];
23 }
24 printf("%d\n", f[m][n][m][n]);
25 }
26

]]> - NOIp 2000 鏂規(guī)牸鍙栨暟http://m.shnenglu.com/Climber-pI/archive/2010/10/02/128346.htmlClimber.pIClimber.pISat, 02 Oct 2010 12:14:00 GMThttp://m.shnenglu.com/Climber-pI/archive/2010/10/02/128346.htmlhttp://m.shnenglu.com/Climber-pI/comments/128346.htmlhttp://m.shnenglu.com/Climber-pI/archive/2010/10/02/128346.html#Feedback0http://m.shnenglu.com/Climber-pI/comments/commentRss/128346.htmlhttp://m.shnenglu.com/Climber-pI/services/trackbacks/128346.html綆鍗昫p錛岄毦鐐瑰湪浜庣姸鎬佺殑琛ㄧず.
棰樼洰鍙互鐪嬪仛涓や漢鍚屾椂鍙栨暟錛岃繖鏍峰氨閬垮厤浜嗗悗鏁堟э紝鍙互鐢╠p鍋氫簡.
銆愮姸鎬併慺[i][j][k][l]琛ㄧず涓や漢鍒嗗埆鍒?i,j)銆?k,l)鎵鍙栬繃鐨勬暟鐨勫拰.G[i][j]琛ㄧず鏂規(guī)牸閲岀殑鏁?
銆愭柟紼嬨?strong>f[i][j][k][l] = max{f[i-1][j][k-1][l], f[i-1][j][k][l-1], f[i][j-1][k-1][l], f[i][j-1][k][l-1]}+G[i][j]+(i==k&&j==l ? 0 : G[k][l])
1嬈A.
#01: Accepted (75ms, 384KB)
#02: Accepted (0ms, 384KB)
#03: Accepted (0ms, 384KB)
#04: Accepted (28ms, 384KB)
銆怌ode銆?/p>
1 #include<stdio.h>
2 #include<iostream>
3 using namespace std;
4 int f[12][12][12][12] = {0}, n, G[12][12];
5 int max(int a, int b, int c, int d){
6 if (a < b) a= b;
7 if (a < c) a= c;
8 if (a < d) a= d;
9 return a;
10 }
11 int main(){
12 int a, b, c, i, j, k, l;
13 scanf("%d", &n);
14 for(;;){
15 scanf("%d%d%d", &a, &b, &c);
16 if (a || b || c) G[a][b] = c;
17 else break;
18 }
19 for (i = 1; i <= n; i++)
20 for (j = 1; j <= n; j++)
21 for (k = 1; k <= n; k++)
22 for (l = 1; l <= n; l++){
23 f[i][j][k][l] = max(f[i-1][j][k-1][l], f[i-1][j][k][l-1], f[i][j-1][k-1][l], f[i][j-1][k][l-1])+G[i][j]+G[k][l];
24 if (i == k && j == l) f[i][j][k][l] -= G[i][j];
25 }
26 printf("%d\n", f[n][n][n][n]);
27 }
28

]]> - NOIP 2004 鍚堝敱闃熷瀷http://m.shnenglu.com/Climber-pI/archive/2010/09/20/127182.htmlClimber.pIClimber.pIMon, 20 Sep 2010 13:35:00 GMThttp://m.shnenglu.com/Climber-pI/archive/2010/09/20/127182.htmlhttp://m.shnenglu.com/Climber-pI/comments/127182.htmlhttp://m.shnenglu.com/Climber-pI/archive/2010/09/20/127182.html#Feedback0http://m.shnenglu.com/Climber-pI/comments/commentRss/127182.htmlhttp://m.shnenglu.com/Climber-pI/services/trackbacks/127182.html鏋氫婦k(0<=k<=n)錛?/strong>f[i] = max{f[j]}+1;
鍦╰yvj鎻愪氦涓鐩碦TE錛屽師鍥犳湭鐭?
1
#include<stdio.h>
2
#include<iostream>
3
using namespace std;
4
5
int main()
6

{
7
FILE *fin, *fout;
8
fin = fopen("chorus.in", "r");
9
fout = fopen("chorus.out", "w");
10
int i, j, k, n, T[120] =
{0}, f[120] =
{0}, ans = 0, final = 0;
11
fscanf(fin, "%d", &n);
12
for (i = 1; i <= n; i++) fscanf(fin, "%d", &T[i]);
13
for (k = 1; k <= n; k++)
14
{
15
for (i = 1; i <= n; i++) f[i] = 1;
16
for (i = 1; i <= k; i++)
17
for (j = 1; j < i; j++)
18
if (T[j] < T[i] && f[j]+1 > f[i]) f[i] = f[j]+1;
19
ans = f[k]-1;
20
for (i = 1; i <= n; i++) f[i] = 1;
21
for (i = n; i >= k; i--)
22
for (j = n; j > i; j--)
23
if (T[j] < T[i] && f[j]+1 > f[i]) f[i] = f[j]+1;
24
ans += f[k];
25
if (ans > final) final = ans;
26
}
27
fprintf(fout, "%d\n", n-final);
28
}
29

]]> - Tyvj 1049 鏈闀夸笉涓嬮檷瀛愬簭鍒?/title>http://m.shnenglu.com/Climber-pI/archive/2010/09/11/126422.htmlClimber.pIClimber.pISat, 11 Sep 2010 13:11:00 GMThttp://m.shnenglu.com/Climber-pI/archive/2010/09/11/126422.htmlhttp://m.shnenglu.com/Climber-pI/comments/126422.htmlhttp://m.shnenglu.com/Climber-pI/archive/2010/09/11/126422.html#Feedback0http://m.shnenglu.com/Climber-pI/comments/commentRss/126422.htmlhttp://m.shnenglu.com/Climber-pI/services/trackbacks/126422.html
緇忓吀鐨勬渶闀夸笉涓嬮檷瀛愬簭鍒楅棶棰橈紝O(n^2)銆愯繕瀛樺湪鍩轟簬浜屽垎鏌ユ壘鐨凮(nlogn)綆楁硶銆?/span>
鏂圭▼錛?strong style="FONT-FAMILY: Georgia">if(a[j]<=a[i]) f[i] = max{f[j]} (0<j<i, 1<i<=n)
鍙兘鏄粖澶╃姸鎬佷笉濂斤紝涓鐩村湪綰犵紶緇嗚妭.闇瑕佹敞鎰忕殑鏄紝瀛愬簭鍒楅暱搴︾殑鏈澶у間笉涓瀹氬湪f[n]涓?/span>.
1
#include<iostream>
2
using namespace std;
3
int a[5001], b[5001];
4
int max(int x, int y)
{return (x > y) ? x : y;}
5
int main()
6

{
7
int i, j, n, ans;
8
cin >> n;
9
for (i = 1; i <= n; i++)
{cin >> a[i]; b[i] = 1;}
10
for (i = 2; i <= n; i++)
11
{
12
for (j = 1; j < i; j++)
13
if (a[j] <= a[i] && b[j]+1 > b[i])
14
b[i] = b[j]+1;
15
}
16
for (i = 1; i <= n; i++)
17
if (ans < b[i]) ans = b[i];
18
cout << ans << endl;
19
}
20
椹笂瑕佽蛋浜嗭紝楂樹腑榪樻槸楹葷儲(chǔ)寰堝錛岃繘搴﹁浜虹籂緇?

]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
欧美日韩国产精品专区|
亚洲色无码播放|
国产在线精品一区二区中文|
性欧美video另类hd性玩具|
亚洲精品中文字幕在线观看|
免费看亚洲片|
免费观看30秒视频久久|
蜜臀久久久99精品久久久久久
|
免费不卡视频|
久久se精品一区二区|
久久国产精品99精品国产|
国产精品99久久99久久久二8|
亚洲国产三级在线|
99在线精品视频|
亚洲桃花岛网站|
午夜精品福利视频|
久久久久免费视频|
你懂的视频一区二区|
91久久夜色精品国产网站|
男人的天堂亚洲|
最新国产乱人伦偷精品免费网站|
国产精品劲爆视频|
国产日韩欧美综合精品|
国产在线不卡视频|
亚洲视频在线观看视频|
一区二区三区欧美成人|
欧美人与禽猛交乱配|
国产精品嫩草99av在线|
在线观看欧美日韩|
亚洲在线免费|
欧美国产日韩一区二区三区|
亚洲国产成人精品视频|
亚洲精品小视频在线观看|
午夜一区二区三区在线观看|
欧美成人午夜剧场免费观看|
国产精品自在欧美一区|
99国产精品视频免费观看一公开|
亚洲欧美在线一区|
日韩一级片网址|
欧美成人精精品一区二区频|
国产精品综合色区在线观看|
亚洲美女av在线播放|
免费日韩精品中文字幕视频在线|
一区二区免费在线播放|
欧美伦理a级免费电影|
亚洲欧洲在线播放|
91久久夜色精品国产网站|
久久天天狠狠|
亚洲第一精品电影|
久久久亚洲人|
久久露脸国产精品|
一本大道久久精品懂色aⅴ
|
国产精品免费一区豆花|
一区二区三区四区精品|
亚洲一二三级电影|
国产精品毛片在线看|
久久免费高清视频|
久久久久久久91|
国产亚洲精品综合一区91|
最近看过的日韩成人|
亚洲国产欧美在线|
欧美日韩一区二区三区在线观看免
|
国产精品三级视频|
久久夜精品va视频免费观看|
欧美96在线丨欧|
亚洲最新视频在线播放|
亚洲综合国产精品|
国内成人精品视频|
亚洲美女黄网|
亚洲国产专区|
午夜精品久久久久久久久|
亚洲国产高清自拍|
亚洲影音一区|
在线视频欧美精品|
欧美精品日韩一区|
美女网站在线免费欧美精品|
国产精品萝li|
亚洲国产精品尤物yw在线观看|
欧美精品一区二区三区视频|
久久精品国产96久久久香蕉|
欧美系列精品|
一本久道久久综合婷婷鲸鱼|
亚洲另类黄色|
欧美日韩一区在线观看视频|
最近中文字幕mv在线一区二区三区四区|
国产精品久久久久久av福利软件|
亚洲精品日韩在线|
亚洲精品乱码久久久久久日本蜜臀
|
亚洲人成在线影院|
在线免费观看一区二区三区|
亚洲欧美日韩国产成人|
欧美一区91|
亚洲大胆人体在线|
欧美伦理a级免费电影|
亚洲少妇中出一区|
狂野欧美一区|
99re视频这里只有精品|
欧美日韩在线影院|
欧美亚洲一级|
亚洲精品欧美日韩专区|
欧美一二三区精品|
91久久精品日日躁夜夜躁欧美|
欧美日韩成人一区二区三区|
一区二区欧美在线|
美国十次成人|
亚洲欧美日韩国产一区二区|
在线观看91精品国产入口|
欧美日韩裸体免费视频|
久久爱www久久做|
99视频在线观看一区三区|
久久人体大胆视频|
亚洲欧美一区二区在线观看|
最新精品在线|
亚洲精品国产精品久久清纯直播|
国产精品一页|
国产精品免费电影|
国产精品www网站|
国产精品大片免费观看|
欧美日韩一区二区在线观看视频|
美女脱光内衣内裤视频久久网站|
亚洲一区欧美激情|
亚洲一区二区影院|
亚洲欧美制服另类日韩|
日韩午夜免费|
亚洲欧美文学|
亚洲香蕉伊综合在人在线视看|
亚洲国产影院|
在线视频欧美日韩精品|
日韩视频国产视频|
中日韩高清电影网|
亚洲欧美日本日韩|
久久久久久久久久久久久女国产乱
|
欧美精品二区三区四区免费看视频|
久久精品在线视频|
欧美华人在线视频|
欧美精品二区|
国产一区二区三区久久
|
日韩视频一区二区|
亚洲免费观看|
欧美一区二区日韩|
欧美黄色一区二区|
亚洲综合精品一区二区|
欧美影院在线|
国产精品国产一区二区|
欧美日韩一区二区视频在线
|
亚洲国产毛片完整版
|
一区二区高清在线观看|
日韩亚洲欧美一区二区三区|
亚洲欧美国产高清|
日韩五码在线|
亚洲精品欧美极品|
久久综合九色综合久99|
亚洲高清视频在线观看|
亚洲免费婷婷|
欧美午夜a级限制福利片|
亚洲日本欧美|
最新中文字幕亚洲|
欧美国产先锋|
亚洲精品久久久久中文字幕欢迎你|
欧美一区免费|
这里只有精品视频在线|
国产精品高潮在线|
午夜电影亚洲|
欧美一级黄色录像|
激情av一区二区|
欧美高清不卡|
欧美日韩美女在线|
久久不见久久见免费视频1|
亚洲欧美一区二区激情|
国产精品久久久久77777|
一区二区三区免费网站|
欧美高清在线播放|
久久久久久久999|
国产色综合网|
男女av一区三区二区色多|
久久久人成影片一区二区三区|
亚洲成人资源网|
亚洲视频网在线直播|
亚洲一区二区在线|
在线免费高清一区二区三区|
最新中文字幕亚洲|
韩国v欧美v日本v亚洲v|
日韩视频在线观看一区二区|
国产一区二区三区久久精品|
亚洲成色777777在线观看影院|
欧美天天在线|
亚洲福利在线视频|
国内精品久久久久影院色|
日韩视频在线一区二区三区|
国产欧美日韩综合|
亚洲少妇在线|
亚洲精品乱码久久久久久黑人|
亚洲一区二区三区在线观看视频
|
久久黄色网页|
久久成人羞羞网站|
国产精品久久久久av免费|
欧美国产一区二区|
亚洲激情成人在线|
欧美福利视频在线|
亚洲国产欧美一区二区三区同亚洲|