题目:大石头的搬运工(蓝桥OJ 3829)

问题描述:

解题思路:

        官方:

        注意点:

        1.直观方法无法使用,因为其时间复杂度为O(n2)。带入题目数据n最大为1e5则时间复杂度为1e10,超过了运行限制(默认1e8)。

        2.pair不会自动排序,规则仍遵循sort()。pair放入数据需要建立pair类型的数组pair<int, int>a[]

        3.如何实现pre[]和nex[]:使用前缀和的算法,原本的a[i]需要换成对应题目要求

        假设有三块石头且已排序,下图前者的操作等同于后者,因此前缀和的实现个根据前者

    

        前者的实现逻辑如下:

        

        上图的逻辑为(1.)A到B的费用,即pre[2](2.)费用为AB重量之和乘AB与C的距离

      (3.)将1和2的费用相加,即总费用pre[2]+s*(c.x - b.x),s为A.y+b.y

题解:

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9;
pair<int, int> p[N];//***
#define x   first   
#define y   second//表示y的别名为first。此处操作不能使用using,因为非结构类型起别名
using ll = long long;
ll pre[N], nex[N];
 

int main()
{
	int n;cin >> n;
	for(int i = 1; i <= n; i++)
	{
		cin >> p[i].y >> p[i].x;
	}
	
	sort(p + 1, p + n + 1);
	
	ll s = 0;
	for(int i = 1; i <= n; i++)
	{
		pre[i] = pre[i-1] + s * (p[i].x - p[i-1].x);
		s += p[i].y;
	}
	
	s = 0;
	for(int i = n; i >= 1; i--)//**i--
	{
		nex[i] = nex[i+1] + s * (p[i+1].x - p[i].x);
		s += p[i].y;
	}
	
	ll res = 1e18;//函数内不可以定义超过1e5的数组,但可以定义很大的数字 
	for(int i = 1; i <= n; i++)
	{
		res = min(res, pre[i] + nex[i]);//注意min只能同类型比较,所以ll pre[]
	}
	
	cout << res;
	
	return 0; 
}

知识点:前缀和 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode安装Prettier插件,对vue3项目进行格式化

之前vscode因为安装了Vue Language Features (Volar)插件&#xff0c;导致Prettier格式化失效&#xff0c;今天有空&#xff0c;又重新设置了一下 1. 插件要先安装上 2. 打开settings.json {"editor.defaultFormatter": "esbenp.prettier-vscode","…

Hex2Bin转换工具文档、Bootloader 、OTA 、STM32等MCU适用

说明&#xff1a;这个工具可以将 Hex 文件 转换为 Bin 格式文件&#xff0c;软件是按自己开发 STM32 OAT 功能需求开发的一款辅助 上位机软件。 有兴趣的朋友可留言探讨。 附加功能&#xff1a; 1.另外可以生成指定大小的bin 格式文件&#xff0c;文件多余的空余位置填充随机…

GZ075 云计算应用赛题第6套

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷6 某企业根据自身业务需求&#xff0c;实施数字化转型&#xff0c;规划和建设数字化平台&#xff0c;平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”&#xff0c;拟采用开源OpenSt…

可狱可囚的爬虫系列课程 10:在网站中寻找 API 接口

上一篇文章我们讲述了爬虫中一个比较重要的知识点&#xff0c;如何从 API 接口中获取数据&#xff0c;本篇文章我们继续讲述&#xff0c;如何在网站中寻找 API 接口&#xff0c;我们以“今日头条”网站 https://www.toutiao.com/ 为例。 如上图所示&#xff0c;如果要获取页面…

JumpServer3.0版本-账号管理

账号列表 我这里已经创建好了所以有很多,可以点击资产树列表分类查看 点击创建按钮,添加账号 资产:如果多个设备的账号密码一致可以在资产同事选中 名称:方便辨识即可 用户名:登录设备的账户名 密码:按你登录需求自行选择 添加按钮旁边还有个“模版添加” 此功能便…

Linux第3步_安装Ubuntu操作系统

创建好虚拟机后&#xff0c;就可以安装Ubuntu操作系统了。 1、双击“VMware Workstation Pro”&#xff0c;得到下面的界面。 2、点击“编辑虚拟机设置”&#xff0c;见下图&#xff1a; 3、等几秒钟&#xff0c;得到下面的界面&#xff1a; 4、点击“CD/DVD”&#xff0c;得到…

【SpringBoot】Java MVC 集成 Swagger 生成 API 文档

使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。官网: https://swagger.io/ Knife4j 是为Java MVC框架集成Swagger生成Api文档的增强解决方案。 <dependency><groupId>com.github.xiaoymin</groupI…

七款人体感应报警器电路图

