设lose[N], win[N], use[N]表示失败时获得的经验,胜利时获得的经验和打过要至少使用的药数量; 设dp[i][j]表示用j个药打前i个怪所能获得的最大经验; 当j >= use[i]时,可以选择打赢或者打输dp[i][j] = max(dp[i-1][j] + lose[i], dp[i-1][j-use[i]] + win[i]),注意打输是dp[i-1][j] + l
P1802 5倍经验日 有x个药物和n个敌人 战胜第i敌人可以获得win[i]的经验值,失败可以获得lose[i]经验值,要想战胜第i个敌人,需要使用c[i]个药物 求可以获得的最大经验值 1. 动态规划 有点类似分组背包,失败需要0个药物,战胜或输给同一个敌人不能同时发生,属于同一组 但该题战胜敌人可能使用0个药物,所以不...
五倍经验活动的时候,absi2011总是吃体力药水而不是这种属性药>.< 【数据范围】 对于10%的数据,保证x=0 对于30%的数据,保证n<=10,x<=20 对于60%的数据,保证n<=100,x<=100, 10<=lose[i], win[i]<=100,use[i]<=5 对于100%的数据,保证n<=1000,x<=1000,0 AC Code: #include<bits/stdc++.h...
现在有n个好友,有输掉拿的经验、赢了拿的经验、要嗑几个药才能打过。求出最大经验(注意,最后要乘以5) 输入格式 第一行两个数,n和x 后面n行每行三个数,分别表示输了拿到的经验(lose[i])、赢了拿到的经验(win[i])、打过要至少使用的药数量(use[i])。 输出格式 一个整数,最多获得的经验 输入输出样...
洛谷——P1802 5倍经验日 https://www.luogu.org/problem/show?pid=1802#sub 题目背景 现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却无奈的看着那一些比他等级高的好友,想着能否把他们干掉。干掉能拿不少经验的。 题目描述 现在absi2011拿出了x个迷你装药物(嗑药打人可耻….),准备开始与那些人打...
洛谷P1802 5倍经验日(dp) 传送门 解题思路 很显然的一道类似01背包的dp,每个人选择打或不打。 状态转移方程为 dp[i][j]=max(dp[i-1][j]+lose[i],dp[i-1][j-num[i]]+win[i]) 但这个题还是比较细节的,要注意一下几点: 数组要用long long,否则最后一个点会炸(因为答案最终要*5)...
P1802 5倍经验日(dp) 给出几个好友、几瓶药水,和每个好友战斗输了得到的经验值、赢了的经验值、赢了需要消耗至少几瓶药水,求最后得到的最大经验值(结果*5,longlong) 输入: 6 8 21 52 1 21 70 5 21 48 2 14 38 3 14 36 1 14 36 2
P1802 5 倍经验日 题解 P1802 5 倍经验日 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include<iostream> #include<cstring> usingnamespacestd; constintMaxn=1100; longlongdp[Maxn],lose[Maxn],win[Maxn],used[Maxn];...
//当f【】数组中的数字范围(也就是背包的容量范围)在w【i】到x时,表示该人有选择(可以选择使用药来赢,也可以选择不用药直接输) //不存在不嗑药就赢,因为w【】数组的含义就是必须嗑几个药才能赢 { f[j] = max(f[j] + v2[i] , f[j - w[i]] + v[i]);//...
Luogu P1802 5倍经验日_KEY 题目传送门 ·背包 这可以说是一道背包的变形。 首先需要考虑到的是如何将ta转换为一个正常的背包。 这些数据有一个让我们都十分不爽的地方就是有两个值。 所以我们就设置一个基准值,将失败的经验值当做基准值,这样就只剩一个win-lose的“背包价值”了。