P3956 棋盤 題解

2021-10-04 18:19:21 字數 1556 閱讀 4485

同步

原題鏈結

簡要題意:

從 1 ,1

1,11,

1 走到 n,n

n,nn,

n;每次走過相同顏色的格仔不用魔法,走過不同顏色(但有顏色)的格仔用 1

11 個魔法;走到乙個有顏色的格仔上可以暫時將它變成某種顏色然後走上去,用 2

22 個魔法;但是這種魔法是暫時的,只要你離開那個格仔,那個格仔就會變回沒有顏色的樣子,並且不能連續使用 2

22 次。求到終點的最小魔法。(不好意思,題目中實際說的是「金幣」,但理解成魔法無妨。

首先,dfs

\texttt

dfs 和 bfs

\texttt

bfs 都可以實現本題。

由於 dfs

\texttt

dfs **原理簡單,清晰有條理,所以考慮深度優先搜尋。

具體細節見**。

時間複雜度:o(n

2)

o(n^2)

o(n2

).(有較大常數,但可以接受)

實際得分;100pt

s100pts

100pts

.

#pragma gcc optimize(2)

#include

using

namespace std;

inline

intread()

int x=0;

while

(isdigit

(ch)

) x=x*

10+ch-

'0',ch=

getchar()

;return x*f;

}int f[

1001][

1001

],ans;

int n,m,a[

1001][

1001];

bool h[

1001][

1001];

const

int dx[4]

=;const

int dy[4]

=;//座標轉移

inline

void

dfs(

int x,

int y,

int coin,

bool magic)

for(

int i=

0;i<

4;i++

)else

if(magic)

h[nx]

[ny]=0

;//返回狀態防止影響下一步答案}}

}int

main()

ans=int_max; h[1]

[1]=

1;dfs(1,

1,0,

1);printf

("%d\n"

,ans==int_max?-1

:ans)

;return0;

}

洛谷 P3956 棋盤題解

題目 p3956 棋盤 但這個魔法不能連續使用,而且這個魔法的持續時間很短,也就是說,如果你使用了這個魔法,走到了這個暫時有顏色的格仔上,你就不能繼續使用魔法。include include include using namespace std const int maxn 5000 const ...

洛谷 P3956 棋盤

js省裡冬令營夏令營講深搜都講到了 今天上午測試的題,15分,因為剪枝沒剪乾淨,少了個等於號,於是本來能拿到的分也沒拿到,唉 主要思想dfs 剪枝 include using namespace std int m,n 依照題目 int a 107 107 存顏色 int vis 107 107 存...

洛谷 P3956 棋盤

找了找發現這週做的竟然都是水題,那麼就把不知道多久以前的一道水題發出來吧。p3956 棋盤 有乙個m m的棋盤,棋盤上每乙個格仔可能是紅色 黃色或沒有任何顏色的。你現在要從棋盤的最左上角走到棋盤的最右下角。任何乙個時刻,你所站在的位置必須是有顏色的 不能是無色的 你只能向上 下 左 右四個方向前進。...