luogu P2430 严酷的训练 题解
By:Soroak
知识点:DP
思路:就是一道简单的DP
一开始我想用二维数组做
做着做着发现,没有那么难啊啊啊
完全可以用一维数组来做
我们先开两个一维数组来存每个题目的时间
一个是老王的时间,另一个是wky的时间,
(其实完全可以用一个一位数组写的。。)
再开一个结构体,来存每一个题目的知识点种类和做出该题目的价值
然后双重循环,第一层从1到m,枚举所有的题目
第二层从tim到num[timu[i].kind],表示从tim时间开始,枚举到当前题目要花费的时间为止
Q:那为什么不直接枚举到1呢??
A:当j<num[timu[i].kind]时,枚举的时间小于该题目用的时间,那么数组的下标会成为负数,而且你怎么可能时间到了还在做题呢?
然后,就可以得到一个很简单的DP方程式: dp[j]=max(dp[j],dp[j-num[timu[i].kind]]+timu[i].value);
/*
知识点:DP 思路:就是一道简单的DP
一开始我想用二维数组做
做着做着发现,没有那么难啊啊啊
完全可以用一维数组来做 我们先开两个数组来存每个题目的时间
一个是老王的时间,另一个是wky的时间,
(其实完全可以用一个一位数组写的。。) 然后双重循环,第一层从1到m,枚举所有的题目
第二层从tim到num[timu[i].kind],表示从tim时间开始,枚举到当前题目要花费的时间为止
Q:那为什么不直接枚举到1呢??
A:当j<num[timu[i].kind]时,枚举的时间小于该题目用的时间,那么数组的下标会成为负数,而且你怎么可能时间到了还在做题呢? 然后,就可以得到一个很简单的DP方程式: dp[j]=max(dp[j],dp[j-num[timu[i].kind]]+timu[i].value); */
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define int long long int using namespace std; int wky,laowang;
int m,n; int a[];//老王在做第i种题目时所花费的时间
int dp[];
int num[];//wky在做第i种知识点的题目时要花费的时间 struct node
{
int value;
int kind;
}timu[]; int tim; inline int cmp(node a,node b)
{
return a.value>b.value;
} inline void init()
{
cin>>wky>>laowang;
cin>>m>>n; for(int i=;i<=n;i++)
{
cin>>a[i];
num[i]=a[i]*(laowang/wky);
} for(int i=;i<=m;i++)
{
cin>>timu[i].kind;
cin>>timu[i].value;
} cin>>tim;
} inline void calc()
{
for(int i=;i<=m;i++)
{
for(int j=tim;j>=num[timu[i].kind];j--)
{
dp[j]=max(dp[j],dp[j-num[timu[i].kind]]+timu[i].value);
}
}
} signed main()
{
init();
sort(timu+,timu+m+,cmp);//有没有一个样
calc();
cout<<dp[tim]<<endl;
return ;
}
luogu P2430 严酷的训练 题解的更多相关文章
- P2430 严酷的训练 题解
题目背景 Lj的朋友WKY是一名神奇的少年,在同龄人之中有着极高的地位... 题目描述 他的老师老王对他的程序水平赞叹不已,于是下决心培养这名小子. 老王的训练方式很奇怪,他会一口气让WKY做很多道题 ...
- 洛谷 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 ...
- luogu P1126 机器人搬重物 题解
luogu P1126 机器人搬重物 题解 题目描述 机器人移动学会(\(RMI\))现在正尝试用机器人搬运物品.机器人的形状是一个直径\(1.6\)米的球.在试验阶段,机器人被用于在一个储藏室中搬运 ...
- 【luogu P2491 [SDOI2011]消防】 题解
题目链接:https://www.luogu.org/problemnew/show/P2491 题外话: OI一共只有三种题--会的题,不会的题,二分题. 题解: step 1 求树的直径,把树的直 ...
随机推荐
- java中的泛型【T】与通配符【?】概念入门
使用泛型的目的是利用Java编译机制,在编译过程中帮我们检测代码中不规范的有可能导致程序错误的代码.例如,我们都知道List容器可以持有任何类型的数据,所以我们可以把String和Integer等类型 ...
- Java 8——Base64工具
在java 8之前如果需要使用base64编解码,必须使用三方库,如:apache的commons-codec. 但是java 8将base64编解码的工具引入进来: public class Tes ...
- [转] Performance — 前端性能监控利器
timing (PerformanceTiming) 从输入url到用户可以使用页面的全过程时间统计,会返回一个PerformanceTiming对象,单位均为毫秒 按触发顺序排列所有属性:(更详细标 ...
- WPF 精修篇 获取系统颜色和字体样式
原文:WPF 精修篇 获取系统颜色和字体样式 看效果 <Grid> <Rectangle Fill="{DynamicResource {x:Static SystemCo ...
- 15、VUEX-Store
1.什么是VUEX Vuex是管理vue的组件状态的工具. 个人理解:vuex是管理组件之间通信的一个插件. 2.为什么要用VUEX 我们知道组件之间是独立的,组件之间想要实现通信,我目前知道的就只有 ...
- 关于 Visual Studio 2017 ,或2019 ,Installer 没检测到已安装的程序.以及C++ 创建项目失败
解决方法: 首先, 把 本机 的Installer.exe 卸载了. 2 , 重新下载 Installer.exe 打开后发现 ,又重新检测到 VS 2019 ,或2017了
- Python - Win10系统下Python3.x环境配置
Win10系统下Python3.x环境配置 https://blog.csdn.net/qq_41952474/article/details/82630551
- saltstack的简单搭建
环境; centos 7 192.168.10.10 master centos 7 192.168.10.129 minion 1.为了方便关闭防火墙 [root@local ...
- Java常用类StringBuffer详解
内容多为最近学习的自我总结,可能有些地方写的不严谨,甚至会有错误的地方,仅供参考,如发现错误敬请指出,谢谢! 灰色字体为补充扩展内容,多为帮助自己理解. StringBuffer概述: 线程安全的可变 ...
- css实现保持div的等宽高比
这篇文章主要为回答这个问题:“做响应式网页,如何让一个div的高和宽保持比例放大或是缩小?”,这里不介绍媒体查询的实现. 那么css如何实现高度height随宽度width变化保持比例不变呢?即给定可 ...