首页 > 其他分享 >dp入门 cf189A

dp入门 cf189A

时间:2023-11-25 23:57:33浏览次数:26  
标签:typedef 背包 入门 int len cf189A long dp

题意:有一个长为n的带子,可以将它剪为a, b, c三种长度,问最多能剪多少段?

分析:是一道与完全背包类似的题,但这里要求的是背包正好装满。该怎么解决这一问题?我们可以将f数组全部初始化为-1,状态转移时如果上一个状态不是-1才可以转移。

状态转移方程\(f_{i, j}\)表示前i个物品恰好装满j的最大个数,\(f_{i, j} = max(f_{i, j - len[i]} + 1, \ f_{i - 1, j})\)当且仅当\(f_{i, j - len[i] }\ !=-1\),降维,就是\(f_{j} = max(f_{j - len[i]} +1, \ f_{j})\) (和完全背包一样),当长度为0时,最多只有0段,初始化f[0] = 0

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int mod = 998244353, INF = 1 << 30;
const int N = 4e3 + 10;
int f[N];
int len[5];


int main()
{
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    int n;
    std::cin >> n;
    for (int i = 1; i <= 3; i ++) cin >> len[i];
    sort(len + 1, len + 1 + 3);
    for (int i = 1; i <= n; i ++) f[i] = -1;
    f[0] = 0;
    for (int i = 1; i <= 3; i ++){
        for (int j = len[i]; j <= n; j ++) {
            if (f[j - len[i]] != -1){
                f[j] = max(f[j - len[i]] + 1, f[j]);
            }
        }
    }
    cout << f[n] << endl;
    return 0;
}

标签:typedef,背包,入门,int,len,cf189A,long,dp
From: https://www.cnblogs.com/lu1no/p/17856362.html

相关文章

  • DataX快速入门
    DataX3.0快速入门一、DataX3.0概览DataX是阿里云DataWorks数据集成的开源版本,在阿里巴巴集团内部被广泛使用的离线数据同步工具/平台。解决了数据库之中的数据同步、迁移问题,把网状结构转为星型结构,主要用于数据库之间传送业务数据。为了解决异构数据源同步问题,DataX将复杂的......
  • XSS基本入门
    xss简单介绍xss概念跨站脚本攻击(CrossSiteScripting),为不和层叠样式表(CascadingStyleSheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户目的。xss危......
  • kafka入门(二): 位移提交
    位移提交:Kafka的每条消息都有唯一的offset,用来表示消息在分区中对应的位置。有的也称之为"偏移量"。消费者每次在poll()拉取消息,它要返回的是还没有消费过的消息集,因此,需要记录上一次消费时的消费位移,并且持久化。消费者在消费完消息之后,需要执行消费位移的提交。自动位......
  • 【Windows】rdp、ftp协议的密码爆破
    目录密码爆破工具hydra九头蛇爆破远程桌面爆破ftp服务器密码wireshark抓包远程桌面rdp协议3389文件传输FTP协议2021攻击方:Kali测试方:Win7两台都要在同一网段密码爆破工具hydra九头蛇hydra(九头蛇)是著名黑客组织thc的一款开源的暴力破解密码工具,功能非常......
  • 【音视频常见接口HDMI、DP、DVI基础知识】
    DP接口:DisplayPort(简称DP),该接口免认证、免授权金,比较节约钱,主要用于视频源与显示器等设备的连接,也支持携带音频、USB和其他形式的数据。HDMI接口:HighDefinitionMultimedialnterface(简称HDMI),HDMI是一种数字化视频/音频接口技术,可以同时传送音频和影像信号,是一种高清视频接口......
  • C/C++ 运用Npcap发送UDP数据包
    Npcap是一个功能强大的开源网络抓包库,它是WinPcap的一个分支,并提供了一些增强和改进。特别适用于在Windows环境下进行网络流量捕获和分析。除了支持通常的网络抓包功能外,Npcap还提供了对数据包的拼合与构造,使其成为实现UDP数据包发包的理想选择。本章将通过Npcap库构造一......
  • [MDP.NetCore] 使用Azure Portal,開發一個從GitHub持續佈署到Azure Container Apps的We
    使用AzurePortal,開發一個從GitHub持續佈署到AzureContainerApps的Web站台程式碼簽入GitHub之後,啟動GitHubAction流程,編譯並部署程式到AzureContainerApps,是開發系統時常見的功能需求。本篇範例協助開發人員使用GitHub與AzurePortal,逐步完成必要的設計和實作。範例下載:Sl......
  • 工具 | Vshell使用入门
    写在前面   "Vshell是一款go编写的主机群管理工具(RAT)"。    发现Vshell作者团队非常低调,项目Github上Readme介绍非常简短,网上也很少有使用介绍。写个基础入门,记录从配置到主机管理、搭建隧道。本文仅作为工具介绍,请勿用于任何违法场景。    未经授权请勿利用文章......
  • Java零基础入门-数组
    Java零基础入门-数组前言Java是一门面向对象的编程语言,被广泛应用于各个领域。数组是Java编程中最基本也是最重要的数据结构之一,它可以用来存储一组数据,并且方便进行操作和处理。本文将为大家介绍Java数组的基本概念、语法和常见应用场景,帮助初学者快速入门。摘要本文将从以下......
  • Jaeger Client Go 链路追踪|入门详解
    目录从何说起Jaeger部署Jaeger从示例了解JaegerClientGo了解trace、spantracer配置Sampler配置Reporter配置分布式系统与span怎么调、怎么传HTTP,跨进程追踪客户端Web服务端Tag、Log和Ref 从何说起之前参加柠檬大佬的训练营(免费白嫖),在大......