SSL 1558科技莊園

2021-10-12 07:31:26 字數 1576 閱讀 4298

time limit:1000ms

memory limit:65536k

life是河北衡水中學的學生,他是乙個道德極高的學生,他積極貫徹黨的十七大精神,積極走可持續發展道路,在他的不屑努力下校領導終於決定讓他在衡中的一片閒雜地里種桃,以親身實踐種田的樂趣,厲行節約,告訴人們節約的重要性!

春華秋實,在這個金秋的季節,life帶者他的寵物——pft到了他的試驗田,當他看見自己的辛勤成果時,心裡是那個高興啊!

這時life對他的寵物pft說:「你想不想吃桃啊?」

pft興奮的說:「好啊!」

life說:「好吧,但是我只給你一定的時間,你必須在規定的時間之內回到我面前,否則你摘的桃都要歸我吃!」

pft思考了一會,最終答應了!

由於pft的數學不好!它並不知道怎樣才能在規定的時間獲得最大的價值,但你是乙個好心人,如果你幫助它,你的rp一定會暴漲的!

對於這個可以rp暴漲機會,你一定不會錯過的是不是?

由於pft不是機械人,所以他的體力並不是無限的,他不想摘很多的桃以至體力為0,而白白把桃給life。同時pft每次只能摘一棵桃樹,摘桃花費時間體力,每棵桃樹都可以摘k次(對於同一棵桃每次摘的桃數相同)。每次摘完後都要返回出發點(pft一次拿不了很多)即life的所在地(0,0)。

pft每秒只能移動乙個單位,每移動乙個單位耗費體力1(摘取不花費時間和體力,但只限上下左右移動)。

第一行:四個數為n,m,ti,a 分別表示試驗田的長和寬,life給pft的時間,和pft的體力。

下面乙個n行m列的矩陣桃田。表示每次每棵桃樹上能摘的桃數。

接下來n行m列的矩陣,表示每棵桃最多可以採摘的次數k。

乙個數:pft可以獲得的最大的桃個數。

4 4 13 20

10 0 0 0

0 0 10 0

0 0 10 0

0 0 0 0

1 0 0 0

0 0 2 0

0 0 4 0

0 0 0 0

【樣例解釋】

可以摘到1次(1,1)或1次(2,3),體力和時間不滿足再摘桃了。

對於m n ti a

10<=30%<=50

10<=100%<=100

對於k10<=100%<=100

保證結果在longint範圍內

這道題是多重揹包。

設f[i]為消耗i的時間和體力所能獲得的最大的桃個數。

a為每次每棵桃樹上能摘的桃數;

x,y為座標。

f[i]=max(f[i],f[i-((x+y)<<1)]+a[x][y];

1<=x<=n,1<=y<=m,1<=i<=min(ti,a-1);

#include

#include

#include

using

namespace std;

int f[

1010

],a[

1010][

1010

],n,m,v;

void

input()

voiddp(

)int

main()

SSL P1558 科技莊園

求在限定時間和體力內,可以拿到的最大值。多重揹包 明顯 但有兩個條件,看似很煩,但只要我們留意題目 每次的代價都是一樣的 乙個單位 那麼我們只要求出他們其中最小的那個,將其用在迴圈條件即可。當然,題目還有乙個細節 ta不想體力值為0,那我們就提前將體力值 1,避免以後的操作。include incl...

SSLOJ1558 P2760科技莊園

life是河北衡水中學的學生,他是乙個道德極高的學生,他積極貫徹黨的十七大精神,積極走可持續發展道路,在他的不屑努力下校領導終於決定讓他在衡中的一片閒雜地里種桃,以親身實踐種田的樂趣,厲行節約,告訴人們節約的重要性!春華秋實,在這個金秋的季節,life帶者他的寵物 pft到了他的試驗田,當他看見自己...

luoguP2760 科技莊園(揹包DP)

傳送門 資料中有兩個需要注意的地方 存在桃樹上有桃子但是摘 0 次的情況 題目中要求體力不能為0,因此就算到達了重點體力也不能為0,所以實際上允許使用的體力為 a 1 把每個桃樹想象成物品,體力和時間的最小值想象成空間 由於摘完一次就要回到起點,所以每顆桃樹的體力為 2 x y x y 分別為此桃樹...