week13 C TT 的獎勵(必做)

2021-10-06 06:48:05 字數 1480 閱讀 3762

在大家不辭辛勞的幫助下,tt 順利地完成了所有的神秘任務。

神秘人很高興,決定給 tt 乙個獎勵,即白日做夢之撿貓咪遊戲。

撿貓咪遊戲是這樣的,貓咪從天上往下掉,且只會掉在 [0, 10] 範圍內,具體的座標範圍如下圖所示。

tt 初始站在位置五上,且每秒只能在移動不超過一公尺的範圍內接住掉落的貓咪,如果沒有接住,貓咪就會跑掉。例如,在剛開始的一秒內,tt 只能接到

四、五、六這三個位置其中乙個位置的貓咪。

喜愛貓咪的 tt 想要接住盡可能多的貓咪,你能幫幫他嗎?

input

多組樣例。每組樣例輸入乙個 m (0 < m < 100000),表示有 m 只貓咪。

在接下來的 m 行中,每行有兩個整數 a b (0 < b < 100000),表示在第 b 秒的時候有乙隻貓咪掉落在 a 點上。

注意,同乙個點上同一秒可能掉落多隻貓咪。m = 0 時輸入結束。

output

輸出乙個整數 x,表示 tt 可能接住的最多的貓咪數。

sample input

6

5 14 1

6 17 2

7 28 3

0

sample output

我的思路:

這道題是要求根據貓出現的時間和出現的位置,以及自身的移動來計算可以得到的最多的貓咪數。可以使用動態規劃的思想,按照時間從後往前的順序來遞推dp陣列。因為每次只能移動一格,所以當前位置j的dp只受j-1,j,j+1這三個位置的dp值影響,而因為是倒推,所以是d[i][j] = dp[i][j]+max(dp[i+1][j-1],max(dp[i+1][j],dp[i+1][j+1]));最後的答案就是起始位置dp[0][5]。

我的總結:

這道題可以通過動態規劃的思想巧妙地解決,要注意將dp陣列開的足夠大,同時避免陣列越界。

我的**:

#include

#include

#include

using

namespace std;

int m,dp[

100010][

12],a,b;

intmain()

for(

int i=tmax-

1;i>=

0;i--

)for

(int j=

0;j<=

10;j++

) cout<[5

]<}return0;

}

Week13作業 C TT的獎勵 dp

在大家不辭辛勞的幫助下,tt 順利地完成了所有的神秘任務。神秘人很高興,決定給 tt 乙個獎勵,即白日做夢之撿貓咪遊戲。撿貓咪遊戲是這樣的,貓咪從天上往下掉,且只會掉在 0,10 範圍內的整數。tt 初始站在位置五上,且每秒只能在移動不超過一公尺的範圍內接住掉落的貓咪,如果沒有接住,貓咪就會跑掉。例...

Week13 作業 必做

a tt 的神秘任務1 這一天,tt 遇到了乙個神秘人。神秘人給了兩個數字,分別表示 n 和 k,並要求 tt 給出 k 個奇偶性相同的正整數,使得其和等於 n。例如 n 10,k 3,答案可以為 4 2 4 tt 覺得這個任務太簡單了,不願意做,你能幫他完成嗎?本題是spj input 第一行乙個...

Week13必做部分

題目大意 給定兩個數字,分別表示 n 和 k,並要求給出 k 個奇偶性相同的正整數,使得其和等於 n,例如 n 10,k 3,答案可以為 4 2 4 本題是spj 思路這個題乍一看沒有頭緒,其實仔細想一下 題目只需要奇偶性相同就可以,試想,若乙個數可以分成全是奇數的組合,則一定可以拆分為1 1 1 ...