人体感应报警器电路图&#xff08;一&#xff09; 人体发出的红外线波长在9&#xff5e;10um之间&#xff0c;属远红外线区。我们利用热释电红外传感器及信号处理集成电路&#xff0c;组装成一个人体红外线感应开关电路报警器&#xff0c;它能依靠人体发出的微量红外线进行开关…

how2heap-2.23-07-unsafe_unlink

unlink的作用 在glibc-2.23的malloc.c中搜索unlink&#xff0c;找到unlink的使用场景 _int_malloc 从恰好大小合适的largebin中获取chunk&#xff0c;发生unlink从比malloc要求大的largebin中取chunk&#xff0c;发生unlink _int_free free之后&#xff0c;与前后空闲的chunk…

认识CUDA

1 基本概念 1.1 什么是CUDA&#xff1f; CUDA(ComputeUnified Device Architecture)&#xff0c;是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU能够解决复杂的计算问题。 CUDA&#xff08;Compute Unified Device Arc…

copilot插件全解

COPILOT是一个基于AI的编程辅助工具&#xff0c;它可以帮助程序员自动编写代码&#xff0c;提高开发效率。COPILOT的插件主要是为了将其功能集成到不同的编程环境中&#xff0c;方便程序员使用。 目前&#xff0c;COPILOT支持多种编程环境&#xff0c;包括Visual Studio Code、…

stable diffusion 基础教程-图生图

界面 图生图大概有以下几个功能: 图生图涂鸦绘制局部绘制局部绘制(涂鸦蒙版)其常用的也就上面四个,接下来逐步讲解。 以图反推提示词 图生图可以根据反推提示词来获取相应图片的提示词,目前3种主流方式,如下: CLIP反推提示词:推导出的文本倾向于自然语言的描述方式,…

支持下载和阅读的漫画管理工具Teemii

什么是 Teemii &#xff1f; Teemii 是一款专为狂热漫画读者设计的精简 Web 应用程序。它为阅读和管理漫画集提供了一个简单而高效的平台。主要功能包括跨平台访问、浏览器内阅读、强大的元数据聚合器以及馆藏自动更新。Teemii 是专为那些寻求更加个性化和自主的方法来管理漫画…

论文管理器

论文管理器 这个论文管理器仍然存在许多漏洞。目前&#xff0c;通过按照一些例行程序操作&#xff0c;它可以正常工作。我将在有时间的时候改进代码&#xff0c;提供详细说明&#xff0c;并添加新功能。当该管理器的代码进行优化后&#xff0c;我会上传到github上。 一个建立…

C练习——定期存取并行

题目&#xff1a;假设银行一年整存零取的月息为1.875%&#xff0c;现在某人手头有一笔钱&#xff0c;他打算在今后5年 中&#xff0c;每年年底取出1000元作为孩子来年的教育金&#xff0c;到第5年孩子毕业时刚好取完这笔钱&#xff0c;请编 程计算第1年年初时他应存入银行多少钱…

接口自动化--断言

目标&#xff1a; 1、学习常见的自动化断言方法 2、把自动化断言分装和应用于接口测试 具体内容&#xff1a; 1、学习常见的自动化断言方法 第一类&#xff1a;比较大小和是否相等 而assert可以使用直接使用“”、“!”、“<”、“>”、“>”、"<"…

【数据结构】平衡二叉树

导语 对于二叉搜索树 而言&#xff0c;它的 增、 删 、 改 、 查 的时间复杂度为 O() ~ O(n) 。原因是最坏情况下&#xff0c;二叉搜索树会退化成 线性表 。换言之&#xff0c;树的高度决定了它插入、删除和查找的时间复杂度。 为了对上述缺点进一步优化&#xff0c;设计了一…

【送书活动六期】自我摸索:高质量分文章是如何优化出来的?

自从CSDN有了文章质量分后&#xff0c;大家都力争写出高分文章&#xff0c;尤其是23年年度博客之星的评选&#xff0c;入围标准之一就是文章质量分大于80&#xff0c;更驱使大家追逐高质量分的文章了&#xff0c;这里仅以个人经验&参考他人经验&#xff0c;总结一下。 目录…

.NET 8.0 本机 AOT

在软件开发领域&#xff0c;优化性能和简化效率仍然至关重要。.NET 平台二十年来不断创新&#xff0c;为开发人员提供了构建弹性且高效的软件解决方案的基础架构。 与本机 AOT&#xff08;提前&#xff09;编译相结合&#xff0c;取得了显着的进步。本文深入研究.NET Native AO…

2.HDFS 架构

目录 概述架构HDFS副本HDFS数据写入流程NN 工作原理DN 工作原理 结束 概述 官方文档快递 环境&#xff1a;hadoop 版本 3.3.6 相关文章速递 架构 HDFS HDFS 架构总结如下&#xff1a; a master/slave architecture 一主多从架构a file is split into one or more blocks a…