HDOJ 2159【Fate】

Arduino ESP32S3 基础入门教学大纲 ESP32环境、Arduino 阅读详情

题目链接

  • 二维费用的背包问题,第二维费用即为数量。
  • 要仔细想想如何打背包,本题中只能是:dp[i][j] 这一格代表 最多花 i 忍耐度,最多打 j 个怪 的限制下,能够获得的最大经验值。另一种想法花给定的经验值获得最少的忍耐度的想法是行不通的,下文会讲。

AC代码:

​//15MS		1448K


#include <iostream>
#include <cstring>
#include <algorithm> 

using namespace std;

const int maxn = 105;//maxw == maxn

int V,W,n,num;
int w[maxn],v[maxn];
int dp[maxn][maxn] ;


int main(){
    while(cin>>V>>W>>n>>num){
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;i++)
            cin>>v[i]>>w[i];
        for(int i=1;i<=n;i++){
            for(int j=w[i];j<=W;j++){
                for(int k=1;k<=num;k++){
                    dp[j][k] = max(dp[j][k] , dp[j-w[i]][k-1] + v[i]);
                }
            }
        }
        int j;
        for(j=0;j<=W;j++)
            if(dp[j][num] >= V) break;
        cout<<W-j<<endl;
    }
    return 0;
}​
  • 说一下最后找最小花费的问题,请思考是否可以这样寻找:
​int i,j,k;
for(i=1;i<=n;i++){
    for(j=w[i];j<=W;j++){
        for(k=1;k<=num;k++){
            dp[j][k] = max(dp[j][k] , dp[j-w[i]][k-1] + v[i]);
        }
        if(dp[j][num] >= V)
        	break;
    }
    if(dp[j][num] >= V)
    	break;
}
cout<<W-j<<endl;​
  • 这样会WA。为什么?因为这样会导致物品还没有看完,就匆忙退出了循环。而很可能需要用到尚未看到的物品,不WA才是奇怪。会产生这样的主意而且没有快速地认识到错误,足见对背包的主要问题还不够敏感。

WA代码:

  • 第一,如果要用经验做花费找忍耐,那么经验维必须是恰好,这是为了方便最后我们判断是否达到了W的经验值花费。
  • 第二,也是为什么这种做法几乎不可以实现,实际上真正的答案很可能是得到了多于升级所需的经验值,但正常来做只循环到了最大经验值W。那是不是多循环一些格子就可以了呢?也不是,第一,轻松就可以故意造出让你会TLE的数据,你又没办法,只能一点点试,在比赛中罚时直接爆炸。第二,打完背包后找花费值的代码也不算好写,一不留神就会出坑。
#include <iostream>
#include <cstring>
#include <algorithm>
#define INF 0x3f3f3f3f
//WA原因应该是:只能推到恰好花W的经验,考虑不到大于W的情况。
//注意,每个格子要恰好装满。 
using namespace std;

const int maxn = 105;

int W,V,n,num;
int w[maxn],v[maxn];
int dp[maxn][maxn] ;

int main(){
    while(cin>>W>>V>>n>>num){
        memset(dp,INF,sizeof(dp));
        for(int i=0;i<maxn;i++)
            dp[0][i] = 0;
        for(int i=1;i<=n;i++)
            cin>>w[i]>>v[i];
        for(int i=1;i<=n;i++){
            for(int j=w[i];j<=W+100;j++){
                for(int k=1;k<=num;k++){
                    dp[j][k] = min(dp[j][k] , dp[j-w[i]][k-1] + v[i]);
                }
            }
        }
        //W 维度必须要装满
        int ans = INF;
        for(xxxxxxxxxxxxx){
        	xxxxxxxxx
		}//寻找答案
        if(V - ans >= 0)
            cout<<V-ans<<endl;
        else
            cout<<-1<<endl;
    }
    return 0;
}​
博途PLC PID仿真LSim_PT1库算法(一阶系统差分方程推导全过程) 博途PLC的PID仿真可以参看下面这篇博客,这篇文章我们主要论坛仿真库LSim的算法由来。如何利用博途PLC PID_Compact 进行PID仿真(一阶系统)_RXXW_Dor的博客-优快云博客博途PLC PID控制器 PID_Compact FB如何使用可以参看下面这篇文章,这里不再赘述。 阅读详情

相关推荐

如何利用东南大学齿轮箱数据集进行故障诊断?从数据采集到模型训练全流程解析

本文详细解析如何利用东南大学齿轮箱数据集进行故障诊断,涵盖从数据采集到模型训练的全流程。通过信号预处理、特征工程构建及多种机器学习模型对比,帮助开发者高效实现工业设备健康管理。特别适合希望将AI技术应用于工业场景的Python开发者。

m2n3b4v5c6的博客 376

hdu 2159 FATE 解题报告

链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到...

weixin_30384031的博客 707

详解电路设计中的RC电路

​ 一、什么是RC电路 RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用到 的电路。 常见的RC充、放电电路、RC积分电路合RC微分电路接下来详细讲解。 二、RC充、放电电路 RC充、放电电路如下图所示,下面通过充电和放电两个过程来分析此电路。 ​RC充、放电电路图 (1)RC充电电路 RC充电电路图如下图(a)所示 RC充电电路图及充电曲线图 ​由上图分析: 将上图a中开关S置于“1”处,电源E开始通过电阻R对电容C充电,由于刚开始充电时电容两端没有..

