荣誉艾尔迪亚人的题解

news2024/9/20 12:42:29

目录

原题描述:

题目背景

题目描述

输入格式

输出格式

样例

Input 1

Output 1

Input 2

Output 2

数据范围:

样例解释

主要思路:

代码code:


原题描述:

时间限制: 1000ms

空间限制: 65536kb

题目背景


​ 艾尔迪亚人在与巨人的战斗中雷枪发挥了不可磨灭的作用,雷枪之所以能够发挥那么强的作用,是因为雷枪能够牢固的刺入巨人的身体内引爆。雷枪的核心威力来源自火药,而火药的原材料由硫磺、硝石与炭原材料制造而成的,而火药的原材料可以由矿洞产出。

题目描述


​小埋是一个艾尔迪亚矿工,挖矿对于小埋来说能获得财富和荣誉(因为要抗击巨人需要大量材料,艾尔迪亚高层要鼓励矿工们多采矿),荣誉值到达一定值可以成为荣誉艾尔迪亚人

​ 现在小埋挖矿既想获得一定的财富也想获得一定量的荣誉。假设我们已知小埋挖的那部分矿洞有 n 块矿石,并且已知这 n 块矿石的重量 a_1,a_2,...,a_n,对于每块矿石我们能够获得一些财富值和荣誉值,对于每块矿石的财富值和荣誉值设定如下。

  • 对于第i块矿石,它的财富值为前 i块矿石中以第 i 块矿石结尾的(非严格)递增序列长度最大值。(第i 块矿石为结尾矿石,就是必须选第i 块矿石为结尾)。
  • 对于第 i 块矿石,它的荣誉值为第 i 块到第 n 块矿石中以第 i  块矿石为起点的(非严格)递减序列长度最大值。(第i 块矿石为起点矿石,就是必须选第i 块矿石为起点)。

小埋想要在自己需要至少获得财富值为 m 荣誉值为 v的情况下,所挖出矿石总和的最小重量。

输入格式

​ 第一行输入一个整数 n ,表示矿石的数量。

​ 第二行 n 个整数a_1,a_2,...,a_n​ 分别表示每个矿石的重量。

​ 第三行输入m 和 v 表示我们需要至少获得的财富值和荣誉值。

输出格式

输出占一行,输出一个整数,表示​输出小埋能够在限定条件下,挖出矿石总和的最小重量。

样例

Input 1
5
1 2 2 3 5
5 5
Output 1
8
Input 2
5
1 2 3 2 1
3 4 
Output 2
3

数据范围:

对于所有测试数据有:0 \le n \le 10^5,0 \le m*v \le 10^3,1 \le a_i \le 10^9

样例解释

  • 对于样例1,我们可以选择前四个矿石[1,2,2,3]
    • 以第一个矿石为结尾的(非严格)递增序列为 [1],财富值为 1,以第一个矿石为开头的非严格递减序列为1,荣誉值为 1
    • 以第二个矿石为结尾的非严格递增序列为 [1,2],财富值为2,以第二个矿石为开头的非严格递减子序列为[2,2] ,荣誉值为 2
    • 以第三个矿石为结尾的非严格递增序列为 [1,2,2],财富值为3,以第三个矿石为开头的非严格递减子序列为[2] ,荣誉值为1
    • 以第四个矿石为结尾的非严格递增序列为[1,2,2,3],财富值为4,以第四个矿石为开头的非严格递减子序列为3,荣誉值为 1
    • 所以我们的财富值为 1+2+3+4 = 10,荣誉值为1+2+1+1 = 5,满足我们所需的至少获得财富值为 5,荣誉值为 5,并且所挖去的矿石总重量最小。
  • 对于样例2,我们可以选第二个矿石和第五个矿石,第二个矿石重量为 2,财富值为 2荣誉值为3,第五个矿石重量矿石重量为 1,财富值为 2,荣誉值为1,我们此时满足至少财富值3,且荣誉值为4 的情况,并且此时总重量最小为 3,或者我们也可以选择第一块矿石和第二块矿石。

主要思路:

很明显,是最长上升子序列问题+二维费用背包问题。

把第 i 块到第 n 块矿石中以第 i  块矿石为起点的(非严格)递减序列长度最大值。(第i 块矿石为起点矿石,就是必须选第i 块矿石为起点)这句话就理解成第i块矿石为结尾,第n块矿石为开头的最长上升子序列,接着后面就是二维费用背包。

但是最长上升子序列朴素版是O(n^2),这里会超时,所以得用二分优化成O(n \log_2^n)

代码code:

