c++11/c++98动态规划入门第5课,经典DP问题 --- 区间

news2024/12/23 6:35:43

第1题     取数问题 查看测评数据信息

    有一排N个数,你和小明2个人玩游戏,每个人轮流从2端取数,每次可以从左或右取,不能从中间取。你取的所有的数的和是你的得分,小明取的所有的数的和是小明的得分。如果你先取,你最多比小明多得多少分?

输入格式

  第一行:一个整数n,范围在[0, 100]。

  第二行:n个整数,每个数范围在[1, 10000]。

输出格式

  小明足够聪明时,你最多多得的分数。

输入/输出例子1

输入:

  4

  3 2 9 1

输出:

  9

样例解释:          

第1轮你取3;

第2轮他取2;

第3轮你取9;

第4轮他取1;

(3+9)-(2+1) = 9

样例解释

代码:

#include<bits/stdc++.h>
using namespace std;
int n,f[105][105],a[105],ans;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i],f[i][i]=a[i];
    for(int i=1;i<=n;i++)
        for(int j=1;j+i<=n;j++)
            f[j][j+i]=max(-f[j+1][j+i]+a[j],-f[j][i+j-1]+a[i+j]);        
    cout<<f[1][n];
    return 0;
}

第1题     数字(number) 查看测评数据信息

有n个数字(0到99)排成一行,每一次可以将相邻的两个数字相加并对100取模(即除以100的余数),将结果取代之前的两个数,一次操作的花费为两个数字相乘。经过n-1次操作后剩下一个数,问剩下一个数时总花费的最小值。

输入格式

有若干组数据,每组数据第一行为一个正整数n(n<=100)表示数字的个数。

第二行为n个正整数(0到99)

输出格式

每组数据对应的最小花费。

输入/输出例子1

输入:

2

18 19

3

40 60 20

 

输出:

342

2400

样例解释

对于第二组数据有两种方案:

1、  先将(40和60)相加得0,再将0 和20相加得20,总花费为40*60+0*20=2400

2、  先将(60和20)相加得80,再将40和80相加得20,总花费为60*20+40*80=4400

显然第一种方案较好。

 

样例解释

代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[105],f[105][105],d[105];
int main(){
    while(scanf("%d",&n)!=EOF){
        for(int i = 0;i <= 105;i++){
        	for(int j = 1;j <= 105;j++)
            f[i][j] = 1250000;
        }
        for(int i = 1;i <= 105;i++){
            d[i] = 0;
        }
        for(int i = 1;i <= n;i++){
            cin>>a[i];
            d[i] = d[i-1]+a[i];
            f[i][i] = 0;
        }
        for(int i = 2;i <= n;i++)
            for(int j = i;j <= n;j++){
                int lt = j-i+1;
                for(int k = lt;k < j;k++){
                    int x = (d[k]-d[lt-1])%100;
                    int y = (d[j]-d[k])%100;
                    f[lt][j]=min(f[lt][j],f[lt][k]+f[k+1][j]+x*y);
                }
            }
        cout<<f[1][n]<<endl;
    }
    return 0;
}

  • 测试
第1题     救灾 查看测评数据信息

为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。请问:你用有限的资金最多能采购多少公斤粮食呢?

输入格式

输入数据首先包含一个正整数C,表示有C(C<=10)组测试数据,每组测试数据的第一行是两个整数n和m(1<=n<=100, 1<=m<=100),分别表示经费的金额和大米的种类,然后是m行数据,每行包含3个数p,h和c(1<=p<=20,1<=h<=200,1<=c<=20),分别表示每袋的价格、每袋的重量以及对应种类大米的袋数。

输出格式

对于每组测试数据,请输出能够购买大米的最多重量,你可以假设经费买不光所有的大米,并且经费你可以不用完。每个数据的输出占一行。

输入/输出例子1

输入:

1

8 2

2 100 4

4 100 2

输出:

400

样例解释

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[105],b[105],c[105];
int dp[105];
int n,m;   
int main()
{
    int C;
    scanf("%d",&C);
    while(C--)
    {
        memset(dp, 0, sizeof(dp));
        scanf("%d %d",&n,&m);
        for(int i=0; i<m; i++)
        {
            scanf("%d %d %d",&a[i],&b[i],&c[i]);
        }
        for(int i=0; i<m; i++)
        {
            for(int j=1; j<=c[i]; j++)
            {
                for(int k=n; k>=a[i]*j; k--)
                {
                    dp[k]=max(dp[k-a[i]]+b[i], dp[k]);
                }
            }
        }
        printf("%d\n",dp[n]);
    }
    return 0;
}

第3题     光盘 查看测评数据信息

有N张光盘,每张光盘有一个价钱,现在要从N张光盘中买M张,预算为L,每张光盘有一个快乐值,要求在不超过预算并且恰好买M张,使得快乐值总和最大。

