二維揹包 找啊找啊找GF(洛谷 P1509)

2021-10-04 19:53:33 字數 1812 閱讀 1138

題目背景

「找啊找啊找gf,找到乙個好gf,吃頓飯啊拉拉手,你是我的好gf.再見.」

「誒,別再見啊…」

七夕…七夕…七夕這個日子,對於sqybi這種單身的菜鳥來說是多麼的痛苦…雖然他聽著這首叫做"找啊找啊找gf"的歌,他還是很痛苦.為了避免這種痛苦,sqybi決定要給自己找點事情幹.他去找到了七夕模擬賽的負責人zmc mm,讓她給自己乙個出題的任務.經過幾天的死纏爛打,zmc mm終於同意了.

但是,拿到這個任務的sqybi發現,原來出題比單身更讓人感到無聊-_-…所以,他決定了,要在出題的同時去辦另一件能夠使自己不無聊的事情–給自己找gf.

sqybi現在看中了n個mm,我們不妨把她們編號1到n.請mm吃飯是要花錢的,我們假設請i號mm吃飯要花rmb[i]塊大洋.而希望騙mm當自己gf是要費人品的,我們假設請第i號mm吃飯試圖讓她當自己gf的行為(不妨稱作泡該mm)要耗費rp[i]的人品.而對於每乙個mm來說,sqybi都有乙個對應的搞定她的時間,對於第i個mm來說叫做time[i]. sqybi保證自己有足夠的魅力用time[i]的時間搞定第i個mm_.

sqybi希望搞到盡量多的mm當自己的gf,這點是毋庸置疑的.但他不希望為此花費太多的時間(畢竟七夕賽的題目還沒出),所以他希望在保證搞到mm數量最多的情況下花費的總時間最少.

題目描述

sqybi現在有m塊大洋,他也通過一段時間的努力攢到了r的人品(這次為模擬賽出題也攢rp哦~~).他憑藉這些大洋和人品可以泡到一些mm.他想知道,自己泡到最多的mm花費的最少時間是多少.

注意sqybi在乙個時刻只能去泡乙個mm–如果同時泡兩個或以上的mm的話,她們會打起來的…

輸入格式

輸入的第一行是n,表示sqybi看中的mm數量.

接下來有n行,依次表示編號為1, 2, 3, …, n的乙個mm的資訊.每行表示乙個mm的資訊,有三個整數:rmb, rp和time.

最後一行有兩個整數,分別為m和r.

輸出格式

你只需要輸出一行,其中有乙個整數,表示sqybi在保證mm數量的情況下花費的最少總時間是多少.

題目有點長,簡要說下這個跟一維揹包的區別:

限制條件變為了兩個,相應的迴圈和dp陣列也要開二維,其他的思維跟一維的一樣;

但是本題不是求人數,而是最小花費時間,當人數可以更新時,時間必須直接加上,當人數與上乙個狀態相等時,這時可以和上乙個狀態的時間進行比較,取最小值;

**:

#include

#define ll long long

#define pa pair

#define lson k<<1

#define rson k<<1|1

using

namespace std;

const

int n=

110;

const

int m=

200100

;const ll mod=

2e9+7;

int rmb[n]

,rp[n]

,tim[n]

,m,r,n;

int dptim[n]

[n],dpsum[n]

[n];

intmain()

if(dpsum[j]

[k]==dpsum[j-rmb[i]

][k-rp[i]]+

1)}}

}}if(dpsum[m]

[r]) cout<[r]

0

}

P1509 找啊找啊找GF 二維揹包

題意 給出n個女朋友,每個女朋友有花費的錢數,花費的人品值,花費的時間 讓我們在擁有最多女朋友的情況下,花費時間最少 思路 這是一道二維揹包的題,我們開二維來進行dp 比二維揹包多了內容就是,要花費時間最少,那麼我們就只需要多增加乙個內容 就是 在擁有女朋友一樣多的資料中,尋找花費錢數最少的情況 即...

洛谷1509 找啊找啊找GF

找啊找啊找gf,找到乙個好gf,吃頓飯啊拉拉手,你是我的好gf.再見.誒,別再見啊.七夕.七夕.七夕這個日子,對於sqybi這種單身的菜鳥來說是多麼的痛苦.雖然他聽著這首叫做 找啊找啊找gf 的歌,他還是很痛苦.為了避免這種痛苦,sqybi決定要給自己找點事情幹.他去找到了七夕模擬賽的負責人zmc ...

P1509 找啊找啊找GF(洛谷)

找啊找啊找gf,找到乙個好gf,吃頓飯啊拉拉手,你是我的好gf.再見.誒,別再見啊.七夕.七夕.七夕這個日子,對於sqybi這種單身的菜鳥來說是多麼的痛苦.雖然他聽著這首叫做 找啊找啊找gf 的歌,他還是很痛苦.為了避免這種痛苦,sqybi決定要給自己找點事情幹.他去找到了七夕模擬賽的負責人zmc ...