锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
2009騫?鏈?9鏃?鏄熸湡鍥?br>dp: re[i][j]=max{鍥涗釜鏂瑰悜鎵寰楃殑鏈澶у?鐨勬渶澶у紏

#include<iostream>
using namespace std;
#define MAX 102
int m[MAX][MAX],re[MAX][MAX];
int d[4][2]=
{
{0,1},
{0,-1},
{1,0},
{-1,0}};
int r,c;
int dfs(int i,int j)

{
if(re[i][j])return re[i][j];
int maxv=0,tmp;
for(int k=0;k<4;++k)
{
int x=i+d[k][0];
int y=j+d[k][1];

if(x>-1&&x<r&&y>-1&&y<c)
{
if(m[i][j]>m[x][y])
{
tmp=dfs(x,y)+1;
if(tmp>maxv)maxv=tmp;
}
}
}
return maxv;
}
int main()

{
int ans=0,tmp;
scanf("%d%d",&r,&c);
for(int i=0;i<r;++i)
for(int j=0;j<c;++j)
{
scanf("%d",&m[i][j]);
re[i][j]=0;
}
for(int i=0;i<r;++i)
for(int j=0;j<c;++j)
{
re[i][j]=dfs(i,j);
if(ans<re[i][j])ans=re[i][j];
}
printf("%d\n",ans+1);
// system("pause");
return 0;
}
]]>
鑳屽寘闂錛?/span>01錛屽畬鍏紝澶氶噸錛屾湭嫻嬭瘯錛?br>
#define MAXN 120005 //maxcash
#define MAX 11
int n[MAX],c[MAX];//n[i]鐗╁搧i鐨勬暟閲忥紝c[i]璐圭敤錛寃[i]浠峰?nbsp;
int f[MAXN];//MAXN涓烘渶澶у閲?nbsp;錛屽瓨鍌ㄧ姸鎬佸?nbsp;
int V,N;//V鏈澶у閲忥紝N鐗╁搧涓暟 

/**//*01鑳屽寘鐗╁搧 */ 
void ZeroOnePack(int cost,int weight)
{
//涓浠?1鑳屽寘鐗╁搧
// 璐圭敤cost錛?nbsp;浠峰紈eight錛?1鑳屽寘
for(int v=V;v>=cost;--v)
f[v]=max(f[v],f[v-cost]+weight);
return;
}

void ZeroOnePackMain()
{
/**//*N浠剁墿鍝?nbsp;瀹歸噺涓篤鐨勮儗鍖咃紝絎琲浠剁墿鍝佽垂鐢╟[i]錛屼環鍊紈[i],姹傝漿鍏ヨ儗鍖呭彲浠ヨ幏鍙栫殑鏈澶т環鍊?nbsp;
鍘熸柟紼媐[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}
綆鍖栨柟紼嬶細f[v]=max{f[v],f[v-cost]+weight};
*/
for(int i=0;i<N;i++)
ZeroOnePack(cost[i],weight[i]);
return;
}


/**//*涓浠跺畬鍏ㄨ儗鍖?/span>*/ 
void CompletePack(int cost錛?/span>int weight)
{
//涓浠剁墿鍝佸畬鍏ㄨ儗鍖?nbsp;
//N 縐嶇墿鍝?nbsp;瀹歸噺 V,c[i],w[i], 姣忎竴縐嶆棤闄?姹傛渶澶т環鍊?nbsp;
// 璐圭敤cost錛?nbsp;浠峰紈eight錛屽畬鍏ㄨ儗鍖?nbsp;
//瀵瑰縐嶇墿鍝佺殑闂錛屽彲浠ユ坊鍔犵殑浼樺寲錛歛.鍘繪帀澶т簬V鐨勭墿鍝?b.c[i]<=c[j] and w[i]>=w[j]鍘繪帀鐗╁搧j
for(int v=cost;v<=V;++v)
f[v]=max(f[v],f[v-cost]+weight);
return;
}


