题目链接:https://www.rqnoj.cn/problem/95

题意:

  叔叔要陪多多看动画片。

  

  有n张DVD可以买,第i张碟的打分为w[i],播放时间为t[i]。

  爷爷规定他们只能在一定的时间段L看完。

  

  多多让叔叔惯的特别任性,只要他看到有几张就一定会看完。

  买碟的地方只买给顾客m(m<n)张碟,不会多也不会少。

  

  在N张碟中只买M张而且在规定时间看完,问你最高的总价值。

题解:

  表示状态:

    dp[i][j][k] = max value

    i:考虑到第i个DVD

    j:已经选了j张碟

    k:当前的总播放时间

  找出答案:

    max dp[n][m][0 to L]

    所有碟都考虑完,正好选了m张。

  如何转移:

    now: dp[i][j][k]

    dp[i+1][j][k] = max dp[i][j][k]          (不选)

    dp[i+1][j+1][k+t[i]] = max dp[i][j][k] + w[i]  (选)

  边界条件:

    dp[0][0][0] = 0

    others = -1

AC Code:

 // state expression:
// dp[i][j][k] = max value
// i: considering ith DVD
// j: j DVDs is selected
// k: cost time
//
// find the answer:
// max dp[n][m][0 to l]
//
// transferring:
// now: dp[i][j][k]
// dp[i+1][j][k] = max dp[i][j][k]
// dp[i+1][j+1][k+t[i]] = max dp[i][j][k] + w[i]
//
// boundary:
// dp[0][0][0] = 0
// others = -1
#include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 105
#define MAX_M 105
#define MAX_L 1005 using namespace std; int n,m,l;
int ans;
int t[MAX_N];
int w[MAX_N];
int dp[MAX_N][MAX_M][MAX_L]; void read()
{
cin>>n>>m>>l;
for(int i=;i<n;i++)
{
cin>>t[i]>>w[i];
}
} void solve()
{
memset(dp,-,sizeof(dp));
dp[][][]=;
for(int i=;i<n;i++)
{
for(int j=;j<=m;j++)
{
for(int k=;k<=l;k++)
{
if(dp[i][j][k]!=-)
{
dp[i+][j][k]=max(dp[i+][j][k],dp[i][j][k]);
if(j+<=m && k+t[i]<=l)
{
dp[i+][j+][k+t[i]]=max(dp[i+][j+][k+t[i]],dp[i][j][k]+w[i]);
}
}
}
}
}
ans=;
for(int i=;i<=l;i++)
{
ans=max(ans,dp[n][m][i]);
}
} void print()
{
cout<<ans<<endl;
} int main()
{
read();
solve();
print();
}

RQNOJ 95 多多看DVD(加强版):01背包的更多相关文章

  1. rqnoj PID95:多多看DVD(加强版)

    题目描述 多多进幼儿园了,今天报名了.只有今晚可以好好放松一下了(以后上了学后会很忙).她的叔叔决定给他买一些动画片DVD晚上看.可是爷爷规定他们只能在一定的时间段L看完.(因为叔叔还要搞NOIP不能 ...

  2. RQNOJ 329 刘翔!加油!:01背包

    题目链接:https://www.rqnoj.cn/problem/329 题意: 刘翔有n封信,每封信都有自己的欣赏价值value[i].消耗时间time[i].消耗体力h[i].和得到的鼓舞w[i ...

  3. RQNOJ 202 奥运火炬登珠峰:01背包

    题目链接:https://www.rqnoj.cn/problem/202 题意: 登珠峰需要携带a(L)O2和t(L)N2. 有n个气缸可供选择.其中第i个气缸能装下a[i](L)O2和t[i](L ...

  4. 紫书 例题 9-5 UVa 12563 ( 01背包变形)

    总的来说就是价值为1,时间因物品而变,同时注意要刚好取到的01背包 (1)时间方面.按照题意,每首歌的时间最多为t + w - 1,这里要注意. 同时记得最后要加入时间为678的一首歌曲 (2)这里因 ...

  5. HDU2191--多重背包(二进制分解+01背包)

    悼念512汶川大地震遇难同胞--珍惜现在,感恩生活 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  6. HDU 2955 【01背包/小数/概率DP】

    Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  7. UVALive 4870 Roller Coaster --01背包

    题意:过山车有n个区域,一个人有两个值F,D,在每个区域有两种选择: 1.睁眼: F += f[i], D += d[i] 2.闭眼: F = F ,     D -= K 问在D小于等于一定限度的时 ...

  8. POJ1112 Team Them Up![二分图染色 补图 01背包]

    Team Them Up! Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7608   Accepted: 2041   S ...

  9. Codeforces 2016 ACM Amman Collegiate Programming Contest A. Coins(动态规划/01背包变形)

    传送门 Description Hasan and Bahosain want to buy a new video game, they want to share the expenses. Ha ...

随机推荐

  1. C 错误处理

    C 错误处理 C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据.在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个 ...

  2. 【SharePoint】K2 for SharePoint 安装笔记【未完工】

    0.安装环境说明 0.1.软件版本 OS : Window Server 2012 标准版 SharePoint : 2013标准版 K2 : 4.6.9 0.2.环境结构 SharePoint 20 ...

  3. dos下连接mysql,显示表结构

    C:\Windows\system32>mysql -hlocalhoset -uroot -p Enter password: ***** mysql> use ssh Database ...

  4. HDU 3416

    Marriage Match IV Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  5. getOutString 输出弹出字符串

    输入字符串长度,字符串,计数m.从前往后计数,当数到m个元素时,第m个元素出列,同时将该元素赋值给m,然后从下一个数计数循环,直到所有数字都出列,给定的数全部为大于0的数字.输出出队队列. 例如:   ...

  6. 双向数据绑定---AngularJS的基本原理学习

    Angular JS (Angular.JS) 是一组用来开发Web页面的框架.模板以及数据绑定和丰富UI组件.它支持整个开发进程,提供web应用的架构,无需进行手工DOM操作. AngularJS非 ...

  7. InputFormat的认识

    InputFormat 负责处理MR的输入部分. 有三个作用: 一.验证作业的输入是否规范. 二.把输入文件切分成InputSplit. 三.提供RecordReader 的实现类,把InputSpl ...

  8. JQuery如何获取按键的unicode编码?

    $("selector").keyup(function(xxx){ var myEvent = xxx; var code = myEvent.keyCode; alert(co ...

  9. OpenCV 入门示例之三:AVI 视频播放控制

    前言 在前文中给出了一个非常简短的视频播放程序,但它没有实现常规视频播放器中的播放滚动条功能,本文对此视频播放器程序加以改进,实现此功能. 滚动条的实现思路 滚动条的功能实质上就是从一帧跳跃到另外一帧 ...

  10. UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position xxx ordinal not in range(12

    python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: 'ascii' codec can't deco ...