锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鎼滅儲(chǔ)錛氫富瑕佹槸DFS鍜孊FS錛岀壒鍒竴鐐規(guī)槸娉ㄦ剰鍓灊銆?br>銆銆銆1010 Tempter of the Bone DFS+濂囧伓鍓灊銆?br> 1016 Prime Ring Problem 綆鍗曠殑DFS錛岀涓嬈℃病鐪嬫竻棰樼洰錛屾病娉ㄦ剰灝鵑儴鍜岄閮ㄧ浉鍔犱篃瑕佹槸绱犳暟銆傚彲浠ュ厛鐢ㄤ竴涓暟緇勬妸绱犳暟鍏堟爣璁板ソ錛岄偅DFS灝卞緢綆鍗曚簡(jiǎn)銆?br> 1181 鍙樺艦璇?綆鍗曠殑DFS銆傜敤閭繪帴鐭╅樀灝嗛灝懼瓧姣嶄繚瀛橈紝浠庡瓧姣?#8216;b’寮濮婦FS鎼滅儲(chǔ)銆傛敞鎰忚煩榪囧凡緇忔悳榪囩殑瀛楁瘝銆?br> 1195 Open the Lock 2717 Catch That Cow 綆鍗旴FS銆傛敞鎰忚煩榪囧凡緇忔悳绱㈣繃鐨勩?br> 1240 Aseroids錛?nbsp; 綆鍗曠殑BFS銆傞敊浜?jiǎn)鍑爧啤鏄洜湄?fù)娌℃妸鏁版嵁鐢ㄥ緇存暟緇勪繚瀛樺ソ銆?br> 1241 Oil Deposits DFS鍜孊FS閮藉彲浠ャ傛枩綰挎柟鍚戜篃鏄彲浠ョ殑銆?br> 1242 Rescue BFS銆備絾鏄敞鎰忓彲鑳界敱澶氫釜Freind錛屾墍浠ヤ粠Angle寮濮嬫悳銆?br> 1312 Red and Black 綆鍗旸FS銆?br> 1198 Farm Irrigation 鍙互鐢˙FS錛屼絾鎴戞槸鐢?#8220;騫舵煡闆?#8221;鍋氱殑銆?/p>
DP錛氳繖涓槸寮辯偣錛屾墍浠ユ病鍋氬灝戯紝鍙仛涓浜涚畝鍗曠殑銆?br> 1003 MaxSum 鏈闀胯繛緇瓙搴忓垪錛岀粡鍏窪P錛屽熀鏈珼P銆?br> 1024 MaxSum Plus Plus 鍏抽敭鏄浣曢檷緇達(dá)紝灝哋^3鏈鍚庡彉鎴怬^2鐨勶紝鍚﹀垯浼?xì)瓒呮椂銆?br> 1114 Piggy-Bank 瀹屽叏鑳屽寘闂銆?br> 1159 Common Subsequence 鏈闀垮叕鍏卞瓧涓詫紝緇忓吀DP闂銆?br> 1203 I NEED A OFFER錛?-1鑳屽寘闂銆?br> 1257 鏈灝戞嫤鎴郴緇?nbsp; 涓涓畝鍗曟柟娉曪紝鍒╃敤vector 寮涓涓姩鎬佹暟緇勶紝姣忔璇諱竴涓暟鎹紝浠庡墠鎵弿榪囨潵錛岄亣鍒版瘮鎵璇繪暟鎹ぇ鐨勶紝灝辨洿鏂伴偅涓暟鎹負(fù)鎵璇繪暟鎹紝鏈鍚庯紝璇ユ暟緇勯暱搴﹀氨鏄寮圭郴緇熶釜鏁般?br> 1559 鏈澶у瓙鐭╅樀 瀵規(guī)暟緇勪腑鐨勬暟鎹仛涓嬩慨鏀癸紝瀵逛簬a[i][j] 閲嶆柊鏇存柊涓?a[1][1]鈥攁[i][j] 瀛愮煩闃電殑鍜岋紝鐒跺悗灝卞彲浠ユ悳涓涓嬫暣涓暟緇勫氨鑳藉緱鍒版渶澶у瓙鐭╅樀浜?jiǎn)銆?br> 1428 婕鏍″洯 鍏堟槸浠庣粓鐐笲FS鍒拌搗鐐癸紝鎶婅楄垂淇濆瓨鍦ㄤ竴涓〃涓紝鐒跺悗鍐嶄粠璧風(fēng)偣DFS緇堢偣姹傜殑鎵鏈夎礬綰匡紝浣嗘敞鎰忚璁板綍宸茬粡閬嶅巻榪囩殑鐐癸紝涓嬫閬嶅巻灝辯洿鎺ュ姞涓婁笂嬈¢亶鍘嗘墍寰楃殑璺嚎鏁扮洰錛屽惁鍒欎細(xì)瓚呮椂銆?/p>
鍥捐錛氫富瑕佸仛浜?鍗曟簮鏈鐭礬寰?-Dijkstra綆楁硶錛屾墍鏈夌偣鐨?Floyd綆楁硶錛涙渶灝忕敓鎴愭爲(wèi)--Prim綆楁硶錛屽彟澶栭偅涓繕娌″啓榪? = =! )錛?鏈澶у瓙鍥?-鍥炴函娉?br> 1217 Arbitrage 寤虹珛涓涓湁鍚戝浘錛屽埄鐢‵loyd綆楁硶錛岄棶棰樹(shù)篃灝辨槸姹傞氳繃鍏朵粬鐐瑰埌鑷繁鏈夋病鏈夊鍔犮?br> 1596 find the safest road 鎵鏈夌偣鏈鐭礬寰?-Floyd鍙互瑙e喅銆?br> 1530 Maxumum Clique 鏈澶у瓙鍥?nbsp; 鍥炴函娉曪紝灝辨槸鑰楁椂姣旇緝澶氥?br> 1162 Eddy’s picture 鏈灝忕敓鎴愭爲(wèi)--Prim綆楁硶
]]>銆?br> 鍙兘鍑虹幇鐨勬暟鎹儏鍐碉細(xì) no no good銆?/name 鏄痭o 娌¤繘鐞冿紒
no good good銆?/name鏄痭o good 榪涚悆浜?jiǎn)锛?br> 鎵浠ュ湪澶勭悊涓婅娉ㄦ剰錛?銆傚瓧絎︿覆杈撳叆鍙互鏈夌┖鏍?-浣跨敤gets錛堬級(jí)錛?br> 2銆備粠瀛楃涓插悗闈㈡暟8涓垽鏂槸鍚︽槸“ no good”錛堟敞鎰忕┖鏍鹼級(jí)錛屾槸鍒欒〃鏄庢病榪涳紝涓嶆槸鍒欒〃鏄庤繘鐞冧簡(jiǎn)銆?br> 3銆傛庝箞澶勭悊浠庡瓧絎︿覆鍚庨潰鏁?涓憿錛熻繕璁板緱鏁扮粍鍚嶅拰鎸囬拡鐨勫叧緋伙紵
#include <string.h>
using namespace std;
int main()
{
int n;
while (scanf("%d",&n)&&n)
{
char name[1002];
int goal[20]={0};
getchar();//榪囨護(hù)鍥炶濺
for (int i=0;i<n;i++)
{
gets(name);
//puts(name);
int len;
len=strlen(name);
if(len>7)
{
if(strcmp(name+(len-8)," no good")==0)//鏁扮粍鍚嶅嵆鎸囬拡
{
goal[i]=0;
}
else
goal[i]=1;
}
else goal[i]=1;
}
int t;
t=n/2;
if(n%2==1) t++;
for (i=1;i<=t;i++)
{
printf("%d ",i);
}
printf("Score\n");
int j=0,tmp=0;
for (i=1;i<=t;i++)
{
if(goal[j]==1)
{
printf("O ");
tmp++;
}
else printf("X ");
j+=2;
}
printf("%d\n",tmp);
j=1;
tmp=0;
if(n%2==1) t--;
for (i=1;i<=t;i++)
{
if(goal[j]==1)
{
printf("O ");
tmp++;
}
else printf("X ");
j+=2;
}
if(n%2==1) printf("- ");
printf("%d\n",tmp);
}
}
]]>
1232 鐣呴氬伐紼?璧よ8瑁哥殑騫舵煡闆嗐?br> 1301 Jungle Roads 榪樻槸鏈灝忕敓鎴愭爲(wèi)
]]>
]]>
綆楁硶鎬濇兂錛?br> 璁維[j]涓轟互a[j]緇撳熬鐨勫瓙搴忓垪鏈澶х殑鍜岋紝閭d箞錛?br> S[1]=a[1];
S[j]=S[j-1]>=0?S[j-1]+a[j]:a[j];
閭d箞瑕佹眰鐨勮繛緇瓙搴忓垪涓湁鏈澶у拰鐨勫氨鏄疭[1],S[2],......,S[n]涓渶澶х殑銆?br>
綆楁硶璁捐錛?br>
2 int s[100001];
3 int n,str,end;
4
5 int DPMaxSum(int n)
6 {
7 int max;
8 int restr;
9 str=restr=1;
10 end=1;
11 max=s[1]=a[1];
12
13 for(int i=2;i<=n;i++)
14 {
15 if(s[i-1]>=0)
16 {
17 s[i]=s[i-1]+a[i];
18 }
19 else
20 {
21 s[i]=a[i];
22 restr=i;
23 }
24 if(max<=s[i])
25 {
26 max=s[i];
27 str=restr;
28 end=i;
29 }
30 }
31 return max;
32 }
33
浼樺寲錛氭眰S[i]鍙緷璧栦簬鍓嶄竴涓猄[i-1]鍜宎[i],鎵浠ヨ繕鍙互浼樺寲綆楁硶銆?br>
2 int i,cas,j,k,t,max,s,e,n,x;
3 main()
4 {
5 while(scanf("%d",&cas)!=EOF)
6 {
7 for(i=0;i<cas;i++)
8 {
9 if(i)printf("\n");
10 printf("Case %d:\n",i+1);
11 scanf("%d",&n);
12 max=-99;
13 for(j=k=1,t=0;j<=n;j++)
14 {
15 scanf("%d",&x);
16 t+=x;
17 if(t>max) {max=t;s=k;e=j;}
18 if(t<0) {k=j+1;t=0;}
19 }
20 printf("%d %d %d\n",max,s,e);
21 }
22 }
23 }
24
]]>
棰樼洰鍘熸枃錛?a >http://acm.hdu.edu.cn/showproblem.php?pid=1789
棰樼洰澶ф剰錛氳鍦ㄦ寚瀹氱殑鏃ユ湡鍐呭畬鎴愪綔涓氾紝騫朵笖姣忎釜浣滀笟鍙渶瑕?澶╃殑鏃墮棿騫朵笖姣忓ぉ鍙兘鍋氫竴涓綔涓氾紝娌″畬鎴愮殑灝變細(xì)鎵g浉搴旂殑瀛﹀垎錛?/font>瑕佹眰琚墸鏈灝戠殑瀛﹀垎銆?/font>
棰樼洰鍒嗘瀽錛?br> 璧峰垵鎴戞槸榪欐牱鎯沖緱錛?br> 1銆?/font>濡傛灉鍦ㄦ寚瀹氱殑鏃ユ湡鍐呭畬鎴愬垯涓嶄細(xì)鎵e垎錛屼笖姣忎釜浣滀笟鍙渶瑕佷竴澶╁畬鎴愶紝閭d箞鑲畾浼?xì)鎯冲埌鍏堟妸瀛﹀垎澶氱殑鍏堝仛锛屾槸涓嶆槸杩欐牱灏辫兘琛屽?鍏堢湅涓緇勪緥瀛愬惂錛?/font>
1 4 6 4 2 4 3
3 2 1 7 6 5 4
濡傛灉鍙冭檻瀛﹀垎澶氱殑鍏堝仛閭d箞鎺掑垪灝變細(xì)鏄細(xì)7654321 錛屼絾榪欏茍涓嶆槸鏈浼樼殑瀹夋帓銆?/font>
2銆傛崲涓搴︽兂浜?jiǎn)鎯冲Q岃浣挎墸鍒嗗皯錛屾垜搴旇灝介噺浣挎墸鍒嗗皯鐨勮繃鏈熷湪鍋氾紝鏈濂借璁╁鍒嗗鐨勫湪瀹冩寚瀹氱殑閭eぉ瀹屾垚錛岃繖鏍峰氨浼?xì)鋴慑緱杩欏ぉ琚墸鍒嗘暟灏介噺灏戙?br>緇撴灉鎬濊礬灝卞嚭鏉ヤ簡(jiǎn)錛?/font> 1銆傚厛澶勭悊鍒嗘暟澶氱殑浣滀笟錛屾妸鍒嗘暟澶氱殑瀹夋帓鍦ㄥ畠鏈鍚庢湡闄愰偅涓澶┿?br> 2銆傚鏋滈偅澶╄鍗犵敤浜?jiǎn)锛尀寰鍓嶄竴澶╁畨鎺掋?br> 3銆傚鏋滃墠闈㈡病鏈夋棩鏈熶簡(jiǎn)錛屽氨瀹夋帓鏈鍚庨偅澶╁鐞嗚繖涓綔涓氥傛鏃跺氨瑕佹墸鎺夊搴旂殑瀛﹀垎銆?/font>
綆楁硶璁捐錛?銆傚埄鐢⊿TL涓殑sort()榪涜鎺掑簭錛屼絾鏄洜涓哄畾涔変簡(jiǎn)涓涓暟鎹粨鏋勶紝闇瑕侀噸鏂板啓涓垽鏂嚱鏁般?br> 2銆傚畾涔変竴涓獀ist[]鏁扮粍鏉ユ爣璁拌澶╂槸鍚﹁瀹夋帓
浠g爜璁捐濡備笅錛?/font>
#include "iostream" #include <algorithm> //need sort() using namespace std; struct Homwo //浣滈〉鏃ユ湡鍜屽垎鏁扮殑緇撴瀯 { int date; int score; }p[10002]; //浠ュ垎鏁版帓鍚?/span> bool cmp(const Homwo m,const Homwo n) { return m.score>n.score?1:0; } int main() {
int t;
cin>>t; while (t鈥? { int n; int vist[10002]={0}; int flag,k=0; cin>>n; for (int i=1;i<=n;i++) { cin>>p[i].date; } for (i=1;i<=n;i++) { cin>>p[i].score; } sort(p+1,p+n+1,cmp);//娉ㄦ剰鏁扮粍鏃朵粠1寮濮嬬殑錛佹寜瀛﹀垎鎺掑垪 for (i=1;i<=n;i++) { if(vist[p[i].date]==0) vist[p[i].date]=1; else { for (int j=p[i].date-1,flag=0;j>0;j--) { if(vist[j]==0)
{ vist[j]=1;
flag=1;
break;
} } if (flag==0) { for (j=n;j>p[i].date;j--) { if(vist[j]==0) { vist[j]=1; k=k+p[i].score; break; } } }
}
}
cout<<k<<endl; } return 0; }
棰樼洰澶ф剰錛氱粰鍑?guó)檽v濮嬩綅緗拰緇堢偣浣嶇疆錛岃姹傚湪鎸囧畾鐨勬椂闂村垰濂藉埌杈劇粓鐐規(guī)椂闂達(dá)紝姣忕Щ鍔ㄤ竴姝ヤ竴縐掞紝騫朵笖涓嶈兘榪斿洖銆?nbsp;
棰樼洰鍒嗘瀽錛?/p>
1銆傝搗鍒濅互涓鴻兘鐢˙FS鍋氾紝鍚庢潵鍙戠幇錛屽繀欏誨湪鎸囧畾鐨勬椂闂村唴鎶佃揪緇堢偣鎵嶈錛孊FS鏃犳硶杈懼埌瑕佹眰銆?/p>
2銆傝姹傚湪鎸囧畾鏃墮棿鍐呭埌杈撅紝鍞竴鎯蟲(chóng)硶灝辨槸鑳戒笉鑳芥灇涓懼嚭鎵鏈夋姷杈炬柟妗堬紝鍐嶅湪閫氳繃媯(gè)鏌ユ椂闂存椂闂存槸鍚﹀惢鍚堬紝寰楀埌緇撴灉錛岃繖灝辮嚜鐒舵兂鍒頒簡(jiǎn)鐢―FS榪涜鎼滅儲(chǔ)銆?/p>
3銆侱FS鎼滅儲(chǔ)瀹屾垚鍚庯紝鎻愪氦鍙戠幇瓚呮椂錛岀湅鏍峰瓙榪樺緱鍓灊鎵嶈錛屾棤濂堝晩錛岀櫨搴︿竴涓嬨?/p>
4銆傚壀鏋濇柟娉曪細(xì)濂囧伓鍓灊
鎶妋ap鐪嬩綔
0 1 0 1 0 1
1 0 1 0 1 0
0 1 0 1 0 1
1 0 1 0 1 0
0 1 0 1 0 1
浠?0->1 闇瑕佸鏁版
浠?0->0 闇瑕佸伓鏁版
閭d箞璁炬墍鍦ㄤ綅緗?(x,y) 涓?鐩爣浣嶇疆 (dx,dy)
濡傛灉abs(x-y)+abs(dx-dy)涓哄伓鏁幫紝鍒欒鏄?abs(x-y) 鍜?abs(dx-dy)鐨勫鍋舵х浉鍚岋紝闇瑕佽蛋鍋舵暟姝?/p>
濡傛灉abs(x-y)+abs(dx-dy)涓哄鏁幫紝閭d箞璇存槑 abs(x-y) 鍜?abs(dx-dy)鐨勫鍋舵т笉鍚岋紝闇瑕佽蛋濂囨暟姝?/p>
鐞嗚В涓?abs(si-sj)+abs(di-dj) 鐨勫鍋舵у氨紜畾浜?jiǎn)鎵闇瑕佺殑姝ユ暟鐨勫鍋舵э紒錛?/p>
鑰?(ti-setp)琛ㄧず鍓╀笅榪橀渶瑕佽蛋鐨勬鏁幫紝鐢變簬棰樼洰瑕佹眰瑕佸湪 ti鏃?鎭板ソ鍒拌揪錛岄偅涔?nbsp; (ti-step) 涓?abs(x-y)+abs(dx-dy) 鐨勫鍋舵у繀欏葷浉鍚?/p>
鍥犳 temp=ti-step-abs(dx-x)-abs(dy-y) 蹇呯劧涓哄伓鏁幫紒
5銆傛渶鍚庝竴鐐癸細(xì)鏁翠釜鍥劇殑鍙互縐誨姩姝ユ暟搴旇澶т簬鎸囧畾鐨勬椂闂?/p>
#include "iostream" #include <math.h> using namespace std; int dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}}; int n,m; char a[7][7]; int sx,sy,dx,dy; int ti,flag; void DfsSerch(int x,int y,int step) { ///////////////////////////////////// int temp; temp=ti-step-abs(dx-x)-abs(dy-y); if (temp<0||temp%2==1) return; //////////////////////////////////// int tx,ty; for(int i=0;i<4;i++) //鏂瑰悜鎺㈢儲(chǔ) { tx=x+dir[i][0]; ty=y+dir[i][1]; if (a[tx][ty]=='D'&&step==ti-1) { flag=1; return ; } if(a[tx][ty]=='.'&&(tx>=0&&tx<n) &&(ty>=0&&ty<m)) { a[tx][ty]='X'; //鏍囪璁塊棶 DfsSerch(tx,ty,step+1); a[tx][ty]='.'; //鍥炴函鍙栨秷鏍囪 if(flag==1) return;//鎵懼埌鐩存帴榪斿洖 } } } int main() { while (cin>>n>>m>>ti&&n!=0||m!=0||ti!=0) { /////////////////////////////////////// //杈撳叆鏁版嵁 int wall=0; for (int i=0;i<n;i++) for(int j=0;j<m;j++) { cin>>a[i][j]; if(a[i][j]=='S') { sx=i; sy=j; } if (a[i][j]=='D') { dx=i; dy=j; } if (a[i][j]=='X') { wall++; } }//for-for ///////////////////////////////////// flag=0; if (n*m-wall<=ti) { cout<<"NO"<<endl; continue; } DfsSerch(sx,sy,0); if(flag==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }