同步
原題鏈結
簡要題意:
從 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的棋盤,棋盤上每乙個格仔可能是紅色 黃色或沒有任何顏色的。你現在要從棋盤的最左上角走到棋盤的最右下角。任何乙個時刻,你所站在的位置必須是有顏色的 不能是無色的 你只能向上 下 左 右四個方向前進。...