ssl2295-暗黑破坏神【dp练习】

题目:

无聊中的小x玩起了Diablo I...

游戏的主人公有n个魔法
每个魔法分为若干个等级,第i个魔法有p[i]个等级(不包括0)
每个魔法的每个等级都有一个效果值,一个j级的i种魔法的效果值为w[i][j]
魔法升一级需要一本相应的魔法书
购买魔法书需要金币,第i个魔法的魔法书价格为c[i]
而小x只有m个金币(好孩子不用修改器)
你的任务就是帮助小x决定如何购买魔法书才能使所有魔法的效果值之和最大

开始时所有魔法为0级 效果值为0。


Input

第一行 用空格隔开的两个整数n(0
以下n行 描述n个魔法

第i+1行描述 第i个魔法 格式如下(0
c[i] p[i] w[i][1] w[i][2] ... w[i][p[i]]

Output

第一行输出一个整数,即最大效果


Sample Input
3 10
1 3 1 2 2
2 3 2 4 6
3 3 2 1 10

Sample Output
11
1
0
3



解题思路

这道题刚开始想了忒久,然后终于做错了。后来经dalao一指点终于开窍,原来那么简单。第一行可以用正常的分组背包,接着后面的用一个数组记录,

如:b[选到的组数][所用的价格]=选的等级。

然后递归返回就ok了╮(╯﹏╰)╭是的吧。

然后一切尽在die代码中


代码(这次就不用代码片了):

#include<cstdio>
#include<iostream>
using namespace std;
int b[101][501],c[101],a[101][51],f[101][501],p[101],m,n,ss[501],x,y;
bool flag;
void print(int x,int y)//返回
{
if (x==0) return;//到第1个后返回
print(x-1,y-b[x][y]*c[x]);//递归回去
printf("%d\n",b[x][y]);//输出
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
{
scanf("%d%d",&c[i],&p[i]);
for (int j=1;j<=p[i];j++)
{
scanf("%d",&a[i][j]);
}
}
//以上输入依旧不解释
for (int i=1;i<=n;i++)
{
 for (int j=1;j<=m;j++)
 {
   f[i][j]=f[i-1][j];//继承上一个
   for (int k=0;k<=p[i];k++)
   {
     if (c[i]*k>j) break;//如果当前的价值大于j了则可以退出了
     if (f[i][j]<f[i-1][j-c[i]*k]+a[i][k])//如果找到更大的
     {
       
f[i][j]=f[i-1][j-c[i]*k]+a[i][k];//替换
       b[i][j]=k;//记录
     }
   }
 }
}
printf("%d\n",f[n][m]);//输出最大值

for (int j=m;j>=1;j--)
 for (int i=n;i>=1;i--)//注意递归顺序(⊙v⊙)
if (f[i][j]>=f[x][y])//注意是>=不是>
{
x=i;
y=j;
}//寻找最大值,让递归次数少些。

print(x,y);//看上面↑
for (int i=x+1;i<=n;i++) printf("0\n");//输出后面少的那些0
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内存VS硬盘

一个程序和它的数据在被CPU执行前必须移到计算机的内存 中。 原因 内存存取数据的速度比硬盘的存取速度快10倍&#xff0c;在某些环境里&#xff0c;硬盘和内存之间的速度差距可能会更大。而CPU的速度比内存不知还要快多少倍。当我们把程序从硬盘放到内存以后&#xff0c;CPU…

依赖注入之Autofac使用总结

依赖倒置&#xff1f;控制反转&#xff08;IOC&#xff09;? 依赖注入&#xff08;DI&#xff09;&#xff1f; 你是否还在被这些名词所困扰&#xff0c;是否看了大量理论文章后还是一知半解了&#xff1f; 今天我想结合实际项目&#xff0c;和正在迷惑中的新手朋友一起来学…

JavaFX官方教程(十二)之树动画示例

翻译自 树动画示例 本章提供有关树动画示例的详细信息。您将了解场景中的所有元素是如何创建和动画的。 图4-1显示了带树的场景。 图4-1树动画 项目和要素 树动画项目由几个文件组成。每个元素&#xff0c;如树叶&#xff0c;草叶等&#xff0c;都是在不同的类中创建的。在…

《走遍中国》珍藏版(一)

Console.WriteLine("上一本书已经看完&#xff0c;从今天开始看下一本"); System.out.println("《走遍中国》珍藏版"); System.out.println("这本书是关于地理的"); System.out.println("地理往往是和历史进行紧密联系的");北京、天津…

MySQL建表,DML,DDL,约束,外键策略

创建数据库表 CREATE TABLE student( sno int (6), sname VARCHAR(10), sex CHAR(1), age INT(2), enterdate date, classname VARCHAR(10), email VARCHAR(15) ); – 查看表的结构 desc student – 查看表的数据 SELECT * FROM student DML – 查询表的数据 SELECT * FRO…

ssl1197-质数和分解【dp练习】

Description   任何大于 1 的自然数 n&#xff0c;都可以写成若干个大于等于 2 &#xff0c;且小于等于 n 的质数之和表达式(包括只有一个数构成的和表达式的情况)&#xff0c;并且可能有不止一种质数和的形式。例如9 的质数和表达式就有四种本质不同的形式&#xff1a; 9 …

像素密度(衡量屏幕显示能力)

像素密度√[(长度像素数)^2(宽度像素数)^2]/屏幕尺寸 eg:

通过Roslyn构建自己的C#脚本(更新版)

之前写过文章介绍过如何通过Roslyn构建自己的C#脚本&#xff0c;但那篇文章是参考自Roslyn CTP版的&#xff0c;记得本来想等到Roslyn正式版出来重新更新一下文档的&#xff0c;不过记得后来Roslyn是跳票了的&#xff0c;Scripting API在正式版本中都一度被移除了&#xff0c;这…

JavaFX官方教程(十三)之应用效果

翻译自 Applying Effects 创建视觉效果包含以下主题&#xff1a; 混合效果 绽放效果 模糊效果 投影效果 内阴影效果 反射 照明效果 透视效果 创建一系列效果 介绍如何使用视觉效果来增强JavaFX应用程序的外观。 所有效果都位于javafx.scene.effect包中&#xff0c;…

《走遍中国》珍藏版(二)

Console.WriteLine("上一本书已经看完&#xff0c;从今天开始看下一本"); System.out.println("《走遍中国》珍藏版"); System.out.println("这本书是关于地理的"); System.out.println("地理往往是和历史进行紧密联系的");大门两侧傲…

单表查询

最简单的查询语句 select * from dept select * from emp; – 显示部分列 select empno,ename,sal ,comm,deptno from emp – 显示部分行 where select empno,ename,sal ,comm,deptno from emp where sal<2500 – 别名 select empno 编号,ename 姓名,sal 工资 ,comm 补助…

ssl1072-砝码称重【dp练习】

Description 设有1g、2g、3g、5g、10g、20g的砝码各若干枚&#xff08;其总重<1000&#xff09;&#xff0c; 要求&#xff1a; 输入方式&#xff1a;a1 a2 a3 a4 a5 a6 &#xff08;表示1g砝码有a1个&#xff0c;2g砝码有a2个&#xff0c;…&#xff0c;20g砝码有a6个&…

java中遍历树形菜单,你可能不知道还有这样的方法

版权声明&#xff1a;本文为CSDN博主「穆雄雄」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链接及本声明。原文链接&#xff1a;https://blog.csdn.net/qq_34137397/article/details/72654955穆雄雄开发工具&#xff1a;MyEclipse 10.5后台…

Docker-Compose 一键部署Ningx+.Net Core+Redis集群

在看该文章前&#xff0c;你需要对Docker有所了解。 1、创建WebApp应用程序 我使用的是.Net Core 1.0.1版本&#xff0c;创建一个MVC应用程序&#xff0c;并添加对Redis的引用。因为这些很基础&#xff0c;也很简单&#xff0c;这里就不详细说明了&#xff0c;特别提一下有关多…

JavaFX官方教程(十四)之转换,动画和视觉效果教程的源代码

翻译自 转换&#xff0c;动画和视觉效果教程的源代码 下表列出了本文档中的演示应用程序及其关联的源代码文件。 教程源代码NetBeans项目文件 转换概述 Xylophone.java transformations.zip 动画基础知识 animations.zip 树动画示例 tree_animation.zip 创建视觉效…

ssl2294-打包【dp练习】

Description 你现在拿到了许多的礼物&#xff0c;你要把这些礼物放进袋子里。你只有一个最多装下V 体积物品的袋子&#xff0c;你不能全部放进去。你也拿不动那么重的东西。你估计你能拿的最大重量为 G。现在你了解了每一个物品的完美值、重量和体积&#xff0c;你当然想让袋子…

《走遍中国》珍藏版(三)

Console.WriteLine("上一本书已经看完&#xff0c;从今天开始看下一本"); System.out.println("《走遍中国》珍藏版"); System.out.println("这本书是关于地理的"); System.out.println("地理往往是和历史进行紧密联系的");长廊的油漆…

Catalog Service - 解析微软微服务架构eShopOnContainers(三)

上一篇我们说了Identity Service&#xff0c;因为其基于IdentityServer4开发的&#xff0c;所以知识点不是很多&#xff0c;今天我们来看下Catalog Service&#xff0c;今后的讲解都会把不同的、重点的拿出来讲&#xff0c;希望大家明白。 源码分析 我们先看下它的目录结构&a…

JavaFX官方教程(十五)之A Xylophone.java

翻译自 Xylophone.java 一个 Xylophone.java 有关说明&#xff0c;请参阅转换类型和示例。 法律条款和版权声明 / **版权所有&#xff08;c&#xff09;2010,2014&#xff0c;Oracle和/或其附属公司。* 版权所有。使用须遵守许可条款。**此文件可通过以下许可证获得并获得许…

索引,事务,视图

索引 此时是要获取所有的数据&#xff0c;是否有索引作用不大 select * from emp – 因为数据库以及自动的给主键列empno创建了索引&#xff0c;查询条件中出现empno&#xff0c;自动使用索引进行查询 – 是否使用索引&#xff0c;语句没有区别 select * from emp where empno…