在大家不辭辛勞的幫助下,tt 順利地完成了所有的神秘任務。input神秘人很高興,決定給 tt 乙個獎勵,即白日做夢之撿貓咪遊戲。
撿貓咪遊戲是這樣的,貓咪從天上往下掉,且只會掉在 [0, 10] 範圍內,具體的座標範圍如下圖所示。
tt 初始站在位置五上,且每秒只能在移動不超過一公尺的範圍內接住掉落的貓咪,如果沒有接住,貓咪就會跑掉。例如,在剛開始的一秒內,tt 只能接到
四、五、六這三個位置其中乙個位置的貓咪。
喜愛貓咪的 tt 想要接住盡可能多的貓咪,你能幫幫他嗎?
多組樣例。每組樣例輸入乙個 m (0 < m < 100000),表示有 m 只貓咪。output在接下來的 m 行中,每行有兩個整數 a b (0 < b < 100000),表示在第 b 秒的時候有乙隻貓咪掉落在 a 點上。
注意,同乙個點上同一秒可能掉落多隻貓咪。m = 0 時輸入結束。
輸出乙個整數 x,表示 tt 可能接住的最多的貓咪數。sample input
6sample output 我的思路:5 14 1
6 17 2
7 28 3
0
這道題是要求根據貓出現的時間和出現的位置,以及自身的移動來計算可以得到的最多的貓咪數。可以使用動態規劃的思想,按照時間從後往前的順序來遞推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 ...