爆炸的符卡洋洋洒洒题解
题目描述
小红正在研究如何把符卡组合出尽可能大威力的组合魔法。
小红共有 n种符卡可以选择,每种符卡最多只能选择一次,每个符卡的魔力消耗为 ai,威力为 bi。
如果将多个符卡进行组合,则可以发动一个组合魔法。组合魔法的魔力消耗为选择的符卡的魔力消耗的总和,其威力为选择的符卡的威力的总和。
小红必须保证最终符卡的魔力消耗总和为 k 的倍数,否则小红将受到魔力反噬而发动魔法失败。
小红想知道,自己能发动的组合魔法最大的威力是多少?
输入描述:
第一行输入两个正整数 n 和 k ,用空格隔开。
接下来的 n行,每行输入两个正整数 ai和 bi,用空格隔开。
数据范围:
1≤n,k≤1000
1≤ai,bi≤109
输出描述:
如果小红无论如何也组合不了能发动的魔法,则输出-1。 否则输出最大的威力值。
示例1
输入
2 3 1 2 2 1
输出
3
说明
两个符卡都选上,融合出的魔法消耗为3,是3的倍数。威力是3。
示例2
输入
2 2 1 2 2 1
输出
1
说明
选择第二个符卡,消耗为2,是2的倍数。威力是1。
示例3
输入
3 4 1 2 5 3 1 4
输出
-1
说明
显然,无论如何都组合不出消耗为4的倍数的魔法。
思路:
1,01背包变种,消耗->容量,威力->价值
2,难点:dp数组无法像平常一样开启,要求k倍
3,关心数据范围,数据范围是提示
4,详细见代码.
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[1100],b[1100];
ll dp[1100][1100];
int n,k;
int main(){scanf("%d%d",&n,&k);for(int i=1;i<=n;++i)scanf("%d%d",a+i,b+i);for(int i=0;i<=n;++i){for(int j=0;j<k;j++){dp[i][j]=-1e16;}}//防止dp受到后面的影响dp[0][0]=0;for(int i=1;i<=n;++i){for(int j=0;j<k;++j){ //正逆向都可dp[i][j]=max(dp[i-1][j],dp[i-1][(j-a[i]%k+k)%k]+b[i]);//解决k倍问题}}if(dp[n][0]<=0)cout<<-1<<'\n';else printf("%lld",dp[n][0]);return 0;
}
爆炸的符卡洋洋洒洒题解相关推荐
- 爆炸的符卡洋洋洒洒题解报告
爆炸的符卡洋洋洒洒题解报告 标签:动态规划 题目链接 来源:牛客网 解题思路: 显而易见的背包问题 但再观察a,b的数据范围,开不了那么大的dp数组 这就启发我们去优化,由于题目要求魔力总耗的是k的倍 ...
- 爆炸的符卡洋洋洒洒(dp)
题目链接:I-爆炸的符卡洋洋洒洒_2022牛客寒假算法基础集训营4 (nowcoder.com) 题目:小红正在研究如何把符卡组合出尽可能大威力的组合魔法.小红共有 n 种符卡可以选择,每种符卡最多只 ...
- I 爆炸的符卡洋洋洒洒(牛客)01背包
输入 2 2 1 2 2 1 输出 1 说明 选择第二个符卡,消耗为2,是2的倍数.威力是1. 输入 2 2 1 2 2 1 输出 1 说明 选择第二个符卡,消耗为2,是2的倍数.威力是1. 输入 3 ...
- I—爆炸的符卡洋洋洒洒(不模不行的DP)
题目如下: 链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 小红正在研究如何把符卡组合出尽可能大威力的组合魔法. 小红共有 n 种符卡可以选择,每种符卡最多只能选择一次,每个符卡的魔力消耗 ...
- 爆炸的符卡洋洋洒洒(01背包)
题目链接 https://ac.nowcoder.com/acm/contest/23479/I 题面 思路 我们从这n种符卡中选择一些卡牌,然后每张卡牌花费aia_iai的魔力,达到bib_ibi ...
- 爆炸的符卡洋洋洒洒<每日一题>(01背包变种)
题目: 题目链接:登录-专业IT笔试面试备考平台_牛客网 思路: 该题为01背包的变种问题 我们先来复习一下普通的01背包 dp[i][j]数组的含义: i代表了取前i个物品 j代表了背包的空间 数组 ...
- 牛客寒假算法基础集训营4-I.爆炸的符卡洋洋洒洒
标签:动态规划 思路 本题比较容易看出来是01背包的变形 注意到a的数据范围很大,dp数组是肯定存不下的,但是k的范围很小,而本题中要求魔力消耗总和是k的倍数,这就意味着如果a[i]%k==t,那么a ...
- 爆炸的符卡洋洋洒洒(01背包变形)
题目 原题链接 问题描述 化为背包问题来理解,就是说有nnn个物品,每个物品的体积为aia_iai,价值为bib_ibi,此时的背包的容积没有限制,但要求放入背包的物品的总体积要为kkk的倍数时价 ...
- 爆炸的符卡洋洋洒洒 (01背包
二维dp 添加链接描述 #include<bits/stdc++.h> using namespace std; const int N=1e3+9; #define int long l ...
最新文章
- 物理机存放mysql实例原则_MySQL数据库规范 (设计规范+开发规范+操作规范)
- hard_negative_mining
- 1.2.2 Logistic回归和梯度下降计算的数学流程
- linux在路径下创建文件,从可以在Linux中打开的文件路径创建文件
- QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)
- 遥感影像辐射校正,地形校正等
- 如何完整离线保存网页,包括网页完整特效?
- idea 安装 jclasslib
- Android 删除文件app,手机删除文件怎么恢复?手机恢复删除App
- 别只看钱:赛门铁克46.5亿美元现金收购Blue Coat为哪般?
- python tkinter小动画
- 【数据库实验】镶嵌查询
- GEE学习:查询遥感影像空间分辨率
- windows系统redis部署配置(IP/端口/服务)配置
- 联想电脑如何修复计算机系统,预装Windows 10的一键恢复过程
- 联发科AI解决方案芯片i700规格参数介绍
- Pragmatic eBook 介绍 :Test-Driving JavaScript Applications
- RocketMQ 集群平滑运维
- 3DMAX 10 角色动作
- 解决ul的li横向排列换行的问题
热门文章
- X87 FPU 指令集
- Oracle --- 同义词
- [译]使用MVI打造响应式APP(八):导航
- csv文件太大,显示不全,切分成小文件
- 【单目摄像头测量距离:相似三角形法】
- [T-ARA][남주긴 아까워][给别人可惜了]
- 查找:update $push failed with “Resulting document after update is larger than 16777216”问题引起的原因
- 向UBOOT 中添加自己的板子
- 20190121——不羡神仙 Java抽象工厂模式
- 解决禅道升级报错:Column not found: 1054 Unknown column 'readme' in 'zt_im_client'