日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

bzoj1054

發(fā)布時(shí)間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj1054 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

弱弱的搜索題,

我的做法是將矩陣看做二進(jìn)制然后用位運(yùn)算來(lái)做的,感覺(jué)比較舒服

1 const dx:array[1..4] of integer=(-1,1,0,0); 2 ? ? ? dy:array[1..4] of integer=(0,0,-1,1); 3 4 type node=record 5 ? ? ? ?po,next:longint; 6 ? ? ?end; 7 8 var a:array[0..10010] of node; 9 ? ? d,q:array[0..70010] of longint; 10 ? ? p:array[0..20] of longint; 11 ? ? num:array[0..10,0..10] of longint; 12 ? ? i,j,n,k,m,st,en,len,x,y:longint; 13 ? ? s:string; 14 15 procedure add(x,y:longint); 16 ? begin 17 ? ? inc(len); 18 ? ? a[len].po:=y; 19 ? ? a[len].next:=p[x]; 20 ? ? p[x]:=len; 21 ? end; 22 23 procedure bfs; 24 ? var u,j,i,k,x,y,f,r:longint; 25 ? begin 26 ? ? f:=1; 27 ? ? r:=1; 28 ? ? q[1]:=st; 29 ? ? fillchar(d,sizeof(d),255); 30 ? ? d[st]:=0; 31 ? ? while f<=r do 32 ? ? begin 33 ? ? ? x:=q[f]; 34 ? ? ? k:=1; 35 ? ? ? for i:=0 to 15 do 36 ? ? ? begin 37 ? ? ? ? if k and x<>0 then 38 ? ? ? ? begin 39 ? ? ? ? ? j:=p[i]; 40 ? ? ? ? ? while j<>-1 do 41 ? ? ? ? ? begin 42 ? ? ? ? ? ? u:=1 shl a[j].po; 43 ? ? ? ? ? ? y:=(x xor k) or u; 44 ? ? ? ? ? ? if (x and u=0) and (d[y]=-1) then 45 ? ? ? ? ? ? begin 46 ? ? ? ? ? ? ? d[y]:=d[x]+1; 47 ? ? ? ? ? ? ? if y=en then exit; 48 ? ? ? ? ? ? ? inc(r); 49 ? ? ? ? ? ? ? q[r]:=y; 50 ? ? ? ? ? ? end; 51 ? ? ? ? ? ? j:=a[j].next; 52 ? ? ? ? ? end; 53 ? ? ? ? end; 54 ? ? ? ? k:=k shl 1; 55 ? ? ? end; 56 ? ? ? inc(f); 57 ? ? end; 58 ? end; 59 60 begin 61 ? fillchar(num,sizeof(num),255); 62 ? fillchar(p,sizeof(p),255); 63 ? for i:=1 to 4 do 64 ? begin 65 ? ? readln(s); 66 ? ? for j:=1 to 4 do 67 ? ? begin 68 ? ? ? num[i,j]:=k; 69 ? ? ? st:=st+(ord(s[j])-48)*(1 shl k); 70 ? ? ? inc(k); 71 ? ? end; 72 ? end; 73 ? readln; 74 ? for i:=1 to 4 do 75 ? begin 76 ? ? readln(s); 77 ? ? for j:=1 to 4 do 78 ? ? ? en:=en+(ord(s[j])-48)*(1 shl num[i,j]); 79 ? end; 80 ? for i:=1 to 4 do 81 ? ? for j:=1 to 4 do 82 ? ? ? for k:=1 to 4 do 83 ? ? ? begin 84 ? ? ? ? x:=i+dx[k]; 85 ? ? ? ? y:=j+dy[k]; 86 ? ? ? ? if num[x,y]<>-1 then add(num[i,j],num[x,y]); 87 ? ? ? end; 88 ? bfs; 89 ? writeln(d[en]); 90 end. View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/phile/p/4473208.html

總結(jié)

以上是生活随笔為你收集整理的bzoj1054的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。