ssl1377-竞赛真理【dp之分组背包】
其實(shí)這題很簡(jiǎn)單,我也不想多講,但沒(méi)辦法老師要我們發(fā)博客╭(╯^╰)╮
Description
TENSHI在經(jīng)歷了無(wú)數(shù)次學(xué)科競(jìng)賽的失敗以后,得到了一個(gè)真理:做一題就要對(duì)一題!但是要完全正確地做對(duì)一題是要花很多時(shí)間(包括調(diào)試時(shí)間),而競(jìng)賽的時(shí)間有限。所以開(kāi)始做題之前最好先認(rèn)真審題,估計(jì)一下每一題如果要完全正確地做出來(lái)所需要的時(shí)間,然后選擇一些有把握的題目先做。 當(dāng)然,如果做完了預(yù)先選擇的題目之后還有時(shí)間,但是這些時(shí)間又不足以完全解決一道題目,應(yīng)該把其他的題目用貪心之類(lèi)的算法隨便做做,爭(zhēng)取“騙”一點(diǎn)分?jǐn)?shù)。
任 務(wù) :根據(jù)每一題解題時(shí)間的估計(jì)值,確定一種做題方案(即哪些題目認(rèn)真做,哪些題目“騙”分,哪些不做),使能在限定的時(shí)間內(nèi)獲得最高的得分,
Input
第一行有兩個(gè)正整數(shù)N和T,表示題目的總數(shù)以及競(jìng)賽的時(shí)限(單位秒)。以下的N行,每行4個(gè)正整數(shù)W1i 、T1i 、W2i 、T2i ,分別表示第i題:完全正確做出來(lái)的得分,完全正確做出來(lái)所花費(fèi)的時(shí)間(單位秒),“騙”來(lái)的分?jǐn)?shù),“騙”分所花費(fèi)的時(shí)間(單位秒)。
其中,3 ≤ N ≤ 30,2 ≤ T ≤ 1080000,1 ≤ W1i 、W2i ≤ 30000,1 ≤ T1i 、T2i ≤ T。
Output
所能得到的最高分值
Sample Input
樣例1
4 10800
18 3600 3 1800
22 4000 12 3000
28 6000 0 3000
32 8000 24 6000
樣例2
3 7200
50 5400 10 900
50 7200 10 900
50 5400 10 900
Sample Output
樣例1
50
樣例2
70
解題思路
? 分組背包不解釋。
代碼
#include<cstdio> #include<iostream> using namespace std; int w[31][2],c[31][2],f[1080000],m,n,t,p; int main() {scanf("%d%d",&n,&m);for (int i=1;i<=n;i++){scanf("%d%d%d%d",&c[i][0],&w[i][0],&c[i][1],&w[i][1]);}//輸入for (int i=1;i<=n;i++)for (int j=m;j>=0;j--)for (int k=0;k<=1;k++)//分組背包if (j>=w[i][k]){f[j]=max(f[j],f[j-w[i][k]]+c[i][k]);//動(dòng)態(tài)轉(zhuǎn)移方程}printf("%d",f[m]); }總結(jié)
以上是生活随笔為你收集整理的ssl1377-竞赛真理【dp之分组背包】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 钰怎么读音 钰的读音及解释
- 下一篇: ssl2290-潜水员【dp之二维费用】