#include<bits/stdc++.h>
using namespace std;
long long tmp[100010],f[100010],f1[100010],a[100010];
long long n;
long long m,v;
long long dp[1010][1010];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	cin>>m>>v;
	long long pos=1;
	tmp[1] = a[1];
	f[1] = 1;
	for(int i=2;i<=n;i++)
	{
		long long l=1,r=pos;
		while(l<r)
		{
			long long mid = (l+r+1)/2;
			if(tmp[mid]<=a[i])
			{
				l = mid;
			}
			else
			{
				r = mid-1;
			}
		}
		if(tmp[l]>a[i])
		{
			tmp[l] = a[i];
			f[i] = l;
		}
		else
		{
			if(l == pos)
			{
				tmp[++pos] = a[i];
				f[i] = pos;
			}
			else
			{
				tmp[l+1] = a[i];
				f[i] = l+1;
			}
		}
	}
	//此时,f[i]就代表已第i个为结尾,第一个为开头的最长上升子序列
	pos=1;
	tmp[1] = a[n];
	f1[n] = 1;
	for(int i=n-1;i>=1;i--)
	{
		long long l=1,r=pos;
		while(l<r)
		{
			long long mid = (l+r+1)/2;
			if(tmp[mid]<=a[i])
			{
				l = mid;
			}
			else
			{
				r = mid-1;
			}
		}
		if(tmp[l]>a[i])
		{
			tmp[l] = a[i];
			f1[i] = l;
		}
		else
		{
			if(l == pos)
			{
				tmp[++pos] = a[i];
				f1[i] = pos;
			}
			else
			{
				tmp[l+1] = a[i];
				f1[i] = l+1;
			}
		}
	}
	//同理
	memset(dp,0x3f,sizeof(dp));//dp初始化
	dp[0][0] = 0;
	for(int i=1;i<=n;i++)
	{
		for(int j=m;j>=0;j--)
		{
			for(int k=v;k>=0;k--)
			{
				dp[j][k] = min(dp[j][k],dp[max(j-f[i],0LL)][max(k-f1[i],0LL)]+a[i]);//二维费用背包
			}
		}
	}
	cout<<dp[m][v];
	return 0;
}

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

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

相关文章

GPT应用_PrivateGPT

项目地址&#xff1a;https://github.com/imartinez/privateGPT 1 功能 1.1 整体功能&#xff0c;想解决什么问题 搭建完整的 RAG 系统&#xff0c;与 FastGPT 相比&#xff0c;界面比较简单。但是底层支持比较丰富&#xff0c;可用于知识库的完全本地部署&#xff0c;包含大…

如何选择工程师职称申报的专业?

选择适合自己的职称评定专业&#xff0c;需从官方申报范围、公示名单中寻找答案&#xff0c;并选择适合自己的评审方式。需具备一定的工作年限、学历要求和充分证明自己能力水平的材料&#xff0c;方可获得职称资格。 在职称评定之路上&#xff0c;选择一个适合自己的专业&…

论文阅读笔记AI篇 —— Transformer模型理论+实战 (四)

论文阅读笔记AI篇 —— Transformer模型理论实战 &#xff08;四&#xff09; 一、理论1.1 理论研读1.2 什么是AI Agent? 二、实战2.1 先导知识2.1.1 tensor的创建与使用2.1.2 PyTorch的模块2.1.2.1 torch.nn.Module类的继承与使用2.1.2.2 torch.nn.Linear类 2.2 Transformer代…

设计模式--组合模式

缘起 某日&#xff0c;小明公司最近接到一个办公管理系统的项目&#xff0c;并且在每个城市都有分部。这属于是很常见的OA系统&#xff0c;只要前期将需求分析完善好&#xff0c;中后期开发维护是不难的。 然而&#xff0c;总部公司使用后觉得很OK&#xff0c;想要其他城市的…

【Proxy】Windows 10 的 Command Line Proxy 设置

【Proxy】Windows 10 的 Command Line Proxy 设置 1 本机环境2 PowerShell3 CMD 1 本机环境 Windows 10v2rayN 在 v2rayN 界面下方可以看到 socks 和 http 的端口号&#xff0c;分别为 10808 和 10809 2 PowerShell 每次打开新窗口&#xff0c;执行下面的命令 $env:HTTP_…

无刷电机行业调研:市场销售规模达到537亿元