输入格式

第一行为一个正整数T(1<=T<=5)表示测试数据个数

每组测试数据第一行为三个正整数N(N<=100),M(M<=N),L(L<=1000)

接下来的N行每行有两个正整数,分别是光盘的价钱与快乐值。

输出格式

每组数据对应的最大快乐值总和(保证小于2^31)。若无解则输出0.

输入/输出例子1

输入:

1

3 2 10

11 100

1 2

9 1

输出:

3

样例解释

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int MAXN = 1010;
const int INF = 1 << 31;
struct Movie
{
    int t,v;
};
Movie movie[MAXN];
int dp[MAXN][MAXN];
int n,m,l;
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d%d",&n,&m,&l);
        for(int i = 1;i <= m;i++)
            for(int j = 0;j <= l;j++)
                dp[j][i] = -INF;
        for(int j = 0;j <= l;j++)
            dp[j][0] = 0;
        for(int i = 1;i <= n;i++)
            scanf("%d%d",&movie[i].t,&movie[i].v);
        for(int i = 1;i <= n;i++)
            for(int j = l;j >= movie[i].t;j--)
            for(int k = m;k >= 1;k--)
            dp[j][k] = max(dp[j][k],dp[j-movie[i].t][k-1]+movie[i].v);
        int ans = 0;
        for(int i = 1;i <= l;i++)
            if(dp[i][m] > ans)
            ans = dp[i][m];
        printf("%d\n",ans);
    }
    return 0;
}

总结:

状态:线性DP --?-- 区间DP

阶段:长度

阶段的方向:2种  ------ 取决于“子问题”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/788329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】MySQL HeatWave 介绍

HeatWave是一个分布式、可扩展、无共享、内存中、混合柱状的查询处理引擎&#xff0c;专为获得极致性能而设计。可以通过向MySQL数据库系统添加一个HeatWave集群来启用它。 HeatWave 是一种大规模并行、高性能内存查询加速器&#xff0c;可将分析工作负载、混合工作负载和机器…

5.string变量-读取一行

C里面的读一行的用法。getline&#xff08;cin,addr&#xff09;; 从标准输入设备cin&#xff0c;读取一行字符串保存到字符串变量addr中 如果用户直接回车什么都不读取就没有任何数据输入 读一行直到遇到回车符&#xff0c;注意不包括回车符。 判断字符串是不是空的 addr.em…

学生管理系统-06Echarts

一、Echarts简介 1、什么是echarts ECharts是一款基个基于 JavaScript 的开源可视化图表库 官网地址&#xff1a;Apache ECharts 国内镜像&#xff1a;ISQQW.COM x ECharts 文档&#xff08;国内同步镜像&#xff09; - 配置项 示例&#xff1a;echarts图表集 2、第一个E…

[面试官,你坐好],今天我给你吹下卡顿监控

这是一篇面试总结稿&#xff0c;根据之前的面试过程以一种模拟面试的风格进行阐述。 面试官: 自我介绍下 诶&#xff1f;这面试官头发还比较多&#xff0c;应该不牛逼&#xff0c;心里踏实了不少。我: 面试官你好&#xff0c;我叫**&#xff0c;5年工作经验。曾经跟OPPO产品PK&…

Alchemy Catalyst 2023 Crack

Alchemy Catalyst 2023 Crack Alchemy CATALYST是一个可视化的本地化环境&#xff0c;支持本地化工作流程的各个方面。它帮助组织加快本地化进程&#xff0c;比竞争对手更快地进入新市场&#xff0c;并为他们创造新的收入机会。 创建全球影响力 高质量的产品和服务翻译对跨国组…

人才缺口将达 6.7 万人?半导体行业“后继无人”,美国危?

根据美国半导体行业协会&#xff08;SIA&#xff09;和牛津经济研究所&#xff08;Oxford Economics&#xff09;联合编制的一项研究报告指出&#xff0c;到2030年&#xff0c;美国半导体行业预计面临约6.7万名人才缺口。 根据预测&#xff0c;到2029年底&#xff0c;美国芯片行…

1.Flink概述

1.1 技术架构 应用框架层: 在API层之上构建的满足特定应用场景的计算框架&#xff0c;总体上分为流计算和批处理两类应用框架。API 层&#xff1a; Flink对外提供能力的接口 &#xff0c;实现了面向流计算的DataStream API和面向批处理的DataSet API。运行时层&#xff1a;Flin…

基于Java+SpringBoot+vue前后端分离小徐影城管理系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

标准IO函数练习

一、实现登录功能。 自定义一个usr.txt&#xff0c;手动输入账户密码&#xff0c;格式如下&#xff1a;账户 密码 例如&#xff1a; zhangsan 12345 lisi abcde wangwu abc123 需求如下&#xff1a; 从终端获取账户密码&#xff0c;与文件中的账户密码比较若终端输入的账户…