/**//*涓浠跺閲嶈儗鍖?/span>*/
void MultiplePack(int cost,int weight,int amount)
{
//澶氶噸鑳屽寘
//1縐嶇墿鍝?nbsp;璐圭敤cost錛?nbsp;浠峰紈eight錛屼釜鏁癮mount
//浜岃繘鍒朵紭鍖杔og(amount) 
if(c*amount>=V)
{
CompletePack(cost,weight);
return;
}
int k=1;
while(k<amount)
{
ZeroOnePack(k*cost);
amount-=k;
k*=2;
}
ZeroOnePack(amount*cost);
return;
}
]]>
灝嗙i縐嶉潰棰濆垎鎴愯嫢騫查潰棰濈殑bill錛岃繖浜沚ill闈㈤涓?緋繪暟1錛?錛?錛屻傘傘傘?^(k-1),n[i]-2^k+1 鍒嗗埆涔樹互d[i] 錛?nbsp;騫朵笖n[i]-2^k+1>0;
(鎴戜篃鏄湅鍒漢鐨勶紝鎵句釜鏁拌瘯涓涓嬪氨鐭ラ亾浜嗭紝鐢ㄨ繖浜涢潰棰濈郴鏁板氨鍙互錛屽氨鍙互緇勬垚<=n[i]鐨勬墍鏈夊彲鑳?
O(V* S log n[i])
f[v]琛ㄧず瀹歸噺v鎵鑳藉緱鍒扮殑鎬繪暟
綆鍖栨柟紼? f[v]=max{f[v],f[v-c]+c}
f[]鍒濆閮戒負0
澶氶噸鑳屽寘 璇﹁鑳屽寘涔濊
#include<iostream>
using namespace std;
#define MAXN 120005 //maxcash
#define MAX 11
int n[MAX],d[MAX];
int f[MAXN];
int V,N;

void ZeroOnePack(int c){
for(int v=V;v>=c;--v){
f[v]=max(f[v],f[v-c]+c);
}
return;
}
void CompletePack(int c){
for(int v=c;v<=V;++v){
f[v]=max(f[v],f[v-c]+c);
}
return;
}

void MultiplePack(int c,int amount){

if(c*amount>=V){
CompletePack(c);
return;
}
int k=1;
while(k<amount){
ZeroOnePack(k*c);
amount-=k;
k*=2;
}
ZeroOnePack(amount*c);
return;
}
int main()
{
int a,b;

while(scanf("%d%d",&V,&N)!=EOF){
if(!V&&!N)continue;
int flag=0;
for(int i=0;i<=V;++i)f[i]=0;
// memset(f,0,sizeof(f));
for(int i=0;i<N;++i){
scanf("%d%d",&a,&b);
n[i]=a,d[i]=b;
if(d[i]==V){f[V]=V;flag=1;}
}
if(V==0)f[V]=0,flag=1;
if(!flag){
for(int i=0;i<N;++i)
if(n[i]&&d[i]<=V)
MultiplePack(d[i],n[i]);
}
printf("%d\n",f[V]);
}
return 0;
}
]]>
鍨嬪涓嬭〃鐨勭畝鍗旸P(鍙弬鑰僱rj鐨勪功 page149):
E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533)
E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (鏈闀垮叕鍏卞瓙搴忓垪)
(poj3176,poj1080,poj1159)
C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(鏈浼樹簩鍒嗘绱㈡爲闂)
杈冧負澶嶆潅鐨勫姩鎬佽鍒?濡傚姩鎬佽鍒掕В鐗瑰埆鐨勬柦琛屽晢闂絳?
(poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034)
璁板綍鐘舵佺殑鍔ㄦ佽鍒? (POJ3254,poj2411,poj1185)
鏍戝瀷鍔ㄦ佽鍒?poj2057,poj1947,poj2486,poj3140)
鑳屽寘涔濊 http://www.concretevitamin.com.cn/informatics/Pack/Index.html
]]>
#include<iostream>
using namespace std;
#define MAX 10000
#define base 5000
#define hmax 21
int m[hmax][MAX];
int h[hmax],w[hmax];
int c,g;
/**//*
m[i,j]琛ㄧず鍓峣涓綅緗?nbsp;寰楀埌鍔涚煩涓簀鐨勬柟妗堢殑 鏁扮洰
m[i][j]=Σm[i-1,j-w[i]*h[k]] i鐮濈爜鏁?nbsp; k浣嶇疆
base閬垮厤璐熸暟
*/
int main()
{
while(scanf("%d%d",&c,&g)!=EOF){
for(int i=0;i<c;++i)scanf("%d",&h[i]);
for(int i=0;i<g;++i)scanf("%d",&w[i]);
memset(m,0,sizeof(m));
for(int i=0;i<c;++i)++m[0][w[0]*h[i]+base];
for(int i=1;i<g;++i)
for( int j=-base;j<=base;++j){
int tmp=0;
for( int k=0;k<c;++k)
if( m[i-1][base+j-h[k]*w[i]])tmp+=m[i-1][base+j-h[k]*w[i]];
m[i][base+j]=tmp;
}
printf("%d\n",m[g-1][base]);
}
return 0;
}
緇х畫騫肩鍦頒繚鐣欎唬鐮侊紝騫惰創鍑哄嚭鏉ャ?
]]>
by Amber
鍐欏湪鍓嶉潰錛?/span>
浠庣姸鎬佺被鍨嬪垎錛屽茍涓嶈〃紺轟竴棰樺彧浠庡睘浜庝竴綾匯傚叾瀹炰竴綾誨彧鏄竴縐嶇姸鎬佺殑琛ㄧず鏂規硶銆傚彲浠ュソ鍑犵鏂規硶緇勫悎鎴愪竴涓姸鎬侊紝鏉ヨВ鍐抽棶棰樸?/span>
鍏辨ф葷粨
鏈被鐨勭姸鎬佹槸鍩虹鐨勫熀紜錛屽ぇ閮ㄥ垎鐨勫姩鎬佽鍒掗兘瑕佺敤鍒板畠錛屾垚涓轟竴涓淮銆?/span>
涓鑸潵璇達紝鏈変袱縐嶇紪鍙風殑鐘舵侊細
鐘舵?/span>(i)琛ㄧず鍓?/span>i涓厓绱犲喅絳栫粍鎴愮殑涓涓姸鎬併?/span>
鐘舵?/span>(i)琛ㄧず鐢ㄥ埌浜嗙i涓厓绱狅紝鍜屽叾浠栧湪1鍒?/span>i-1闂寸殑鍏冪礌錛屽喅絳栫粍鎴愭湁鐨勪竴涓姸鎬併?/span>
棰樺簱
a) 鏈闀夸笉涓嬮檷瀛愬簭鍒?/span>
浠ヤ竴鍏冪粍(i)浣滀負鐘舵侊紝琛ㄧず絎?/span>i涓綔涓哄簭鍒楃殑鏈鍚庝竴涓偣鐨勬椂鍊欑殑鏈闀垮簭鍒椼備簬鏄緢瀹規槗鎯沖埌O(n2)寰楃畻娉曘備絾鏈鍙?font color=red>鍚堢悊緇勭粐鐘舵?/span>錛屽紩鍏ヤ竴涓崟璋冪殑杈呭姪鏁扮粍錛屽埄鐢ㄥ崟璋冩т簩鍒嗘煡鎵撅紝浼樺寲鍒?/span>O(nlogn)銆傚叧浜庝紭鍖栬瑙佷紭鍖栫珷銆?/span>
涓浜涢棶棰樺彲灝嗘暟鎹?font color=red>鏈夊簭鍖?/span>錛岃漿鍖栨垚鏈銆?/span>
搴旂敤錛?/span>
鎷︽埅瀵煎脊(NOIP99 Advance 1) 灝辨槸鍘熼銆?/span>
Beautiful People (sgu199)錛岃灝嗘暟鎹湁搴忓寲錛氬叾涓竴涓潈浣滀負絎竴鍏抽敭瀛椾笉涓嬮檷鎺掑垪錛屽彟涓涓潈浣滀負絎簩鍏抽敭瀛椾笉涓婂崌銆?/span>
Segment (ural 1078)錛屽皢綰挎鐨勫乏绔偣鏈夊簭鍖栧氨鍙互浜嗐?/span>
b) LCS
鐘舵?/span>(i,j)錛岃〃紺虹1涓瓧絎︿覆鐨勭i浣嶏紝涓庣2涓瓧絎︿覆鐨勭j浣嶅尮閰嶏紝寰楀埌鐨勬渶闀跨殑涓層傝嫢鏈夊涓覆瑕?/span>LCS錛屽垯鍔犵淮錛屽嵆鍑犱釜涓插氨鍑犱釜緇淬傛垜涔熷皢姝ら褰掑叆璺緞闂銆?/span>
c) 鑺卞簵姍辯獥甯冪疆(IOI99)
瑙?strong>璺緞闂銆?/span>
鍏辨ф葷粨
鏈被闂涓庝笅涓绔犵殑鍒掑垎闂鐨?strong>鍐崇瓥鐨勫垎鍓茬偣鏃犲簭浜ら泦姣旇緝澶э紙鍗犳湰綾婚棶棰樼殑30%錛夈?/span>
棰樺簱
a) 鐭沖瓙鍚堝茍
瑙?strong>鍒掑垎闂
b) 妯$増鍖歸厤(CEOI01,Patten)
榪欓鐗規畩鐨勫湴鏂規槸鐘舵佺殑鍊兼槸涓涓泦鍚堣屼笉鏄竴涓暟銆?/span>
c) 涓嶅彲鍒嗚В鐨勭紪鐮?/span>(ACM World Final 2002)
d) Electric Path(ural1143)
e) 閭眬(IOI2000 Day2 1)
鑻ョ姸鎬佽〃紺虹殑鎬濊礬浠庣i涓潙搴勫彲浠ヤ粠灞炰簬鍝釜閭眬錛屾棤鏈浼樺瓙緇撴瀯銆傝漿鍙樹竴涓柟鍚戯細絎?/span>k涓偖灞鍙互“鎺у埗”涓涓尯闂寸殑鏉戝簞[i,j]銆備簬鏄柟紼嬪氨鏄劇劧浜?/span>:
f(k,i,j)=min{f(k-1,p,i-1)+w(i,j)}(k-1<=p<=i-1)
S(i) 涓烘潙搴?/span>i鍒板師鐐圭殑璺濈銆?/span>
w(i,j)=min{k| Sum{|S(k)-S(p)|}(i<=p<=j)}(i<=k<=j) 鎵懼埌[i,j]闂存渶濂界殑涓涓偖灞鐐廣?/span>
涓嶈繃鍙互鍙戠幇Sum{|S(k)-S(p)|鏄崟璋冪殑錛屾墍浠ュ彇涓綅鏁板氨鍙互浜嗐傚嵆涓婂紡涓?/span>k鐨勫彇鍊艱寖鍥村彧鏈?/span>floor((i+j)/2), ceil((i+j)/2)涓や釜銆?/span>Floor鏄笅鍙栨暣銆?/span>Ceil鏄笂鍙栨暣銆傝繖鏍鋒瘡嬈¤漿縐繪椂闂撮檷鍒?/span>O(1)銆?/span>
娉ㄦ剰鍒版槸鍖洪棿榪炵畫鐨勶紝鍗?/span>(p,i-1) 鍜?/span>(i, j) 涓殑 i-1, i鏄繛緇殑錛屾墍浠ョ┖闂村彲浠ラ檷緇達細f(i,j)琛ㄧず鏀懼墠i涓偖灞鍒板墠j涓潙搴勭殑鏈浼樺箋?/span>
f(i,j)=min{f(i-1,p-1)+w(p,j)}(i-1<=p<=j-1}
e(i,j) 涓哄綋f(i,j)鍒拌揪鏈浼樺兼椂鐨?/span>p.
閫氳繃璇佹槑鍥涜竟褰笉絳夊紡錛屽緱鍒?/span>e(i,j)<=e(i,j+1)<=e(i+1,j+1)
鍐崇瓥鏁伴噺鍙堝皯浜嗕竴涓暟閲忕駭銆?/span>
鍏辨ф葷粨
涔嬪悗鐨勪竴浜涢棶棰橈紝鐘舵佹槸鐢卞潗鏍囩淮涓庡叾浠栫殑緇寸粍鎴愩傛湰綾諱笌鍒掑垎闂(鏄?/span>2緇存垨澶氱淮鐨勫潗鏍囩郴鐨勫垝鍒?/span>)涓?strong>璺緞闂鐨勪氦闆嗗崰鏈被闂涓ぇ澶氭暟銆?/span>
棰樺簱
a) 媯嬬洏鍒嗗壊(NOI99 4)
涓昏鏄皢鍏紡鍙樺艦錛屽彉褰㈠悗鐨勫叕寮忓緢瀹規槗鐪嬪嚭鏂圭▼銆?/span>
鐘舵佹槸鐢?/span>2涓潗鏍囩粍鎴愮殑4鍏冪粍(x1,y1)(x2,y2)錛岃〃紺轟竴涓瓙媯嬬洏銆傝繖鏈夌偣鍍忎箣鍓嶇殑鍖洪棿鍔ㄦ佽鍒掞紝鍙笉榪囨槸灝?/span>1緇磋漿2緇淬?/span>
鍚庤璺緞闂銆?/span>
鍏辨ф葷粨
棰樺簱
a) 01鑳屽寘
搴旂敤錛?/span>
瑁呯闂錛?/span>NOIP01 Trade 4錛?/span>
灝辨槸鍘熼銆?/span>
鍊煎竵鍒嗗壊
鍙埄鐢ㄦ柟紼嬬殑鎬ц川錛岀┖闂撮檷1緇淬?/span>
甯佸煎彲閲嶅鐨勫煎竵鍒嗗壊(pku1742, Problem F LouTianCheng’s Contest in POJ)
浣跨敤宸﹀彸娉曞湪瀹氫綅涓婂姞閫熴?/span>
鍙︾粰鐘舵佸姞涓涓睘鎬?/span>last,璁板綍涓婁竴嬈″墿涓嬬殑鍙敤鐨勫悓甯佸肩‖甯佹暟錛堝埄鐢ㄤ簡褰撳墠杞Щ鏄敮涓鍓嶉┍鐨勭壒鐐癸級銆?/span>
b) 鍙栫伀鏌撮棶棰?/span>(sgu153 Playing with matches)
c) Stone Pile(ural1005 Stone Pile)
d) 鍏礬宸¢?/span>(CTSC2000)
鍏辨ф葷粨
1錛?font face="Times New Roman" size=1> 鍔ㄦ佽鍒掔殑欏哄簭
涓鑸寜鐓у悗搴忛亶鍘嗙殑欏哄簭錛屽嵆澶勭悊瀹屽効瀛愬啀澶勭悊褰撳墠鑺傜偣錛屾墠絎﹀悎鏍戠殑瀛愮粨鏋勭殑鎬ц川銆?/span>
2錛?font face="Times New Roman" size=1> 澶氬弶鏍戣漿鎹負浜屽弶鏍?/span>
鐢變簬瑕佸垎閰嶉檮鍔犵淮鍒板悇涓妭鐐癸紝鑰屽垎閰嶉檮鍔犵淮鏄釜鍒掑垎闂錛岃嫢榪樻槸鎸夊綋鍓嶈妭鐐瑰埌鍚勪釜鍎垮瓙鑺傜偣鍒嗛厤錛屽垯鎴愪簡涓涓?strong>鏁存暟鍒掑垎闂,O(n2)銆傛墍浠ヨ鎶婂鍙夋爲杞崲涓轟簩鍙夋爲錛岃繖鏍鋒墠鑳芥寜鍔ㄦ佽鍒掔殑鏂瑰紡鍙喅絳栧綋鍓嶇偣鐨勫垎閰嶉棶棰?/span>, O(n)銆?/span>
3錛?font face="Times New Roman" size=1> 鍔犲綋鍓嶇偣鐨勯夋垨涓嶉夌殑甯告暟緇?/span>
鍔犳緇磋В鍐崇殑鏄悗鏁堟ч棶棰樸?/span>
……………………
4錛?font face="Times New Roman" size=1> 鍦ㄥ皢杈逛俊鎭漿鎴愭爲鏃剁殑鎶宸?/span>
灝嗚鍏ョ殑杈瑰垎瑁傛垚2鏉¤竟錛屽皢榪?/span>2鏉¤竟鍏寵仈璧鋒潵錛堝氨鏄壘鍒頒竴鏉¤竟錛屽彟涓鏉¤竟鐨勭紪鍙峰氨鐭ラ亾錛夈傜敤鍓嶅悜鏄熻〃紺烘硶琛ㄧず杈癸紙鎸夎搗鐐規湁搴忥級錛屼互鍚庣敤杈圭殑鏃跺欙紝鐢ㄤ簡涓鏉¤竟鎵撲笉鍙敤鏍囧織錛屼篃灝嗗叧鑱旇竟鎵撲笉鍙敤鏍囧織銆傝繖鏍峰彲浠ヤ繚璇?/span>O(n)鐨勬椂闂村畬鎴愪俊鎭鐞嗭紝鑰屼笖鍦ㄧ埗鑺傜偣鎵懼効瀛愮殑榪囩▼涓甫鏉ュ緢澶х殑鏂逛究銆?/span>
5錛?font face="Times New Roman" size=1> 澶嶆潅搴?/span>
鏍戝瀷鍔ㄦ佽鍒掑鏉傚害鍩烘湰涓婃槸O(n)錛涜嫢鏈夐檮鍔犵淮m錛屽垯鏄?/span>O(nm)銆?/span>
棰樺簱
a) 閫夎(CTSC97-3)
鐢變簬瑕佸垎閰嶈紼嬫暟錛屾墍浠ヨ澶氬弶鏍戣漿鎹負浜屽弶鏍戙?/span>
b) 璐悆鐨勪節澶撮緳(NOI02-3)
鑻ュ皬澶存暟澶т簬1鐨勮瘽錛屽垯璁╀笉鍚岀殑灝忓ご鍚冧竴孌墊爲鏋濈殑2涓鐐廣?/span>
榪欐牱灝辨妸闂杞寲鎴愶細闄勫姞緇存槸澶уご鍚冪殑涓暟錛屽綋鍓嶇偣鐢變笉鐢卞ぇ澶村悆鐨勫父鏁扮淮鐨勫姩鎬佽鍒掋傜敱浜庢秹鍙婂垝鍒嗛棶棰橈紝鎵浠ヨ澶氬弶鏍戣漿鎹負浜屽弶鏍戙?/span>
c) 姹傛爲鐨勮川蹇?/span>(sgu134 Centroid)
緇欏嚭涓媯佃竟涓嶅甫鏉冪殑鏍戯紝姹傜偣,浣垮緱鍘繪帀姝ょ偣鍚?/span>,鍓╀笅鐨勬渶澶х殑榪為氬瓙鍥劇殑欏剁偣鏁版渶灝?/span>.
d) 姹傛爲涓殑鐐規渶榪滆窛紱繪渶榪戙?/span>
緇欏嚭涓媯佃竟甯︽潈鐨勬爲錛屾眰鏍戜腑鐨勭偣錛屼嬌寰楁鐐瑰埌鏍戜腑鐨勫叾浠栫粨鐐圭殑鏈榪滆窛紱繪渶榪戙?/span>
Computer Network (sgu149)
Computer Net (ural1056)
鍏辨ф葷粨
1) 鏁版嵁鐗規畩鎬?/span>
緇欏嚭鐨勬暟鎹湪鏌愪竴涓垨鍑犱釜緇村害涓婁竴鑸叿鏈夋瘮杈冨皬鐨勮寖鍥達紙鍙互鏋氫婦涓綾葷殑鐘舵侊級銆?/span>
涓涓灇涓劇殑鐘舵佹槸涓涓泦鍚堛?/span>
2) 緙栫爜
鐢變簬闆嗗悎涓厓绱犱釜鏁扮殑涓嶅畾鎬ф垨鑼冨洿澶э紝鐩存帴寮鏁扮粍瀛橈紝涓嶅ソ绱㈠紩鏁扮粍錛堢紪紼嬪鏉傚害澶珮錛夛紝鎵浠ヨ灝嗛泦鍚堢紪鐮併?/span>
鍒╃敤鏁版嵁鐨勫彲鏋氫婦鎬э紝灝嗘灇涓劇殑鐘舵?/span>(闆嗗悎)緙栫爜銆備竴鑸潵璇寸爜鍊肩殑鑼冨洿瑕佸緢灝忥紙灝介噺鎺掗櫎鏃犵敤鐨勭爜鍊鹼紝濡傜偖鍏碉細褰撳墠鏍煎拰涓婃牸瀛樺湪鐐叺鐨勬儏鍐墊槸闈炴硶鐨勶紝鍙互鎺掗櫎錛夈?/span>
瑙勫畾緙栫爜鐨勭爜鍊間唬琛ㄧ殑鎰忔濓紝瑕佸敖閲忚瀹氬ソ緇存姢鐨勭爜鍊箋傦紙濡傜偖鍏碉細褰撳墠鏍煎瓨鍦ㄧ偖鍏電殑鐢?/span>2錛屼笂鏍煎瓨鍦ㄧ偖鍏電敤1銆傝繖鏍蜂笅涓灞傜殑瑙勫垝鏃訛紝鍙鐮佸?/span>-1鍗沖彲錛夈?/span>
鏈夋椂鍊欏彲浠ョ洿鎺ュ埄鐢ㄧ紪鐮佺殑欏哄簭鍔ㄦ佽鍒掞紝鍥犱負榪欐椂緙栫爜宸茬粡鏄?font color=red>鎷撹ˉ鏈夊簭銆傚TSP闂褰撳墠宸查夌偣闆嗗悎鐨勭姸鎬佺殑鍓嶉┍鐨勭紪鐮佺殑鍊間竴瀹氭瘮褰撳墠鐨勭紪鐮佺殑鍊煎皬銆?/span>
3) 鐘舵佸帇緙?/span>
瀵規湁闄愰樁孌電殑鏀劇疆鎯呭喌錛岃璧版儏鍐電紪鐮侊紙鍏跺疄璐ㄤ篃鏄斁緗殑闆嗗悎鎴栬璧拌礬綰跨殑闆嗗悎錛夛紝榪欐牱鐨勭紪鐮侊紝涔熸湁浜鴻皳涔嬶細“鐘舵佸帇緙?#8221;銆傛綾婚浠?#8220;鐐叺闃靛湴”涓哄吀鍨嬶紝榪涜鎵╁睍銆?/span>
棰樺簱
a) 璐墿錛?/span>IOI95-2錛?/span>
鍙皢姣忕鐗╁搧鎸?/span>5榪涘埗緙栫爜銆傦紙5涓烘瘡縐嶇墿鍝佹暟鐨勪笂闄愶級
鐢變簬鐗╁搧鏁扮殑涓婇檺涓?/span>5錛屾瘮杈冨皬錛屼篃鍙洿鎺ュ紑鏁扮粍瀛樸?/span>
b) Roger娓告垙浠誨姟涓錛?/span>CTSC98 Day2 4錛?/span>
涓涓鏂逛綋鍦ㄤ竴涓柟鏍煎唴鐨勭姸鎬佸彧鏈?/span>24縐嶏紝鑰屼笖鍙互閫氳繃欏墮潰鍜屽墠闈㈡潵琛ㄧず錛岃繖鏍風敤3緇寸殑鐘舵?/span>(x,y,p)灝卞彲浠ヨВ鍐籌紝p涓?/span>1鍒?/span>24縐嶇姸鎬佷腑鐨勪竴縐嶃?/span>
c) TSP闂
瑙傚療涓涓?/span>TSP鐨勬悳绱㈣繃紼嬶細 for (x in 鏈夌偣) TSP(x)
鍗沖綋鍓嶈礬鐨勬渶鍚庝竴涓妭鐐逛負x,鐜板湪瑕侀夋嫨涓嬩竴涓妭鐐?/span>y,鑰?/span>y瑕佸湪鏈夌偣鐨勯泦鍚堜腑銆傝嫢鏈夌偣鎴栧凡閫夌偣鐨勯泦鍚堝凡紜畾錛屽垯鍚庢晥鎬ф秷闄ゃ傚彲浠?/span>DP銆傜姸鎬佷負浠?/span>X涓哄綋鍓嶈礬鐨勫凡閫夌偣鐨勯泦鍚?/span>(鍚?/span>i)錛屽綋鍓嶈礬鐨勬渶鍚庝竴涓妭鐐逛負i銆?/span>2鍏冪粍(X,i)涓虹粡榪囧凡閫夌偣鐨勯泦鍚?/span>X鍒拌妭鐐?/span>i鐨勬渶鐭暱搴︺傚皢X緙栫爜鍗沖彲銆?/span>
娉ㄦ剰錛?font color=red>騫舵病鏈夊洜涓哄姩鎬佽鍒掑皢闂浠?/span>NP綾誨甫鍒?/span>P綾?/span>銆?/span>
搴旂敤: DNA Laboratory(Problem B,TU-Darmstadt Programming Contest 2004)
灝嗘瘡涓覆鐨勪氦榪儴鍒嗘眰鍑猴紝灝卞彲浠ュ皢闂涓撴垚TSP
浣嗚杈撳嚭瀛楀吀搴忔渶灝忕殑錛屽垯闇瑕佹敞鎰?/span>DP欏哄簭銆?/span>
鏈夊叿浣撶殑鎶ュ憡銆?/span>
d) 鐐叺闃靛湴
鍗佸垎緇忓吀錛岃瑙?font color=red>鎶ュ憡銆?/span>
搴旂敤:
Another Chocolate Maniac(sgu132) 綾諱技鐐叺鐨勫仛娉曠殑鏈鍊鹼紝鍙笉榪囨槸姹傛渶灝忓鹼紝楹葷儲鐐廣?/span>
Hardwood floor(sgu131) 綾諱技鐐叺鐨勫仛娉曠殑緇熻
Little Knights(sgu225) 綾諱技鐐叺鐨勫仛娉曠殑緇熻,鏁版嵁閲忓お澶цconst
Little Kings(sgu223) 綾諱技鐐叺鐨勫仛娉曠殑緇熻
Bugs鍏徃(CEOI 2002) 綾諱技鐐叺鐨勫仛娉曠殑鏈鍊?/span>
鍏辨ф葷粨
瑕佸埄鐢ㄤ笂嬈$殑涓浜涜繍綆?#8220;鍓╀笅”鐨勫驚鐜彉閲忎綔褰撳墠寰幆鐨勮竟鐣岋紝涓昏鍦ㄤ簬鎵懼嚭涓縐嶅喅絳栭『搴忥紝浣夸箣鎴愮珛銆?/span>
棰樺簱
a) 濂剁墰嫻村満
b) Communication System
灝嗘暟鎹湁搴忓寲, 浠庡ぇ鍒板皬鏋氫婦甯﹀, 姣忔鍙埄鐢ㄤ笂嬈″鐞嗙殑緇撴灉Min, 鏉ュ喅絳栧綋鍓嶇姸鎬併傜О浣滆凱浠?/span>, 鎴栧氨鏄竴縐嶅姩鎬佽鍒掋?/span>
(zju1409, Problem C Tehran 2002 Iran Nationwide Internet Programming Contest)
棰樺簱
a) Magic Trick (Problem G, TU-Darmstadt Programming Contest 2004)
閫掓帹
1)01緇熻(CTSC99 1)
2)鍗$壒鍏版暟
circle(sgu130)
3)楣拌泲
鍏辨ф葷粨
a) 鏈?span>搴忔?/span>
姣忔鍐崇瓥鐨勭偣鐨勭紪鍙鋒槸鏈夊簭鐨勶紝鍗寵鎸夊喅絳栫殑欏哄簭杈撳嚭鍒嗗壊鐐圭殑緙栧彿鐨勮瘽錛岀紪鍙鋒槸鏈夊簭鐨勶紝婊¤凍鍒嗗壊鐐圭殑緙栧彿鎸夊崌搴忔帓鍒椼?/span>
b) 鏂圭▼涓鑸艦寮?/span>
f(n,m)=optimize{f(k,m-1)+w(k+1,n)}
(n,m)琛ㄧず浠?/span>1鍒?/span>n涓偣涓垝鍒嗕負m涓儴鍒嗙殑鏈浼樺鹼紱k涓哄喅絳栫殑鍒嗗壊鐐癸紝鍗崇m涓儴鍒嗕負k+1鍒?/span>n錛涜繖閲?/span>optimize鍙互涓?/span>max,min銆?/span>
棰樺簱
a) 鏁存暟鍒掑垎
甯稿簲鐢ㄥ湪灝嗕竴涓潈鍒嗛厤緇欎竴瀹氱殑灝忓垎鍓插潡錛屽錛氬皢澶у爢鐨勭煶瀛愬垎鎴愪竴瀹氱殑灝忓爢錛屽皬鍫嗗彲涓虹┖錛屽ぇ鍫嗚鍒嗗畬銆傛湁鏃跺簲鐢ㄥ湪鏍戝瀷鍔ㄦ佽鍒掞紙浜屽弶杞鍙夛級涓?/span>
b) 涔樼Н鏈澶?/span>(NOIP00 Advance 2)
灝辨槸鎸変笂闈㈢殑涓鑸紡鐨勬柟紼嬪仛銆?/span>
鍏辨ф葷粨
a) 鏃犲簭鎬?/span>
姣忔鍐崇瓥鐨勭偣鐨勭紪鍙鋒槸鏃犲簭鐨勶紝鍗寵鎸夊喅絳栫殑閫掑綊欏哄簭杈撳嚭鍒嗗壊鐐圭殑緙栧彿鐨勮瘽錛岀紪鍙鋒槸鏃犲簭鐨勩?/span>
b) 鏂圭▼涓鑸艦寮?/span>
f(i,j)=optimize{f(i,k-1)+f(k+1,j)}+w(i,j)
(i,j)琛ㄧず浠?/span>i鍒?/span>j鐨勮寖鍥村唴閫夊彇涓涓垎鍓茬偣k鐨勬渶浼樺鹼紝瀛愰棶棰樻槸鍒嗗壊鐐瑰乏杈?/span>(i,k-1)鍜屽彸杈?/span>(k+1,j)鐨勭偣鐨勮寖鍥寸殑鏈浼樺鹼紱榪欓噷optimize鍙互涓?/span>max,min銆?/span>
鏂圭▼寰堢被浼?/span>2鍙夋爲鐨勬ц川銆?/span>
c) 鍥涜竟褰笉絳夊紡
姝ょ被鐨勯棶棰橈紝鏈変簺鍙敤鍥涜竟褰笉絳夊紡浼樺寲銆傝浼樺寲绔犮?/span>
棰樺簱
a) 鐭沖瓙鍚堝茍(NOI95 2)
緇忓吀錛岃瑙佹姤鍛娿?/span>
鍙敤鍥涜竟褰笉絳夊紡浼樺寲鎴?/span>O(n2)
鍏跺疄榪樺彲浠ョ敤綾諱技鍫嗙殑鏁版嵁緇撴瀯鍦?/span>O(nlogn)鐨勬椂闂村唴瀹屾垚錛屼絾榪欏氨涓嶆槸鍔ㄦ佽鍒掍簡銆?/span>
搴旂敤錛?/span>
鏋勯犳渶浼樹簩鍙夋帓搴忔爲(CTSC96 2)
b) 澶氳竟褰?/span>(IOI98)
榪欓鍊肩殑姝h礋鍙峰鐞嗚娉ㄦ剰錛屼箻娉曡繍綆楋紝鐢變簬絎﹀彿鐨勫姞鍏ワ紝浣垮師鏈殑姝g殑鏈浼樿В錛屼竴涓嬪彉鎴愯礋鐨勩?/span>
c) 鍔犲垎浜屽弶鏍?/span>(NOIP03 Advance 3)
鏂圭▼灝辨槸涓鑸紡錛岃漿縐葷殑鍑芥暟錛?/span>w(i,j)=sum(i,k-1)*sum(k+1,j)+d(k)銆傜敱浜?/span>w(i,j)涓嶆弧瓚沖嚫鍗曡皟鎬э紝鎵浠ヤ笉鑳界敤鍥涜竟褰笉絳夊紡浼樺寲銆?/span>
d) 鎷彿搴忓垪(Problem B, NEERC 2001)
榪欓鐨勫垎鍓茬偣涓嶆槸涓涓厓绱狅紝鑰屾槸鍏冪礌闂寸殑涓鏉$嚎銆?/span>
涓昏鐨勬濈淮鏂瑰紡鏄粠閫掑綊瀹氫箟銆?/span>
鍏辨ф葷粨
a) 琛岃蛋鏂瑰悜鍐沖畾闃舵鎬?/span>
鏈夎瀹氭簮鐐逛笌緇堢偣銆傛瘡嬈¤璧版柟鍚戦兘鏈変竴瀹氱殑瑙勫畾錛屼嬌鍘熺偣鍒扮粓鐐圭殑鎵鏈夎礬寰勫艦鎴愭棤鐜湁鍚戝浘銆?/span>
b) 澶氭簮鎴栧姹?/span>
褰撳婧愭垨澶氭眹鏃訛紝搴旇鍔犵淮錛屼嬌寰楁瘡涓簮錛岄兘鏈変竴涓礬寰勭殑鐘舵佷笌涔嬪搴斻傚鏈?/span>n涓簮鐨勭綉鏍肩被闂錛屽父甯歌漿鎬佹槸(x1,y1)(x2,y2)…(xn,yn)銆備絾鏄簮澶鐨勮瘽錛岀┖闂翠笂涓嶅厑璁革紝鍙互闄嶉棶棰樿漿鎴愮綉緇滄祦闂銆?/span>
c) 鍙屽悜鍔ㄦ佽鍒?/span>
鐢變簬鏈夎瀹氭簮鐐逛笌緇堢偣錛屽彲浠ュ弻鍚戝姩鎬佽鍒掞紝浣嗚鑰冭檻鏁堟灉濂戒笉濂斤紝鐞嗚涓婃槸姣斿師鏉ュ皯1/2錛屼絾鏈夋椂鐢變簬鍙敤浜庡喅絳栫殑鐘舵佽緝灝戯紝鏁堟灉灝變笉閿欎簡銆?/span>
d) 鍐崇瓥紼鐤忔?/span>
灝辨槸鎵璋撹蛋娉曪紝鑻ュ浜庝竴涓姸鎬侊紝瀹冪殑鍓嶉┍鎴栬呭悗緇ф暟寰堝皯(浠庢棤鐜湁鍚戝浘瑙掑害錛屽氨鏄叆搴︽垨鍑哄害灝?/span>)錛岀О鍐崇瓥紼鐤忋?/span>
e) 鐘舵佺█鐤忔?/span>
灝辨槸寰堝鐘舵佹槸娌℃湁鐢ㄧ殑錛屽鎺掑垪鐨?/span>LCS,鐘舵佷負2緇寸殑(x,y)錛屼絾瀵逛簬涓涓?/span>x鍙湁涓涓?/span>y鏄湁鏁堜釜銆傛墍浠ュ疄璐ㄤ笂鐘舵佹暟榪樻槸綰垮艦鐨勩?/span>
鏈被涓浜涙妧宸фх殑涓滆タ杈冨錛屽湪棰樺簱涓叿浣撹鏄庛?/span>
棰樺簱
a) 鏂規牸鍙栨暟(NOIP00 advance 4)
(x1,y1)(x2,y2)
瀵硅綰跨┖闂翠紭鍖?/span>
b) 鑺卞簵姍辯獥甯冪疆(IOI99)
鎴戝鏈鏈変釜灝忔敼閫狅細鑻ヨ姳鐡舵棤搴忥紝濡備綍鍋氾紝鏈夊簭鎸囷細瀵逛簬鑺辨潫i<鑺辨潫j, 鑺辨潫i瀵瑰簲鐨勮姳鐡剁紪鍙?/span><鑺辨潫j瀵瑰簲鐨勮姳鐡剁紪鍙楓傞偅涔堣繖鏍峰氨鏄竴涓?/span>NP闂浜嗭紝鍙敤鍚庨潰鐨勫熀浜庣姸鎬佸帇緙╃殑鍔ㄦ佽鍒掕В鍐熾?/span>
鏈涓昏鐨勬湭鎬葷粨錛岀粰鍑虹浉鍏崇殑棰樹笌宸叉湁鐨勬姤鍛婏紙鑷繁鎴栦粬浜虹殑錛?/span>