這是一道水題,板的不能再板。
題目描述
steam2023年夏季**開始了!
⼩y同學決定⼊⼿⼀些遊戲,⼩y同學⼀共有x元的預算,該平台上所有的n個遊戲均有折扣,標號為i的遊戲的原價ai元,現價只要bi元(也就是說該遊戲可以優惠ai−bi元,每款遊戲最多只能購買⼀次),並且⼩y同學購買該遊戲能獲得快樂值為wi。
由於優惠的存在,⼩y作為剁⼿黨可能做出⼀些衝動消費導致最終買遊戲的總費⽤超過預算,但只要滿足獲得的總優惠金額不低於超過預算的總金額,那在⼩y同學⼼理上就不會覺得吃虧(買到就是賺到!真⾹!)。現在⼩y希望在⼼理上不覺得吃虧的前提下,獲得盡可能多的快樂值。
輸入格式
第⼀⾏包含兩個數n和x。接下來n⾏包含每個遊戲的資訊,原價ai,現價bi,能獲得的快樂值為wi。
輸出格式
輸出⼀個數字,表⽰⼩y同學能獲得的最⼤快樂值
樣例
樣例輸入1:
4 100
100 73 60
100 89 35
30 21 30
10 8 10
樣例輸出1:
樣例輸入2:
3 100
100 100 60
80 80 35
21 21 30
樣例輸出2:
樣例輸入3:
2 100
100 30 35
140 140 100
樣例輸出3:
首先一眼看出揹包dp,與板子唯一的不同就在於有快樂值的存在。
讓我們推一推:
設第i個原價ai,現價bi,快樂值wi,則花費(相當於體積)為
bi - (ai - bi) 即 2 * bi - ai
快樂值(價值)為wi
然後有一種特殊情況:2 * bi - ai < 0
就是買這個不但不花錢,反而還賺錢。我們直接在輸入時先放進揹包(何樂而不為)
亮**
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const
int m=
1e6+5;
int m,n,len;
long
long ai,bi,ci,dp[m]
,ans;
struct node
;node a[
505]
;int
main()
for(
int i=
1;i<=len;i++
)for
(int j=m;j>=a[i]
.y;j--
) dp[j]
=max
(dp[j-a[i]
.y]+a[i]
.z,dp[j]);
printf
("%lld\n"
,dp[m]
+ans)
;return0;
}
謝謝大家 第五周周總結
時間進度表 日期開始時間 結束時間 中斷時間 淨時活動 備註3月15日 7 10 9 10 120打程式 規範 進行初步構思 3月16日 7 10 9 10 120打程式 實現減法無負數 3月17日 8 00 10 00 120打程式 實現減法無負數 3月18日 4 10 5 50 5 00 5 1...
第五周周記
第五周周記 本週完成了 1.html的網頁設計作業,學習了標籤 用 製作網頁 製作表單站點等。2.學習了資料結構的順序表和鏈式表的動態儲存和應用,以及如何寫 3.學習了ps 選單的部分功能。4.學會了繪製一張網路拓撲圖。希望能夠更加努力,收穫成長。週數專業學習目標 專業學習時間 新增 量 部落格發表...
第五周作業
includeusing namespace std class student 用引數的初始化表對資料成員初始化。void max student arr void display private int num int score void student display void studen...