11H 迷宮入口

2022-08-01 06:12:08 字數 2216 閱讀 2404

總時間限制: 

1000ms

記憶體限制: 

10000kb

描述愛好探險的你,找到一座裝滿了寶藏的迷宮的入口,你看到入口的大門上有乙個邊長為s的正方形的大鎖,旁邊散落著n塊正方形的金屬小片,你意識到鎖的鑰匙,即是用這n小塊,拼成大門上的正方形,你想知道是否能拼成這把鑰匙開啟迷宮的大門。

輸入輸入包含多組陣列,第一行是乙個整數t(1 <= t <= 10),表示有t組資料。接下裡每組陣列包含整數s,即鎖的邊長,整數n(1 <= n <= 16),即金屬小片的數量,接下來n個整數,分別是各個小片的邊長ci(1 <= ci <= 10)。

輸出每組資料輸出一行,輸出「yes"或者"no",表示是否可以開啟大門。

樣例輸入

2

4 8 1 1 1 1 1 3 1 1

5 6 3 3 2 1 1 1

樣例輸出

yes

no

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;

6int a[15];7

int c[17];8

int m[45][45];9

ints, n;

10void fill(int x, int y, int l, int vol)

15bool dfs(int x,int

y)21

else

return dfs(x,y+1

);22}23

bool ret=0;24

for(int l=1;!ret;l++)

33return

ret;34}

3536

intmain()

48if(s>40)52

bool ans = dfs(0, 0

);53

if(ans) cout<

yes"

<

54else cout<

<

56return0;

57 }

備註:這差不多也就是標答,這麼暴力居然也可以過orz 另外我懷疑這道題資料範圍寫錯了,因為l和c陣列開到40+才能過。開小了就是wa問了助教,等待答覆中。。

大於四十不可能是因為,16個片,每個邊長最大為10(這麼看資料範圍又沒錯?),加在一起面積也就是1600,也就是說鎖的邊長大於40就不可能湊出來了。當然不寫這個也可以ac。

然後這個dfs的寫法就 非常神奇……從左上角開始填充,先填充到最右,然後換行。標黃的地方我還是沒太明白,wsl。我明白了。

因為前面說的填充順序的問題,這時候填完了第一行的正方形,該填第二行了。這時候邊長是從小往大嘗試的,這很重要,所以x+l或者y+l出界了肯定不行要break這是顯然的;還有就是如果像途中虛線正方形一樣,如果它右上角已經開始侵占了第一行的正方形的位置(之前填充過)也說明邊長太大了,要break。

為啥這麼難。

這個dfs也可以不這麼寫,用更常規的方法是這樣的:

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;

6int a[45];7

int c[45];8

int m[45][45];9

ints, n;

10void fill(int x, int y, int l, int vol)

15bool dfs(int x,int

y)21

else

return dfs(x,y+1

);22}23

//bool ret=0;

24for(int l=1;;l++)

34return

false;35

}3637int

main()

49if(s>40)53

bool ans = dfs(0, 0

);54

if(ans) cout<

yes"

<

55else cout<

<

57return0;

58 }

牛客假日團隊賽11 H 過河卒

題目描述 如圖,a 點有乙個過河卒,需要走到目標 b 點。卒行走規則 可以向下 或者向右。同時在棋盤上的任一點有乙個對方的馬 如上圖的c點 該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。例如上圖 c 點上的馬可以控制 9 個點 圖中的p1,p2 p8 和 c 卒不能通過對方馬的控制點。棋盤用...

11I 變換的迷宮(bfs迷宮問題)

總時間限制 1000ms 記憶體限制 10000kb 描述愛好探險的你,找到一座裝滿了寶藏的迷宮的入口,你看到入口的大門上有乙個邊長為s的正方形的大鎖,旁邊散落著n塊正方形的金屬小片,你意識到鎖的鑰匙,即是用這n小塊,拼成大門上的正方形,你想知道是否能拼成這把鑰匙開啟迷宮的大門。輸入輸入包含多組陣列...

wannafly挑戰賽A 小H和迷宮

題目描述 小h陷入了乙個迷宮中,迷宮裡有乙個可怕的怪獸,血量有n點,小h有三瓶魔法藥水,分別可以使怪獸損失a b c 的血量 之後怪獸的血量會向下取整 小h想合理地運用這三瓶藥水,使怪獸失去盡可能多的血量 注意 每瓶藥水只能用一次 輸入描述 一行,四個整數 n,a,b,c 輸出描述 一行,乙個整數w...