Week13作業 C TT的獎勵 dp

2021-10-06 06:48:05 字數 1603 閱讀 4782

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

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

撿貓咪遊戲是這樣的,貓咪從天上往下掉,且只會掉在 [0, 10] 範圍內的整數。

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

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

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

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

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

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

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

令f[i][j]是在i座標第j秒接到的最大貓咪數,則f[i][j]=max+mm[i][j]。邊界0和10要去掉乙個f。

發現可以優化掉j,即對j=1~maxb(b的最大值),f[i]=max+mm[i][j],其中last[i]是j-1時的f[i]。

注意一開始位置是5,每一秒最多移動一格距離,也就是說前5秒應特殊處理,第2秒能到3-7,第3秒能到2-8,第4秒能到1-9,第5秒能到0-10。

最後答案就是max。

一道簡單的dp題,狀態方程很好列。

#include

using

namespace std;

int m,a,b;

int mm[11]

[100010];

int maxb;

int f[11]

,last[11]

;int ans;

//f[i][j]是在i座標第j秒接到的貓咪

//f[i][j]=max+mm[i][j]

//優化掉j

//j=1~maxb

//f[i]=max+mm[i][j]

intmain()

//初始化,一開始位置為5

last[4]

=mm[4]

[1],last[5]

=mm[5]

[1],last[6]

=mm[6]

[1];

//前5秒特殊處理

for(

int j=

2;j<=

5;j++

)for

(int i=

5-j;i<=

5+j;i++

) last[i]

=f[i];}

//處理6秒及以後

for(

int j=

6;j<=maxb;j++

)for

(int i=

0;i<=

10;i++

) last[i]

=f[i];}

for(

int i=

0;i<=

10;i++)if

(ans) ans=f[i]

; cout<}}

Week13作業 選做題D

題意 在大家的三連助攻下,tt 一舉獲得了超級多的貓咪,因此決定開一間貓咖,將快樂與大家一同分享。並且在開業的那一天,為了紀念這個日子,tt 在貓咖門口種了一棵蘋果樹。一年後,蘋果熟了,到了該摘蘋果的日子了。已知樹上共有 n 個節點,每個節點對應乙個快樂值為 w i 的蘋果,為了可持續發展,tt 要...

week13 C TT 的獎勵(必做)

在大家不辭辛勞的幫助下,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 第一行乙個...