刷题日志25.8.19

Table of Contents

    1. 题目描述
    2. 思考
    1. 题目描述
    2. 思考

题目:洛谷P1048 [NOIP 2005 普及组]采药
难度:普及-

题目描述

辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”

如果你是辰辰,你能完成这个任务吗?

输入格式

第一行有 2 个整数 T(1≤T≤1000)和 M(1≤M≤100),用一个空格隔开,T 代表总共能够用来采药的时间,M 代表山洞里的草药的数目。

接下来的 M 行每行包括两个在 1 到 100 之间(包括 1 和 100)的整数,分别表示采摘某株草药的时间和这株草药的价值。

输出格式

输出在规定的时间内可以采到的草药的最大总价值。

思考

R 我们简化一下题目:有n种草药,每种都有其价值和时间,总时间为T,求出最大能取得的价值

T 标准的01背包问题+套壳版

T 仍然是按照01背包的方式去敲,这里的时间即为重量,T为总重量;

T 我们再写一遍dp方程,加深一下印象: $ dpi,j = Max(dpi-1,j,dpi-1,j-wi+vi) $

E 编写完成

M 但是,WA了,样例倒是没问题,不知道为什么,我们准备打印dp数组;

E 我们找到了问题:当 $ j<wi $ 时数组会越界,我们需要特判,

这时的方程为 $ dpi,j = dpi-1,j $ ;

E AC;

T WC,我竟然做了一个NOIP(众所周知,NOIP俗称NOI PLUS)(bushi);

题目:洛谷P1802 5倍经验日
难度:普及-

题目描述

题目背景

现在乐斗有活动了!每打一个人可以获得 5 倍经验!absi2011 却无奈的看着那一些比他等级高的好友,想着能否把他们干掉。干掉能拿不少经验的。

题目描述

现在 absi2011 拿出了 \(x\) 个迷你装药物(嗑药打人可耻…),准备开始与那些人打了。

由于迷你装药物每个只能用一次,所以 absi2011 要谨慎的使用这些药。悲剧的是,用药量没达到最少打败该人所需的属性药药量,则打这个人必输。例如他用 \(2\) 个药去打别人,别人却表明 \(3\) 个药才能打过,那么相当于你输了并且这两个属性药浪费了。

现在有 \(n\) 个好友,给定失败时可获得的经验、胜利时可获得的经验,打败他至少需要的药量。

要求求出最大经验 \(s\),输出 \(5s\)

输入格式

第一行两个数,\(n\)\(x\)

后面 \(n\) 行每行三个数,分别表示失败时获得的经验 \(\mathit{lose}_i\),胜利时获得的经验 \(\mathit{win}_i\) 和打过要至少使用的药数量 \(\mathit{use}_i\)

输出格式

一个整数,最多获得的经验的五倍。

思考

R 我们仍然简化一下题目:有n个物品,每个物品有一个重量 \(w_i\) 和两个价值 \(va_i,vb_i\)
其中, \(va_i < vb_i\) ,我们一共能拿重量为 \(x\) 的物品,我们需要输出最大的总价值,特别的, \(va_i\) 是不需要增加重量就能得到的价值,而想获得 \(vb_i\) 需要使自己增加 \(w_i\) 的重量
T 那么,显然的,这还是01背包问题(因为本质还是每种物品只能取、不取)
T 我们仍然按照dp的套路分析:

  • dp数组定义: \(dp_{i,j}\) 为在容量为v的包中任选物品[0-i]能取得的最大价值
  • 状态划分:拿、不拿
  • 贡献、转移:
    若不拿:价值为 \(dp_{i-1,j}+va_i\)
    若拿:价值为 \(dp_{i-1,j-w_i}+vb_i\)
  • 初始化:
    \(dp_0v\) :这里代表选0号物品的最大价值,显然都为 \(va_0\) ;
    \(dp_i0\) :这里为任选物品在背包空间为0时的价值,显然都为 \(va_i\) ;
  • dp方程: \(dp_{i,j} = Max(dp_{i-1,j}+va_i,dp_{i-1,j-w_i}+vb_i)\) ;

E 我们开始编写;
M 那么,不对,重新写,我们按照AI的方式进行重新设计
E 我们修改定义 \(dp_{i,j}\) 为在容量为j的包中选到i件物品能取得的最大价值
E 我们重构一下;
E 一个点WA了
T 让我们一起说一句名言:十年OI一场空,不开long long见祖宗
T 当然,十年OI一场空,开了long long也见祖宗(如果哪个好人出了O(n2)的算法,n还>=64,那就自求多福吧);

posted @ 2025-08-19 17:38  Ghost-Face  阅读(5)  评论(0)    收藏  举报