首页 > 其他分享 >DP问题

DP问题

时间:2022-11-15 20:01:07浏览次数:58  
标签:le int 绳子 问题 小竹 物品 长度 DP

题目链接

题目描述:

妈妈成功将小竹救了出来,她觉得小竹实在是太笨了,决定关小竹一周禁闭。可是小竹哪里能忍受失去自由,他早就偷藏了一部手机用于联系你,请求你帮助他逃离。

你通过观察发现他房间内有 \(n\) 个可用于制成绳子的物品,第 \(i\) 个的长度为 \(a_i\)
。当你使用第 \(i\) 个物品制作绳子时,其右侧的 \(k\) 个物品(不含第\(i\)个物品)就无法再被用于制作绳子 。最终,小竹用选择的物品制成绳子,绳子的长度是所选择物品的长度之和。

小竹想知道,他能制作的绳子长度最长为多少?

输入描述:

\(第一行两个整数 n,k(1 \leq k\le n \le 2000)n,k(1≤k≤n≤2000)。\)

\(第二行 n 个用空格隔开的整数,第 i 个整数为 a_i(1 \le a_i \le 2000),表示第 i 个物品的长度。\)

输出描述:

一行一个整数,表示绳子的最长长度。


代码:

#include <bits/stdc++.h>

using namespace std;

const int N = 2010;

int n, k;
int a[N];
int f[N]; // f[i] 表示1 - i 中绳子长度最大值

int main()
{
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);

    cin >> n >> k;

    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }

    for (int i = 1; i <= n; i++)
    {
        if (i <= k + 1) // 在 i 小于等于 k + 1时,只能选一种物品,且必须选择最大的
            f[i] = max(f[i - 1], a[i]);
        else
            f[i] = max(f[i - k - 1] + a[i], f[i - 1]); // f[i] 状态计算有两种类型,一种为选择第 i 个物品,另一种则为不选择第 i 个物品,两种情况取最大值
    }

    cout << f[n];

    return 0;
}

标签:le,int,绳子,问题,小竹,物品,长度,DP
From: https://www.cnblogs.com/KSzsh/p/16893681.html

相关文章

  • 关于Intent.setDataAndType参数问题
    关于Intent.setDataAndType参数问题install取设置属于和类型,数据就是获取到的uri,更具文件类型不同,type参数也不相同,具体参考下表{后缀名,MIME类型}​{".3gp","vi......
  • 解决Linux系统下U盘只读文件系统问题
    https://blog.csdn.net/ojbko/article/details/107483568?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromB......
  • 解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not fou
      我的问题产生与下面图片毫无关系,如果你参照下面的解决办法无法解决,可以看看applicationContext.xml中<beans> </beans>标签中的配置,看import标签是不是在bean标签的......
  • python 线程池 ThreadPoolExecutor
    从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor(线程池)和ProcessPoolExecutor(进程池)两个类。相比threading等模块,该模......
  • QQ邮箱“550 Mailbox unavailable”错误的问题
     最近搞了一个小项目网站:步数管家 ,其中的一个功能是,用户注册的时候,需要使用邮箱进行验证码的确认操作。  本来就是一个小项目,所以,没有用第三方的服务,自己在服务器......
  • 记录一个gorm发生全局查询条件的问题
       正常情况下在使用gorm做修改操作时,会使用omit过滤一些字段,比如上图中修改的时候就不应该修改创建时间和创建人字段的值。关键点在于上图如果omit中没有增加id字......
  • Mysql 启动报错问题排查
    报错信息1:MySQL启动报错:File./mysql-bin.indexnotfound(Errcode:13)_MySQL请检查MySQL数据目录的权限/usr/local/mysql/data  ,  errcode13,一般就是权限问......
  • 基于MATLAB的LDPC编译码仿真,调制为64QAM
    部分源码:%首先加载G,HclearallloadG.mat;loadH.mat;max_iter=50;L_frame=size(G,1);n_frame=100;start=0;step=2;finish=12;r=size(G,1)/size(G,2);M=6;Es=42;%......
  • 错题记录:单片机4个数码管分秒表 关于定义数组的细节问题
    废话不多说先上代码:查看代码 //定时器0分,秒的计时计数voidtimer0()interrupt1{ staticunsignedintspeed,count=0; TH0=0XEE; TL0=0X00; count++; if(s......
  • 解决.eslintignore不生效问题
    vue3+typescript项目,在@type下配置了类型申明,在.eslintignore文件里配置了/node_modules/src/@types/dist/public/package-lock.json.DS_Storevite.config.ts 但是运行......