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

时间:2022-11-03 18:20:35

总的来说就是价值为1,时间因物品而变,同时注意要刚好取到的01背包

(1)时间方面。按照题意,每首歌的时间最多为t + w - 1,这里要注意。

同时记得最后要加入时间为678的一首歌曲

(2)这里因为要输出时间,也就是重量,那么这个时候初始化就要注意了。

因为如果只是输出价值的话就全部初始化为0,但是要输出重量,那就意味着

当前这个时间是恰好由几首歌组合,那么初始化的时候就要注意全部初始化为

-1,f[0] = 0,同时判断条件要f[j-w] != -1,这里要注意

(3)这里时间很坑!我一开始看到10的9次方肯定超时,后来紫书上写到最多

也就180n+678,10的9次方是吓唬你的,实际上t最大只在一万左右,是完全

可以的。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std; const int MAXN = 11234;
int f[MAXN], w, t, n, m; int main()
{
int T, kase = 0;
scanf("%d", &T); while(T--)
{
scanf("%d%d", &n, &t);
memset(f, -1, sizeof(f)); //初始化注意
f[0] = 0; int ans = -1, time = 0;
REP(i, 0, n + 1)
{
if(i == n) w = 678; //要多一件物品
else scanf("%d", &w);
for(int j = t + w - 1; j >= w; j--) //时间随物品而定
{
if(f[j-w] != -1) //不要漏了
f[j] = max(f[j], f[j-w] + 1);
ans = max(f[j], ans);
}
} for(time = MAXN - 1; f[time] != ans; time--); //最长时间
printf("Case %d: %d %d\n", ++kase, ans, time);
} return 0;
}

紫书 例题 9-5 UVa 12563 ( 01背包变形)的更多相关文章

  1. UVa 12563 &lpar;01背包&rpar; Jin Ge Jin Qu hao

    如此水的01背包,居然让我WA了七次. 开始理解错题意了,弄反了主次关系.总曲目最多是大前提,其次才是歌曲总时间最长. 题意: 在KTV房间里还剩t秒的时间,可以从n首喜爱的歌里面选出若干首(每首歌只 ...

  2. Jin Ge Jin Qu hao UVA - 12563 01背包

    题目:题目链接 思路:由于t最大值其实只有180 * 50 + 678,可以直接当成01背包来做,需要考虑的量有两个,时间和歌曲数,其中歌曲优先级大于时间,于是我们将歌曲数作为背包收益,用时间作为背包 ...

  3. UVa 1213 &lpar;01背包变形&rpar; Sum of Different Primes

    题意: 选择K个质数使它们的和为N,求总的方案数. 分析: 虽然知道推出来了转移方程, 但还是没把代码敲出来,可能基本功还是不够吧. d(i, j)表示i个素数的和为j的方案数,则 d(i, j) = ...

  4. 紫书 例题 11-13 UVa 10735(混合图的欧拉回路)(最大流)

    这道题写了两个多小时-- 首先讲一下怎么建模 我们的目的是让所有点的出度等于入度 那么我们可以把点分为两部分, 一部分出度大于入度, 一部分入度大于出度 那么显然, 按照书里的思路,将边方向后,就相当 ...

  5. FZU 2214 Knapsack problem 01背包变形

    题目链接:Knapsack problem 大意:给出T组测试数据,每组给出n个物品和最大容量w.然后依次给出n个物品的价值和体积. 问,最多能盛的物品价值和是多少? 思路:01背包变形,因为w太大, ...

  6. codeforce Gym 101102A Coins (01背包变形)

    01背包变形,注意dp过程的时候就需要取膜,否则会出错. 代码如下: #include<iostream> #include<cstdio> #include<cstri ...

  7. HDU 2639 Bone Collector II&lpar;01背包变形【第K大最优解】&rpar;

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  8. 【01背包变形】Robberies HDU 2955

    http://acm.hdu.edu.cn/showproblem.php?pid=2955 [题意] 有一个强盗要去几个银行偷盗,他既想多抢点钱,又想尽量不被抓到.已知各个银行 的金钱数和被抓的概率 ...

  9. CF&num;214 C&period; Dima and Salad 01背包变形

    C. Dima and Salad 题意 有n种水果,第i个水果有一个美味度ai和能量值bi,现在要选择部分水果做沙拉,假如此时选择了m个水果,要保证\(\frac{\sum_{i=1}^ma_i}{ ...

随机推荐

  1. C&num; 托管和非托管混合编程

    在非托管模块中实现你比较重要的算法,然后通过 CLR 的平台互操作,来使托管代码调用它,这样程序仍然能够正常工作,但对非托管的本地代码进行反编译,就很困难.   最直接的实现托管与非托管编程的方法就是 ...

  2. 机器学习Python包

    随着机器学习的逐日升温,各种相关开源包也是层出不群,面对如此多种类的工具包,该如何选择,有的甚至还知之甚少或者不知呢,本文简单汇总了一下当下使用比较多的Python版本机器学习工具包,供大家参看,还很 ...

  3. 自动化测试工具Selenium和QTP的比较

    一.用户仿真:Selenium在浏览器后台执行,它通过修改HTML的DOM(文档对象模型)来执行操作,实际上是通过javascript来控制的.执行时窗口可以最小化,可以在同一机器执行多个测试.QTP ...

  4. IE6&sol;IE7下绝对定位position&colon;absolute和margin的冲突问题解决

    首先我们来看一个代码: 复制代码代码如下:<div id=”layer1″ style=”margin:20px; border:1px solid #F88; width:400px; “&g ...

  5. DIV&plus;CSS高手必知的15个CSS常识

    1.不要使用过小的图片做背景平铺.这就是为何很多人都不用 1px 的原因,这才知晓.宽高 1px 的图片平铺出一个宽高 200px 的区域,需要 200*200=40, 000 次,占用资源. 2.无 ...

  6. Eyeshot Ultimate 学习笔记&lpar;1&rpar;

    在Winform项目中用到3D技术,这是在做项目一段时间以来第一次,还是指定的3D控件Eyeshot Ultimate,这个控件名称用度娘搜索,竟然毫无结果,不知道是没有人用过还是觉得该控件过于简单, ...

  7. 『软件介绍』SQLServer2008 基本操作

    0x 01 连接数据库 Win7下,先打开SQLServer管理工具(开始菜单/所有程序/Microsoft SQL Server 2008/SQL Server Management Studio) ...

  8. &lbrack;asp&period;net mvc 奇淫巧技&rsqb; 02 - 巧用Razor引擎在Action内生成Html代码

    在web开发中经常会遇到在内部代码中获取Html,这些Html是需要和数据进行一起渲染.并不是直接把Html代码返回给客户端.这样的做法有很多应用场景,例如分页.Ajax一次性获取几段Html片段.生 ...

  9. mysql中使用enum&comma;如何获取所有可能的值

    SELECT column_type FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = "数据库名" AND DATA_T ...

  10. Perl匿名数组、hash和autovivification特性

    可有构建匿名的对象,这样就没必要去为只用一两次的数组.hash去取名字,有时候取名是很烦的事. 使用中括号[]构建匿名数组 使用大括号{}构建匿名hash 不包含任何元素的[]和{}分别是匿名空数组. ...