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 严酷的训练 题解的更多相关文章

  1. P2430 严酷的训练 题解

    题目背景 Lj的朋友WKY是一名神奇的少年,在同龄人之中有着极高的地位... 题目描述 他的老师老王对他的程序水平赞叹不已,于是下决心培养这名小子. 老王的训练方式很奇怪,他会一口气让WKY做很多道题 ...

  2. 洛谷 P2430 严酷的训练

    P2430 严酷的训练 题目背景 Lj的朋友WKY是一名神奇的少年,在同龄人之中有着极高的地位... 题目描述 他的老师老王对他的程序水平赞叹不已,于是下决心培养这名小子. 老王的训练方式很奇怪,他会 ...

  3. 【洛谷 P2430 严酷的训练】

    题目背景 Lj的朋友WKY是一名神奇的少年,在同龄人之中有着极高的地位... 题目描述 他的老师老王对他的程序水平赞叹不已,于是下决心培养这名小子. 老王的训练方式很奇怪,他会一口气让WKY做很多道题 ...

  4. P2430严酷的训练

    传送 这个题的题干很长,长到令人恶心 这个题的p乍一看好像没有卵用,但其实他很有用(废话).这里的“费用”不再是tw[i](wky做第i道题的时间),而是tw[p[i]](wky做第i道题所对应的知识 ...

  5. 洛谷P2430 严酷的训练

    第一眼看这道题...啊哈,啥??? 仔细看一看,发现:诶, 这不是01背包吗? 两人水平值的比值*老王做题用时 可以算出WKY做每道题的用时. 那么每道题的p就可以转换成费用c[i], 价值q就是w[ ...

  6. 【洛谷p2430】严酷的训练

    (这个题有一个很神奇的地方) 严酷的训练[传送门] 算法标签(显然01背包了最近一直在练) (他居然没写……) 这个题啊,试了好几遍没a 最后发现在第二层循环的时候应该是j>=rqyt[p[i] ...

  7. AC日记——严酷的训练 洛谷 P2430

    严酷的训练 思路: 背包: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 5005 int n,m,bi[m ...

  8. luogu P1126 机器人搬重物 题解

    luogu P1126 机器人搬重物 题解 题目描述 机器人移动学会(\(RMI\))现在正尝试用机器人搬运物品.机器人的形状是一个直径\(1.6\)米的球.在试验阶段,机器人被用于在一个储藏室中搬运 ...

  9. 【luogu P2491 [SDOI2011]消防】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2491 题外话: OI一共只有三种题--会的题,不会的题,二分题. 题解: step 1 求树的直径,把树的直 ...

随机推荐

  1. layui.dropdown.js

    前 在 layui 框架下做了一个小组件,是下拉框功能,当然也可以很好的变成其他组件,前提你会修改. 还需要更多的完善.后期(我也不清楚会是啥时候会优化)

  2. OPTIONS预检请求

    OPTIONS预检请求 背景:像后台发送一个post请求,出错,错误代码403(权限验证未通过),查看请求方法变成OPTIONS.检查请求头得知,当前请求token未带上,问题,为什么post请求变成 ...

  3. 明解C语言 入门篇 第六章答案

    练习6-1 /* 求两个整数中的最小值 */ #include <stdio.h> /*--- 返回三个整数中的最小值 ---*/ int min2(int a, int b) { int ...

  4. 微服务浅谈&服务治理的演变过程

    这两天对互联网的架构演变进行了简单了解,并对微服务的出现很感兴趣,所以对相关知识进行了简单的整理与总结. 本篇文章先简单介绍了互联网架构的演变,进而介绍了服务化,最后介绍了微服务及最新的服务网格(Se ...

  5. javascript参数化拼接字符串两种方法

    javascript如果直接使用字符串+的话,会被大量单引号搞晕,可以有两种比较简单的方法使用参数化拼接. 方式一,传统js //示例:StringFormat("abc{0}def&quo ...

  6. 关于source insight 置顶窗口或者处于前台挡住窗口解决办法

    两个办法,分别如下: 1.重启source insight: 2.按两次F11:

  7. Linux常用命令:fdisk mkfs mount umount fstab实现自动挂载

    写在前 记录点常用命令,fdisk mkfs mount和umount,以及fstab实现自动挂载 fdisk fdisk主要用于操作硬盘的分区表.分区,下面简单记一点最常用的部分 查看当前系统识别到 ...

  8. 如何防止短信API接口遍历

    短信API接口在web中得到越来越多的应用,如用户注册,登录,密码重置等业务模块都会使用手机验证码进行身份验证.一般情况下,我们会采用这样的安全策略,将短信发送频率限制在正常的业务流控范围内,比如,一 ...

  9. python 练习题:使用迭代查找一个list中最小和最大值,并返回一个tuple

    # -*- coding: utf-8 -*- # 请使用迭代查找一个list中最小和最大值,并返回一个tuple from collections import Iterable def findM ...

  10. 我得新博客上线了采用Vue+Layui的结合开发,后台采用asp.net mvc

    地址:www.zswblog.xyz 写完这个博客项目我真的很开心! 希望博客园的大佬们能去看看,如果可以希望帮我在Layui的年度案例点一个赞,谢谢! 地址:https://fly.layui.co ...