无刷直流电机(BLDC&#xff1a;Brushless Direct Current Motor)&#xff0c;也被称为电子换向电机(ECM或EC电机)或同步直流电机&#xff0c;是一种使用直流电(DC)电源的同步电机。无刷直流电机实质上为采用直流电源输入&#xff0c;并用逆变器变为三相交流电源&#xff0c;带位…

GitHub图床TyporaPicGo相关配置

本文作者&#xff1a; slience_me 文章目录 GitHub图床&Typora&PicGo相关配置1. Github配置2. picGo配置3. Typora配置 GitHub图床&Typora&PicGo相关配置 关于Typora旧版的百度网盘下载路径 链接&#xff1a;https://pan.baidu.com/s/12mq-dMqWnRRoreGo4MTbKg?…

三国游戏(寒假每日一题+贪心、枚举)

题目 小蓝正在玩一款游戏。 游戏中魏蜀吴三个国家各自拥有一定数量的士兵 X,Y,Z&#xff08;一开始可以认为都为 0&#xff09;。 游戏有 n 个可能会发生的事件&#xff0c;每个事件之间相互独立且最多只会发生一次&#xff0c;当第 i个事件发生时会分别让 X,Y,Z 增加 Ai,Bi…

零基础学Python(2)— 安装Python开发工具之PyCharm

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。PyCharm是由JetBrains公司开发的一款Python开发工具。在Windows、Mac OS和Linux操作系统中都可以使用。它具有语法高亮显示、Project&#xff08;项目&#xff09;管理代码跳转、智能提示、自动完成、调试、单元测试和版本…

关于SQL-case when最全面的学习笔记

case when 推荐学习书籍&#xff1a;1、SQL基础教程 6-32、SQL进阶教程 1-1 case when 是SQL语法中提供的标准的条件分支。 条件分支在MYSQL中即为IF函数&#xff0c;不同的数据库都会提供自己的一些函数&#xff0c;但是CASE WHEN 更加通用。 CASE语句的两种写法 1、搜索CASE…

Ubuntu使用docker-compose安装mysql8或mysql5.7

ubuntu环境搭建专栏&#x1f517;点击跳转 Ubuntu系统环境搭建&#xff08;十四&#xff09;——使用docker-compose安装mysql8或mysql5.7 文章目录 Ubuntu系统环境搭建&#xff08;十四&#xff09;——使用docker-compose安装mysql8或mysql5.7MySQL81.新建文件夹2.创建docke…

在码云(gitee)里面提交代码进行保存步骤(自留笔记)

一些需要用到的软件需要自行下载 视频可观看https://www.bilibili.com/video/BV1hf4y1W7yT/ 步骤&#xff1a; 1.打开码云&#xff0c;点击加号&#xff0c;创建仓库 2.此处我的仓库选择私有&#xff0c;也可以选择开源&#xff0c;选择开源时&#xff0c;注意把弹出来的选项全…

「Kafka」Broker篇

「Kafka」Broker篇 主要讲解的是在 Kafka 中是怎么存储数据的&#xff0c;以及 Kafka 和 Zookeeper 之间如何进行数据沟通的。 Kafka Broker 总体工作流程 Zookeeper 存储的 Kafka 信息 启动 Zookeeper 客户端&#xff1a; [atguiguhadoop102 zookeeper-3.5.7]$ bin/zkCli.sh通…

【JavaEE】_网络编程基础

目录 1. 网络编程基础 1.1 网络编程定义 1.2 网络编程中的基本概念 1.2.1 API 1.2.2.发送端和接收端 1.2.3 请求和响应 1.2.4 客户端和服务端 2. Socket 套接字 2.1 概念 2.2 分类 3. UDP数据报套接字编程 3.1 DatagramSocket API 3.1.1 含义 3.1.2 构造方法 3…

全景摄像机行业分析:市场规模不可限量

早期的全景相机行业竞争格局较为多元。近年来随着行业技术不断成熟&#xff0c;市场的竞争格局由多家参与逐步向头部企业聚拢&#xff0c;国内企业凭借图像处理技术优势在全景相机行业中逐步抢占市场份额。 全景摄像机&#xff0c;是可以独立实现大范围无死角监控的摄像机。 一…

OpenVINS学习7——评估工具的简单使用

前言 OpenVINS自带评估工具&#xff0c;这里记录一下使用方法&#xff0c;我是以VIRAL数据集为例&#xff0c;但是目前仍然有问题&#xff0c;发现误差很大&#xff0c;我还没搞明白哪里出了问题。 工具介绍 主要参考 https://docs.openvins.com/eval-error.html https://bl…

ELK 日志分析系统

目录 一、日志管理方案 二、完整日志系统基本特征 三、ELK 简介 ELK组件&#xff1a; 1、ElasticSearch 2、Logstash 3、Kibana 可以添加的其它组件&#xff1a; 1、Filebeat 2、缓存/消息队列&#xff08;redis、kafka、RabbitMQ等&#xff09; 3、Fluentd 三、ELK …

作业-数组计数法

目录 数字出现次数 题目描述 输入 输出 输入复制 输出复制 求n个数中每个数出现的次数 题目描述 输入 输出 输入复制 输出复制 声音识别 题目描述 输入 输出 输入复制 输出复制 选班委 题目描述 输入 输出 输入复制 输出复制 数字出现次数 题目描述 …

解析智能酒精壁炉不完全燃烧的成因及潜在问题

解析智能酒精壁炉不完全燃烧的成因及潜在问题 智能酒精壁炉作为一种环保、高效、现代化的取暖工具&#xff0c;其采用酒精作为燃料进行燃烧&#xff0c;但在一些情况下&#xff0c;可能会出现酒精燃烧不完全的问题。下面将深入探讨这一现象的成因以及可能引发的问题。 成因分析…

SpringSecurity Web 权限方案

目录 一、设置登录系统的账号、密码 二、数据库查询用户名密码 三、自定义登录页面 四、基于角色或权限进行访问控制 &#xff08;一&#xff09;hasAuthority 方法 &#xff08;二&#xff09;hasAnyAuthority 方法 &#xff08;三&#xff09;hasRole 方法 &#xff…