当前位置: 首页 > news >正文

洛谷 Cut Ribbon

思路:我们可以看出,这是一道完全背包问题,但是呢,有一点需要注意:那就是我们在装背包的时候并不能保证一定能装满背包,但是这里的背包要求是让我们装满的,所以我们需要判断这个背包装满才行,所以用模板直接套是并不能解决问题的。

这里我们初始化了一下f数组,让它的全部值为-1,只令f[0]=0.这是因为需要进行递推,0是必须要有初始值的一个值。在我们判断的时候,for循环的第二层直接判断能不能装下,在里面我们写if判断条件的时候,我们需要需要判断一下当前的值是不是被更新过了,也就是说是不是用过了,没有用过说明我们递推到这里的时候这个状态并没有被更新,也就是说我们的背包是没有被装满的。

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<cmath> 
#include<vector>
#include<algorithm>
#include<stack>
#include<queue>
#include<sstream>
#include<numeric>
#include<map>
#include<limits.h>
#include<set>
#define int long long
#define MAX 20001
#define _for(i,a,b) for(int i=a;i<(b);i++)
#define ALL(x) x.begin(),x.end()
using namespace std;
using PII=pair<int, int>;
int n, m;
int counts;
int f[MAX];
int arr[MAX];
signed main() {ios::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);cin >> n;for (int i = 1; i <= 3; i++)cin >> arr[i];memset(f, -1, sizeof f);f[0] = 0;for (int i = 1; i <= 3; i++) {for (int j = arr[i]; j <= n; j++) {if (f[j - arr[i]] >= 0)f[j] = max(f[j], f[j - arr[i]] + 1);}}cout << f[n];return 0;
}

http://www.lryc.cn/news/327645.html

相关文章:

  • #AS,idea,maven,gradle
  • FPGA结构与片上资源
  • 【分布式】——分布式事务
  • 第6章:“让我们思考这个”的提示
  • 安卓Activity上滑关闭效果实现
  • 使用conda管理python环境
  • MR混合现实情景实训教学系统在军事演练课堂中的教学应用
  • vant checkbox 复选框 样式改写
  • 物联网实战--入门篇之(一)物联网概述
  • 将yolov5s部署到安卓上实战经验总结
  • 算法日记————对顶堆(4道题)
  • 【I.MX6ULL移植】Ubuntu-base根文件系统移植
  • unity3d for web
  • 大宋咨询(深圳问卷调研)关于消费者研究的流程
  • STM32看似无法唤醒的一种异常现象分析
  • iOS - Runtime-isa详解(位域、union(共用体)、位运算)
  • 使用VSCode搭建Vue 3开发环境
  • 深度学习中的模型蒸馏技术:实现流程、作用及实践案例
  • Java服务运行在Linux----维护常用命令
  • 夜晚水闸3D可视化:科技魔法点亮水利新纪元
  • 从零开始的软件开发实战:互联网医院APP搭建详解
  • 【深度学习】YOLO检测器的发展历程
  • C语言--编译和链接
  • 实现使用C#代码完成wifi的切换和连接功能
  • Mac添加和关闭开机应用
  • QT QInputDialog弹出消息框用法
  • Unity3d使用Jenkins自动化打包(Windows)(一)
  • HarmonyOS 应用开发之Want的定义与用途
  • enscan自动化主域名信息收集
  • 分享全栈开发医疗小程序 -带源码课件(课件无解压密码),自行速度保存