IT xiaobai 4万+

HDOJ 2159 FATE (二维完全背包)

http://acm.hdu.edu.cn/showproblem.php?pid=2159 题意:通过啥k种怪,杀掉每种怪(每个)会产生要取得a经验并消耗b忍耐度,现求杀不超过s个怪,能否取得n经验,如果能求出保留的最大忍耐度是多少? 思路:二维完全背包求出最优解的情况,然后看>=n的里面剩下忍耐度最多的是多少。 #include #include using namespace

hnust_sundachuan 1095

SAP 接口测试操作-业务顾问

业务顾问测试接口操作

weixin_43657667的博客 5157

PLSQL Developer新手必看:如何避免安装过程中的常见坑

本文为PL/SQL Developer新手提供了详尽的安装与配置避坑指南。从版本选择、注册码使用、汉化包安装到Oracle客户端连接配置,逐一解析常见问题并提供解决方案,帮助开发者快速搭建稳定的PL/SQL开发环境,顺利开启Oracle数据库编程工作。

g9h0i1的博客 651

HDU 2159-FATE(完全背包)

FATE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11420    Accepted Submission(s): 5407 Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到

Some. 3405

Vue3+uniapp开发必备:5分钟搞定unplugin-auto-import自动导入配置(附常见报错解决)

本文详细介绍了在Vue3+uniapp项目中配置unplugin-auto-import插件实现自动导入的方法。通过该配置,开发者无需手动导入ref、onLoad等常用API,可显著提升编码效率和团队协作规范性。文章提供了从安装、TypeScript集成到高级用法的完整指南,并附带了常见报错的解决方案。

weixin_29008805的博客 961

HDOJ2159-FATE

FATE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6890    Accepted Submission(s): 3168 Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极

伪Acmer! 561

基于RK3588与FPGA的SDI视频处理系统:从MIPI CSI-2输入到DSI输出的全链路解析

本文深入解析了基于RK3588与FPGA的SDI视频处理系统全链路。系统利用FPGA作为高速接口转换与流管理核心,将SDI信号转换为MIPI CSI-2数据流送入RK3588进行智能图像处理与AI分析,处理结果再通过MIPI DSI回传,最终由FPGA控制编码为SDI输出,实现了专业视频接口与强大算力的高效协同。

s1t2u3的博客 667

主流 AI 插件 之一的 Copilot 介绍

Copilot 是微软推出的一款人工智能助手,旨在通过自然语言交互帮助您提升工作效率和创造力,覆盖多平台,提供智能问答、内容生成、代码辅助等功能。其核心定位为“日常 AI 伴侣”,旨在通过自然语言交互提升工作与生活效率。

u014695938的博客 6888

hdu2159FATE【二维完全背包】

Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,xhd就不会玩这游戏。xhd还说了他最多只杀s

MissZhou要努力 1663

PyTorch深度学习实战(29)——变分自编码器(Variational Autoencoder, VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。

盼小辉丶的博客 1万+

HDOJ(HDU).2159 FATE (DP 带个数限制的完全背包)

HDOJ(HDU).2159 FATE (DP 带个数限制的完全背包)题意分析与普通的完全背包大同小异,区别就在于多了一个个数限制,那么在普通的完全背包的基础上,增加一维,表示个数。同时for循环多写一层即可。#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define nmax 105 u

Pengwill's Blog 614

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

HDOJ-2159 FATE

有两个限制条件的背包,第一次独立把简单背包问题做出来,纪念下 FATE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6126    Accepted Submission(s): 2810 Prob

一米阳光 997

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

HDOJ 2159 FATE (二维多重背包)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 二维多重背包,用dp[i][j]表示经验值,i表示最多能杀多少只怪,j表示忍耐度,dp[i][j]表示当最多能杀i只怪,且最大忍耐度为j时能取得的最大经验值。 最后,只需在dp[s][]这一行里寻找经验值大于n的最小m值,即可。 /*HDOJ2159 作者:陈佳润 20

淡墨写江山 827

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HDOJ 2159 FATE

思路一:将经验值、杀怪数当作消耗,求忍耐度的最小值,初始化参考《背包九讲》 除了当经验值为0时dp值为0,其余为正无穷,结果WA代码如下 #include<stdio.h> #include<iostream> #include<cstring> #include<algorithm> const int INF=0x3f3f3f3f;//最大值 ...

mojiezz的博客 169

HDOJ2159 FATE

分析:看了很久,是一个二维完全背包问题,dp值来保存获得的经验值,循环的是忍耐度和杀怪的数量,每次来比较是否获得足够的经验值,如果有,则退出循环,得到最大值。 代码: #include #include #include using namespace std; struct Num{ int w,v; }num[105]; int dp[105][105]; int main()

古古天的博客 1071

HDOJ 2159-FATE【完全背包】

最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,xhd就不会玩这游戏。xhd还说了他最多只杀s只怪。请问他能升掉这最后一级吗?

小I的博客 524

hdoj2159FATE【二维dp】

FATE Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 4   Accepted Submission(s) : 3 Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,

走一步再走一步 502

HDOJ 题目2159 FATE(二维多重背包)

FATE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8681    Accepted Submission(s): 4074 Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极

Jogging_Clown 510
上一篇: 背包问题学习路径
下一篇: 洛谷 P1757【通天之分组背包】
Masker_43
博客等级 码龄8年 5粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值