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 分別為此桃樹...