好看的思维导图模板有哪些?分享这几款

好看的思维导图模板有哪些&#xff1f;思维导图是一种非常实用的工具&#xff0c;可以帮助我们更好地组织和理解信息。然而&#xff0c;如果你想让你的思维导图看起来更好看&#xff0c;吸引人眼球&#xff0c;那么选择一个好的思维导图模板是非常重要的。 在众多的思维导图制作…

【STM32】 强大的 STM32Cube 生态 STM32CubeIDE 无伤速通

本文介绍的软件&#xff0c;均可以在ST官网st.com免费下载&#xff08;你需要注册登录&#xff09;&#xff0c;首选官网下载最新版本&#xff0c;如果有问题&#xff0c;可以在我的公众号回复&#xff1a;Cube&#xff0c;获取截止今日的最新版本软件安装包。 目录 一、STM32C…

传统域名与区块链域名的区别是什么?

区块链技术的发展&#xff0c;不仅带来了数字货币的兴起&#xff0c;还催生了一种新型的互联网域名——Web3 域名。Web3 域名作为一种新兴的域名体系&#xff0c;与传统的域名有着很大的区别。今天&#xff0c;我们就来探讨一下传统域名与区块链域名的区别。 首先&#xff0c;让…

查看docker容器启动参数

查看docker启动参数 1、查看docker容器的自启动策略2、查看docker容器的日志滚动清理策略 以下配置命令以redis容器为例 1、查看docker容器的自启动策略 docker inspect --format{{json .HostConfig.RestartPolicy}} redis输出的name是always 表示此容器是开机自启动的&#x…

蓝桥杯上岸必背!!!(第六期树与图的遍历)

第六期&#xff1a;树与图的遍历 &#x1f525; &#x1f525; &#x1f525; 蓝桥杯热门考点模板总结来啦✨ ~ 你绝绝绝绝绝绝对不能错过的常考树与图的遍历模板 &#x1f4a5; ❗️ ❗️ ❗️ 大家好 我是寸铁 &#x1f4aa; 祝大家4月8号蓝桥杯上岸 ☀️ 还没背熟模板…

2.1数据结构——线性表

一、定义 线性表是具有相同数据类型的n&#xff08;n>0&#xff09;个数据元素的有限序列&#xff0c;&#xff08;n表示表长&#xff0c;n0为空表&#xff09; 用L表示&#xff1a; 位序&#xff1a;线性表中的“第i个” a1是表头元素&#xff1b;an是表尾元素 除第一个…

2023 年牛客多校第三场题解

A World Fragments I 题意&#xff1a;给定两个二进制数 x , y x,y x,y&#xff0c;每次可以选择 x x x 二进制表达中的其中一位 b b b&#xff0c;然后执行 x ← x − b x \leftarrow x-b x←x−b 或 x ← x b x \leftarrow xb x←xb。问 x x x 最少经过多少次操作变成…

高速数据采集专家-FMC140【产品手册】

FMC140是一款具有缓冲模拟输入的低功耗、12位、双通道&#xff08;5.2GSPS/通道&#xff09;、单通道10.4GSPS、射频采样ADC模块&#xff0c;该板卡为FMC标准&#xff0c;符合VITA57.1规范&#xff0c;该模块可以作为一个理想的IO单元耦合至FPGA前端&#xff0c;8通道的JESD204…

第一启富金:现货黄金市场等待央行决议 非美商品‘弱不禁风’

第一启富金基本面分析&#xff1a; 中国纸黄金交易通显示&#xff0c;全球最大黄金上市交易基金(ETF)截至07月22日持仓量为919.00吨&#xff0c;较上日增持5.20吨&#xff0c;本月止净减持2.90吨。 在俄罗斯上周退出黑海谷物协议&#xff0c;摧毁了乌克兰通往基辅的一条出口路线…

PKCS#1: RSA加密时摘要值规范

RSA的加密和签名标准是类似的&#xff0c;加密时的摘要值结构如下 即非普通的hash摘要值&#xff0c;而是der编码结构的hash摘要值&#xff0c;用ASN1工具打开 可以快速的组装成一个der编码结构的摘要值&#xff0c;代码如下 ByteArrayOutputStream digestInfoValueBuf new By…

《向量数据库指南》:向量数据库Pinecone如何集成OpenAI

目录 嵌入式介绍 环境设置 创建嵌入 初始化Pinecone索引 填充索引 ⚠️警告 查询 本指南介绍了将OpenAI的大型语言模型(LLMs)与Pinecone(称为 OP stack )集成的方法,增强LLMs的语义搜索或“长期记忆”。此组合利用LLMs的嵌入和完成(或生成)端点,以及Pinecone的向…