洛谷OJ P1802 5倍经验日 动态规划
题目背景
现在乐斗有活动了!每打一个人可以获得 5 倍经验!absi2011 却无奈的看着那一些比他等级高的好友,想着能否把他们干掉。干掉能拿不少经验的。
题目描述
现在 absi2011 拿出了 x 个迷你装药物(嗑药打人可耻…),准备开始与那些人打了。
由于迷你装药物每个只能用一次,所以 absi2011 要谨慎的使用这些药。悲剧的是,用药量没达到最少打败该人所需的属性药药量,则打这个人必输。例如他用 2 个药去打别人,别人却表明 3 个药才能打过,那么相当于你输了并且这两个属性药浪费了。
现在有 n 个好友,给定失败时可获得的经验、胜利时可获得的经验,打败他至少需要的药量。
要求求出最大经验 s,输出 5s。
输入格式
第一行两个数,n 和 x。
后面 n 行每行三个数,分别表示失败时获得的经验 losei,胜利时获得的经验wini,和打过要至少使用的药数量 usei 。
输出格式
一个整数,最多获得的经验的五倍。
输入输出样例
输入 #1复制
6 8
21 52 1
21 70 5
21 48 2
14 38 3
14 36 1
14 36 2
输出 #1复制
1060
说明/提示
【Hint】
五倍经验活动的时候,absi2011 总是吃体力药水而不是这种属性药。
【数据范围】
对于 10% 的数据,保证 x=0。
对于 30% 的数据,保证 0≤n≤10,0≤x≤20。
对于 60% 的数据,保证 0≤n,x≤100, 10<losei,wini≤100,0≤usei≤103.
【题目来源】
fight.pet.qq.com
absi2011 授权题目
和01背包一样的思路,只是多了个lose的值,不选这一项也加上lose值。
头文件,定义变量和数组
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, x;
ll lose[1200], win[1200],use[11000];
ll dp[1200][12000];
输入:
cin >> n >> x;
for(int i=1;i<=n;i++)cin >> lose[i] >> win[i] >> use[i];
循环dp数组:
for(int i=1;i<=n;i++)
{for(int j=x;j>=0;j--){if(j>=use[i])dp[i][j] = max(dp[i-1][j]+lose[i],dp[i-1][j-use[i]]+win[i]);elsedp[i][j] = dp[i-1][j]+lose[i];}
}
最后输出即可,注意5倍:
cout << dp[n][x]*5;
完整代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, x;
ll lose[1200], win[1200],use[11000];
ll dp[1200][12000];
int main()
{cin >> n >> x;for(int i=1;i<=n;i++)cin >> lose[i] >> win[i] >> use[i];for(int i=1;i<=n;i++){for(int j=x;j>=0;j--){if(j>=use[i])dp[i][j] = max(dp[i-1][j]+lose[i],dp[i-1][j-use[i]]+win[i]);elsedp[i][j] = dp[i-1][j]+lose[i];}}cout << dp[n][x]*5;return 0;
}
洛谷OJ P1802 5倍经验日 动态规划相关推荐
- P1802 5 倍经验日(python3实现)
5 倍经验日 - 洛谷 """P1802 5 倍经验日(python3实现) https://www.luogu.com.cn/problem/P1802"&q ...
- P1802 5 倍经验日
5倍经验日 每次可以选择损失0药水获得lose经验(贪心),或者砸药水获得成功经验 #include<bits/stdc++.h>using namespace std;int n,x; ...
- 【每日DP】day1 P1802 5倍经验日(别样的01背包)难度⭐★
题目链接 输入 6 8 21 52 1 21 70 5 21 48 2 14 38 3 14 36 1 14 36 2 输出 1060 一道有点意思的01背包,可以帮助理解.好久没写DP了,每天一道D ...
- #洛谷oj:P1525 [NOIP2010 提高组] 关押罪犯
洛谷oj:P1525 [NOIP2010 提高组] 关押罪犯 #题目描述 #一看很明显是贪心算法 加排序 因为 这个中间最大值的那一对肯定是不会在一起的 从大到小来看 所有点对都尽量不要在一个监狱 # ...
- 洛谷oj题单【入门2】分支结构-入门难度(Java)
洛谷oj题单[入门2]分支结构-入门难度(Java) 来源:https://www.luogu.com.cn/training/101#problems P5709 [深基2.习6]Apples Pr ...
- 洛谷OJ 入门与面试 B2001-B2148 题解
洛谷OJ 入门与面试 B2001-B2148 链接:https://pan.baidu.com/s/1cMRv6SBjL_sehYj7oM8gkw 提取码:tel3 B2001 入门测试题目 #inc ...
- 洛谷P2904 [USACO08MAR]跨河River Crossing 动态规划
洛谷P2904 [USACO08MAR]跨河River Crossing 动态规划 区间DP f[ i ] 表示 将 i 头牛 运了过去,然后John 又返回所需要的最少时间 1 #include & ...
- 洛谷OJ上的A+B花(zhuang)式(bi)解法
转眼间快到了8月,一想自己都毕业好久了,很怀念曾经在各大OJ上刷题的时光,今天无意在一个算法群里看到最近有个叫洛谷的oj网站貌似蛮火的,于是注册了一个下进去看一看,顺手打开了A+B problem,然 ...
- 【洛谷OJ C++】洛谷题单100 入门1顺序结构 题解及学习笔记
洛谷平台题单100链接:https://www.luogu.com.cn/training/100#problems 目录 学习笔记: P1001 A+B Problem P1000 超级玛丽游戏 P ...
- 洛谷大起义胜利的经验总结
UPD1(2019.7.11):chen_zhe解除了对我的禁言,但仍保持大脑皮层对刷题重心转到LibreOJ的决策,50年不变. 2019-07-09 9:54 结束黑暗无光的\(luogu\)统治 ...
最新文章
- careercup-链表 2.2
- 分享:SringBuffer与String的区别
- 云计算设计模式(十六)——优先级队列模式
- TestFlight
- quantaxis中使用docker安装,出现的问题
- 计算机开始菜单运行程序在哪里,请问谁知道电脑开始菜单里运行的指令大全?...
- 没用过这几招,别说你会使用Jupyter Notebook
- C程序设计--查找(二分法查找/折半查找)
- Xilinx_Vivado_2019.1下载和安装教程
- python分割文本_python分割文本
- arduino win8 驱动安装
- jquery 实现抽奖小程序
- canvas 擦除动画_HTML5 实现橡皮擦的擦除效果
- fis3 前端项目构建,一步步来
- 【云原生】在 React Native 中使用 AWS Textract 实现文本提取
- macos 切换用户_如何在macOS上使用TouchID即时切换用户
- MFC combo, radio控件使用
- 递归与递归方程T(N)=aT(N/b)+O(N^d)
- Python异常处理:ImportError: cannot import name 'XXX' from 'XXXX'
- 数通运营商方向常见面试问题(第五部分)
热门文章
- 全网最详细的VMware虚拟机下载安装教程
- 针式PKM V5.78
- 一些自用的编程工具推荐
- linux快速迁移超大文件,Linux下快速迁移海量文件的操作记录
- 剖析Linux内核源码分析《入门技术栈》
- 微信公众号分销商城(源码+数据库+文档)
- graphviz安装
- python pywinauto 自动控制微信, 关键字回复、收款、定时任务, 代替人工成为微信客服
- 安装软件提示计算机管理员权限,安装需要管理员权限怎么办 设置安装软件需要管理员权限的方法教程...
- java虚拟机有什么作用_java虚拟机有什么用