题目描述

小红正在研究如何把符卡组合出尽可能大威力的组合魔法。

小红共有 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;
}

爆炸的符卡洋洋洒洒题解相关推荐

  1. 爆炸的符卡洋洋洒洒题解报告

    爆炸的符卡洋洋洒洒题解报告 标签:动态规划 题目链接 来源:牛客网 解题思路: 显而易见的背包问题 但再观察a,b的数据范围,开不了那么大的dp数组 这就启发我们去优化,由于题目要求魔力总耗的是k的倍 ...

  2. 爆炸的符卡洋洋洒洒(dp)

    题目链接:I-爆炸的符卡洋洋洒洒_2022牛客寒假算法基础集训营4 (nowcoder.com) 题目:小红正在研究如何把符卡组合出尽可能大威力的组合魔法.小红共有 n 种符卡可以选择,每种符卡最多只 ...

  3. I 爆炸的符卡洋洋洒洒(牛客)01背包

    输入 2 2 1 2 2 1 输出 1 说明 选择第二个符卡,消耗为2,是2的倍数.威力是1. 输入 2 2 1 2 2 1 输出 1 说明 选择第二个符卡,消耗为2,是2的倍数.威力是1. 输入 3 ...

  4. I—爆炸的符卡洋洋洒洒(不模不行的DP)

    题目如下: 链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 小红正在研究如何把符卡组合出尽可能大威力的组合魔法. 小红共有 n 种符卡可以选择,每种符卡最多只能选择一次,每个符卡的魔力消耗 ...

  5. 爆炸的符卡洋洋洒洒(01背包)

    题目链接 https://ac.nowcoder.com/acm/contest/23479/I 题面 思路 我们从这n种符卡中选择一些卡牌,然后每张卡牌花费aia_iai​的魔力,达到bib_ibi ...

  6. 爆炸的符卡洋洋洒洒<每日一题>(01背包变种)

    题目: 题目链接:登录-专业IT笔试面试备考平台_牛客网 思路: 该题为01背包的变种问题 我们先来复习一下普通的01背包 dp[i][j]数组的含义: i代表了取前i个物品 j代表了背包的空间 数组 ...

  7. 牛客寒假算法基础集训营4-I.爆炸的符卡洋洋洒洒

    标签:动态规划 思路 本题比较容易看出来是01背包的变形 注意到a的数据范围很大,dp数组是肯定存不下的,但是k的范围很小,而本题中要求魔力消耗总和是k的倍数,这就意味着如果a[i]%k==t,那么a ...

  8. 爆炸的符卡洋洋洒洒(01背包变形)

    题目 原题链接 问题描述 化为背包问题来理解,就是说有nnn个物品,每个物品的体积为aia_iai​,价值为bib_ibi​,此时的背包的容积没有限制,但要求放入背包的物品的总体积要为kkk的倍数时价 ...

  9. 爆炸的符卡洋洋洒洒 (01背包

    二维dp 添加链接描述 #include<bits/stdc++.h> using namespace std; const int N=1e3+9; #define int long l ...

最新文章

  1. 物理机存放mysql实例原则_MySQL数据库规范 (设计规范+开发规范+操作规范)
  2. hard_negative_mining
  3. 1.2.2 Logistic回归和梯度下降计算的数学流程
  4. linux在路径下创建文件,从可以在Linux中打开的文件路径创建文件
  5. QQ聊天记录分析(换新机QQ数据备份还原/Tim迁移)
  6. 遥感影像辐射校正,地形校正等
  7. 如何完整离线保存网页,包括网页完整特效?
  8. idea 安装 jclasslib
  9. Android 删除文件app,手机删除文件怎么恢复?手机恢复删除App
  10. 别只看钱:赛门铁克46.5亿美元现金收购Blue Coat为哪般?
  11. python tkinter小动画
  12. 【数据库实验】镶嵌查询
  13. GEE学习:查询遥感影像空间分辨率
  14. windows系统redis部署配置(IP/端口/服务)配置
  15. 联想电脑如何修复计算机系统,预装Windows 10的一键恢复过程
  16. 联发科AI解决方案芯片i700规格参数介绍
  17. Pragmatic eBook 介绍 :Test-Driving JavaScript Applications
  18. RocketMQ 集群平滑运维
  19. 3DMAX 10 角色动作
  20. 解决ul的li横向排列换行的问题

热门文章

  1. X87 FPU 指令集
  2. Oracle --- 同义词
  3. [译]使用MVI打造响应式APP(八):导航
  4. csv文件太大,显示不全,切分成小文件
  5. 【单目摄像头测量距离:相似三角形法】
  6. [T-ARA][남주긴 아까워][给别人可惜了]
  7. 查找:update $push failed with “Resulting document after update is larger than 16777216”问题引起的原因
  8. 向UBOOT 中添加自己的板子
  9. 20190121——不羡神仙 Java抽象工厂模式
  10. 解决禅道升级报错:Column not found: 1054 Unknown column 'readme' in 'zt_im_client'