题目链接: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. 提高SharePoint2013服务器性能

    一劳永逸,删除search services application,停止Windows服务:SharePoint Search Host Controller和SharePoint Server S ...

  2. java 开发环境安装

    一.在mac上安装jdk 1. 下载Mac版本的JDK并安装      http://www.oracle.com/technetwork/java/javase/downloads/index.ht ...

  3. AndroidX86模拟器Genymotion的一些使用和另一款Andy模拟器

    命令行启动虚拟机 当我们下载安装好,可以通过命令行运行指定名字模拟器 D:\ProgramFiles\Genymobile\Genymotion\player  --vm-name "Sam ...

  4. 利用xlrd模块实现Python读取Excel文档

    # -*- coding: cp936 -*- #python读取excel import xlrd def main(): xls=xlrd.open_workbook("d:\\11.x ...

  5. 计算两个GPS坐标点的距离

    计算两个GPS坐标点的距离,第一个参数是第一个点的维度,第二个参数是第一个点的经度 http://yuninglovekefan.blog.sohu.com/235655696.html /** * ...

  6. CentOS 6.9上安装Mysql 5.7.18 安装

    CentOS 6.9上安装Mysql 5.7.18 安装 下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-g ...

  7. iptables简易使用教程

    iptables是linux里比较常用的防火墙,也是centos7.0之前的版本默认自带的防火墙. 配置防火墙需特别注意一件事情:如果服务器在异地机房,需要谨慎配置端口,以免造成新配置生效后无法远程登 ...

  8. 1-1:CSS3课程入门之属性选择器

    div[name=jewave] 选取属性名为name且属性值是"jewave"的元素 div[name^=jewave]选取属性名为name且属性值以"jewave&q ...

  9. Linux命令apt-get apt的常见用法

    高级包装工具(英语:Advanced Packaging Tools,缩写为APT) apt-cache search foo //搜索和"foo"匹配的包. apt-cache ...

  10. PowerBuilder -- 条码打印

    # 使用ocx控件 使用微软的MSBCODE9.OCX,但是注册老不成功,需要安装office之后才能注册成功,不知道有没有好的处理方法?? # 使用字体 字体下载:http://download.c ...