Wannafly挑戰賽10 小H和密碼

2021-08-15 18:25:33 字數 1019 閱讀 7868

一開始用的dfs很明顯過不去,後來看大佬的**,原來是動態規劃,另外這題的資料太水了,不少**連樣例都過不去卻可以ac,我也是服了orz。。。。。。

分別用乙個二維陣列dial和乙個一維陣列empty來表示密碼盤,dial存的是第i個密碼盤上有哪些字母,empty表示第i個密碼盤是否有#,即空字元。

再設定乙個二維陣列dp用來表示代表前i個轉盤能否匹配詢問中的第j個字母。

如果我們能夠在第i個密碼盤上匹配到第j個字母則到下乙個密碼盤去匹配第j+1個字母,或者如果第i個密碼盤有空字元#,則到第i+1個密碼盤去匹配第j個字母。

#include 

using

namespace

std;

/** * created with intellij clion.

* @author wanyu

* @date: 2018-02-24

* @time: 12:11

* to change this template use file | settings | file templates.

* */

int n, m, q;

bool dial[310][310];//存放整張轉盤

bool empty[310];//表示哪乙個轉盤有#

int dp[310][310];//代表前i個轉盤能否找到詢問中的第j個字母

int main() }}

int times = 0;//第幾次詢問(除去長度過長的)

while (q--)

times++;

dp[0][0] = times;//初始化

for (int i = 0; i <= n; i++)

if (dial[i][ans[j]])

if (empty[i]) }}

puts(dp[n][len] == times ? "yes" : "no");

}return

0;}

Wannafly挑戰賽10 A小h和迷宮

a小h和迷宮 小h陷入了乙個迷宮中,迷宮裡有乙個可怕的怪獸,血量有n點,小h有三瓶魔法藥水,分別可以使怪獸損失a b c 的血量 之後怪獸的血量會向下取整 小h想合理地運用這三瓶藥水,使怪獸失去盡可能多的血量 注意 每瓶藥水只能用一次 模擬即可,注意是血量向下取整,則失去的血量向上取整!includ...

wannafly挑戰賽A 小H和迷宮

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

Wannafly挑戰賽10 B小h和密碼

b小h和密碼 小h在擊敗怪獸後,被乙個密碼鎖擋住了去路 密碼鎖由n個轉盤組成,編號為1 n,每個轉盤有m個位置,每個位置上要麼有乙個小寫字母,要麼沒有任何字元。乙個密碼能被轉盤表示出,當且僅當指定每個轉盤上面的某乙個位置,然後將這些位置按照所屬的轉盤編號順次連線 空位置直接忽略 可以得到這個密碼 小...