P2430 严酷的训练 题解
题目背景
Lj的朋友WKY是一名神奇的少年,在同龄人之中有着极高的地位。。。
题目描述
他的老师老王对他的程序水平赞叹不已,于是下决心培养这名小子。
老王的训练方式很奇怪,他会一口气让WKY做很多道题,
要求他在规定的时间完成。
而老王为了让自己的威信提高,自己也会把这些题都做一遍。
WKY和老王都有一个水平值,他们水平值的比值和做这些题
所用时间的比值成反比。比如如果WKY的水平值是1,老王的水平值是2
那么WKY做同一道题的时间就是老王的2倍。
每个题目有他所属的知识点,这我们都知道,
比如递归,动归,最短路,网络流……
在这里我们不考虑这些事情,我们只知道他们分别是知识点1,知识点2……
每一个知识点有他对应的难度,比如动态规划经常难于模拟……
而每一个同一知识点下的题目,对于WKY来讲,都是一样难的。
而做出每一道题,老王都有其独特的奖励值。
而奖励值和题目的知识点没有必然联系。
现在WKY同学请你帮忙,计算
在老王规定的时间内,
WKY所能得到最大奖励值是多少 。
输入输出格式
输入格式:
输入文件包括以下内容:
第一行:
WKY的水平值和老王的水平值。
数据保证WKY的水平值小于老王的水平值(哪怕它不现实),
且老王的水平值是WKY的水平值的整数倍。
第二行:
题目的总数m和知识点的总数n。
第三行:
n个整数。第i个整数表示 老王在做第i个知识点的题目所需的时间。
接下来有m行数每一行包括两个整数p,q。
p表示该题目所属的知识点,q表示该题目对应的奖励值。
最后一行是规定的时间。
输出格式:
输出文件只有一行,表示能到得到的最大奖励值。
输入输出样例
1 2 6 4 1 2 3 4 1 5 2 6 3 3 4 8 3 3 4 5 20 01背包入门题吧
核心代码:dp[j]=max(dp[j], dp[j-w[i]]+c[i]);反正注意规范一下自己的代码
ac代码如下:
#include<cstdio>
#define MAXN int(5e3+5)
#define max(a, b) (a)>(b)?(a):(b)
int dp[MAXN];
int w[MAXN], c[MAXN];
int time[MAXN];
int main()
{
int n, m, a, b, x, v;
scanf("%d%d", &a, &b);
scanf("%d%d", &n, &m);
for (int i = ; i <= m; ++i)
{
scanf("%d", &time[i]);
time[i] *= (b / a);
}
for (int i = ; i <= n; ++i)
{
scanf("%d%d", &x, &c[i]);
w[i] = time[x];
}
scanf("%d", &v);
for (int i = ; i <= n; ++i)
for (int j = v; j >=w[i]; --j)
dp[j] = max(dp[j], dp[j - w[i]] + c[i]); printf("%d\n", dp[v]);
}
P2430 严酷的训练 题解的更多相关文章
- luogu P2430 严酷的训练 题解
By:Soroak 知识点:DP 思路:就是一道简单的DP 一开始我想用二维数组做 做着做着发现,没有那么难啊啊啊 完全可以用一维数组来做 我们先开两个一维数组来存每个题目的时间 一个是老王的时间,另 ...
- 洛谷 P2430 严酷的训练
P2430 严酷的训练 题目背景 Lj的朋友WKY是一名神奇的少年,在同龄人之中有着极高的地位... 题目描述 他的老师老王对他的程序水平赞叹不已,于是下决心培养这名小子. 老王的训练方式很奇怪,他会 ...
- 【洛谷 P2430 严酷的训练】
题目背景 Lj的朋友WKY是一名神奇的少年,在同龄人之中有着极高的地位... 题目描述 他的老师老王对他的程序水平赞叹不已,于是下决心培养这名小子. 老王的训练方式很奇怪,他会一口气让WKY做很多道题 ...
- P2430严酷的训练
传送 这个题的题干很长,长到令人恶心 这个题的p乍一看好像没有卵用,但其实他很有用(废话).这里的“费用”不再是tw[i](wky做第i道题的时间),而是tw[p[i]](wky做第i道题所对应的知识 ...
- 洛谷P2430 严酷的训练
第一眼看这道题...啊哈,啥??? 仔细看一看,发现:诶, 这不是01背包吗? 两人水平值的比值*老王做题用时 可以算出WKY做每道题的用时. 那么每道题的p就可以转换成费用c[i], 价值q就是w[ ...
- 【洛谷p2430】严酷的训练
(这个题有一个很神奇的地方) 严酷的训练[传送门] 算法标签(显然01背包了最近一直在练) (他居然没写……) 这个题啊,试了好几遍没a 最后发现在第二层循环的时候应该是j>=rqyt[p[i] ...
- AC日记——严酷的训练 洛谷 P2430
严酷的训练 思路: 背包: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 5005 int n,m,bi[m ...
- 2018天梯赛第一次训练题解和ac代码
随着评讲的进行代码和题解会逐步放上来 2018天梯赛第一次训练 1001 : 进制转换 Time Limit(Common/Java):1000MS/10000MS Memory Limit: ...
- 2018省赛赛第一次训练题解和ac代码
第一次就去拉了点思维很神奇的CF题目 2018省赛赛第一次训练 # Origin Title A CodeForces 607A Chain Reaction B CodeForces ...
随机推荐
- [POJ 2689] Prime Distance
Description 给定两个整数 \(L,R\;(1\leq L\leq R\leq 2^{31},R-L\leq 10^6)\) ,求闭区间 \([L,R]\) 中相邻两个数最大的差是多少,输出 ...
- VirtualBox centos7扩容
有时候扩容还真不如重新建立一个大硬盘的系统,但是如果你安装了好多东西的话,那还是来扩容一下吧. 查看磁盘格式 在virtualBox中右键点击虚拟机->设置->存储,如 ...
- [转]docker-compose教程(安装,使用, 快速入门)
本文转自:https://blog.csdn.net/pushiqiang/article/details/78682323 教程基于ubuntu下最新的compose版本3 参考: https:// ...
- npm包
https://www.cnblogs.com/xinxingyu/p/5736244.html node - glob模块讲解 https://github.com/isaacs/node- ...
- 8.并发容器ConcurrentHashMap#put方法解析
jdk1.7.0_79 HashMap可以说是每个Java程序员用的最多的数据结构之一了,无处不见它的身影.关于HashMap,通常也能说出它不是线程安全的.这篇文章要提到的是在多线程并发环境下的Ha ...
- Java使用foreach语句对数组成员遍历输出
/** * 本程序使用foreach语句对数组成员进行遍历输出 * @author Lei * @version 2018-7-23 */ public class ForeachDemo { pub ...
- Angular6封装LED时钟数字组件
一.运行截图 截图1: 截图2: 二.代码 html代码: <div class="time" > <ng-container #container> &l ...
- [总结]jQuery之选择器集合
jQuery 的选择器可谓之强大无比,常用的元素查找方法: $("#myELement") //选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是my ...
- ionic 项目中ios上遇到的软键盘输入法自动弹出的问题
一. 安装插件 cordova plugin add ionic-plugin-keyboard 二. 软键盘显示监听 window.addEventListener('native.keyboar ...
- Linux 学习笔记之超详细基础linux命令 Part 6
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 5----------------- ...