当前位置: 首页 > article >正文

蓝桥杯准备(前缀和差分)

import java.util.Scanner;
public class qianzhuihe {public static void main(String[] args) {int N,M;Scanner sc=new Scanner(System.in);N=sc.nextInt();M=sc.nextInt();int []trees=new int[N+1];//设为N+1的意义,防止越界int []prefixSum=new int[N+1];for(int i=1;i<=N;i++){trees[i]=sc.nextInt();prefixSum[i]=prefixSum[i-1]+trees[i];//}for(int i=0;i<M;i++){int l=sc.nextInt();int r=sc.nextInt();int cost=prefixSum[r]-prefixSum[l-1];System.out.println(cost);}sc.close();
}}

注意点:为了防止访问越界,使trees[i]从trees[1]开始,使当l=1时不会越界

前缀和优点:增加了空间复杂度,但查询的时间复杂度为O(1),适用于查询次数过多的情况

import java.util.Scanner;public class practise1 {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int []nums=new int[n+1];int []pre=new int[n+1];//自动赋值为0for(int i=1;i<=n;i++){nums[i]=sc.nextInt();pre[i]=pre[i-1]+nums[i];}int sum=0;for(int i=1;i<=n;i++){sum+=nums[i]*(pre[n]-pre[i]);}System.out.println(sum);}
}

注意为了防止溢出:应该使用long类型

贪心算法:掉头最多只能有一次

import java.util.Scanner;
public class i {public  static void main(String[]args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int m=sc.nextInt();//记录最长步数int []left=new int[n];int []right=new int[n];//记录左右矿洞int cnt=0;//记录0出现的次数for(int i=0;i<n;i++){int x=sc.nextInt();if(x<0){left[-x]++;//相当于哈希表,记录该数出现的次数,在输入的数不重复的情况下,最多为1}else if(x>0){right[x]++;}else if(x==0){cnt++;}}for(int i=1;i<=m;i++){//将两个原记录矿石数的数组直接在原基础5上改变成前缀和数组,不用再创建数组浪费空间复杂度left[i]+=left[i-1];right[i]+=right[i-1];//left[i]表达从0-i索引的矿洞的总数量,有一个类似于递归的数组,left[i-1]表达是从0-(i-1)的矿洞的总数量,再加上当前i位置的矿洞的数量}int ans=0;//记录在总步长限制的情况下,最长能经过的矿数for(int i=1;i<=m/2;i++)//一一枚举,表示从0开始,可以向前走1步,到m/2步,贪心算法,最多不回头或者一次回头{int t=right[i];//表示先向右走i步途径的矿洞数if(m-2*i>0){t+=left[m-2*i];}//加上折返路上途径的矿的数量ans=Math.max(t,ans);t=left[i];//表示先向左走if(m-2*i>0){t+=right[m-2*i];}ans=Math.max(t,ans);//再次更新最大值,比较先向右走还是先向左走值更大}System.out.println(ans+cnt);sc.close();}
}

如果前缀和计算到 n

  • n 表示 矿洞的个数,但 矿洞的坐标范围不一定是 n

  • 假设 n = 5,矿洞位置可能是 { -10, -5, 3, 8, 15 },那么 left[i] 需要处理 负数索引,但数组索引不能是负的。

  • 但如果 最大步数 m 只有 6,我们 永远不可能到达 x = -10x = 15,所以 存储它们是浪费的

  • 计算到 n 可能会导致 数组越界或者不必要的存储

  • 如果前缀和计算到 m

  • m最多能走的步数,所以矿洞的前缀和只需要计算到 最多走 m 的范围

  • 假设 m = 6,那么:

    • 左侧矿洞 只有 x ∈ [-6, -5, -4, -3, -2, -1] 才有意义。

    • 右侧矿洞 只有 x ∈ [1, 2, 3, 4, 5, 6] 才有意义。

  • 这样,只计算我们能到达的位置的前缀和,节省空间

相关文章:

蓝桥杯准备(前缀和差分)

import java.util.Scanner; public class qianzhuihe {public static void main(String[] args) {int N,M;Scanner scnew Scanner(System.in);Nsc.nextInt();Msc.nextInt();int []treesnew int[N1];//设为N1的意义&#xff0c;防止越界int []prefixSumnew int[N1];for(int i1;i…...

试用thymeleaf引入vue-element-admin(一)

作为后端程序员&#xff0c;一直使用springbootbootstarp做管理系统&#xff0c;对前端不是太了解&#xff0c;现在感觉bootstarp的admin ui一直不得劲&#xff0c;想切换成前端使用较多的ui&#xff0c;费了老鼻子劲。 我的目的不是前后端分离&#xff0c;而是一个人全栈&…...

Minimind 训练一个自己专属语言模型

发现了一个宝藏项目&#xff0c; 宣传是完全从0开始&#xff0c;仅用3块钱成本 2小时&#xff01;即可训练出仅为25.8M的超小语言模型MiniMind&#xff0c;最小版本体积是 GPT-3 的 17000&#xff0c;做到最普通的个人GPU也可快速训练 https://github.com/jingyaogong/minimi…...

C++11QT复习 (七)

智能指针雏形 **Day7-1 智能指针雏形&#xff1a;独占语义与共享语义****1. 独占语义与共享语义****1.1 Circle 类&#xff1a;示例类** **2. 拷贝构造&#xff1a;独占语义&#xff08;Unique Ownership&#xff09;****2.1 代码解析** **3. 拷贝构造&#xff1a;共享语义&…...

STM32八股【5】----- TIM定时器

1. TIM定时器分类 STM32 的定时器主要分为以下几类&#xff1a; 高级定时器&#xff08;Advanced TIM&#xff0c;TIM1/TIM8&#xff09; 具备 PWM 生成、死区控制、互补输出等高级功能&#xff0c;适用于电机控制和功率转换应用。通用定时器&#xff08;General-purpose TIM…...

单元测试之Arrange-Act-Assert(简称AAA)

Arrange-Act-Assert&#xff08;简称AAA&#xff09;是一种编写单元测试的标准模式&#xff0c;具有清晰的结构和明确的步骤&#xff0c;有助于提高测试的可读性、可维护性和可扩展性。以下是对每个步骤的详细说明&#xff1a; 1. Arrange&#xff08;准备阶段&#xff09; 在…...

厘米级定位赋能智造升级:品铂科技UWB技术驱动工厂全流程自动化与效能跃升”

在智能制造中的核心价值体现在‌高精度定位、流程优化、安全管理‌等多个维度&#xff0c;具体应用如下&#xff1a; 一、‌核心技术与定位能力‌ ‌厘米级高精度定位‌ UWB技术通过‌纳秒级窄脉冲信号‌&#xff08;带宽超500MHz&#xff09;实现高时间分辨率&#xff0c;结合…...

C++刷题(四):vector

&#x1f4dd;前言说明&#xff1a; 本专栏主要记录本人的基础算法学习以及刷题记录&#xff0c;使用语言为C。 每道题我会给出LeetCode上的题号&#xff08;如果有题号&#xff09;&#xff0c;题目&#xff0c;以及最后通过的代码。没有题号的题目大多来自牛客网。对于题目的…...

学习记录706@微信小程序+springboot项目 真机测试 WebSocket错误: {errMsg: Invalid HTTP status.}连接不上

我微信小程序springboot项目 真机测试 websocket 总是报错 WebSocket错误: {errMsg: Invalid HTTP status.}&#xff0c;总是连接不上&#xff0c;但是开发者工具测试就没有问题。 最后解决方案是编码token&#xff0c;之前是没有编码直接拼接的&#xff0c;原因不详。 consol…...

【虚拟仪器技术】Labview虚拟仪器技术应用教程习题参考答案[13页]

目录 第1章 第2章 第3章 第4章 第&#xff15;章 第&#xff16;章 第&#xff17;章 第8章 第1章 1. 简述虚拟仪器概念。 参考答案&#xff1a;虚拟仪器是借助于强大的计算机软件和硬件环境的支持&#xff0c;建立虚拟的测试仪器面板&#xff0c;完成仪器的控制、数…...

【工作梳理】怎么把f12里面的东西导入到postman

postman左上角导入 结果&#xff1a;...

UE5学习笔记 FPS游戏制作34 触发器切换关卡

文章目录 搭建关卡制作触发器传送门显示加载界面 搭建关卡 首先搭建两个关卡&#xff0c;每个关卡里至少要有一个角色 制作触发器传送门 1 新建一个蓝图&#xff0c;父类为actor&#xff0c;命名为portal&#xff08;传送门&#xff09; 2 为portal添加一个staticMesh&#…...

智谱大模型(ChatGLM3)PyCharm的调试指南

前言 最近在看一本《ChatGLM3大模型本地化部署、应用开发和微调》&#xff0c;本文就是讨论ChatGLM3在本地的初步布设。&#xff08;模型文件来自魔塔社区&#xff09; 1、建立Pycharm工程 采用的Python版本为3.11 2、安装对应的包 2.1、安装modelscope包 pip install model…...

新专栏预告 《AI大模型应知应会短平快系列100篇》 - 整体规划设计

做个预告&#xff0c;为系统化梳理AI大模型的发展脉络&#xff0c;并为普及AI素养做一点贡献&#xff0c;特给自己制定了一个小目标&#xff0c;3个月内完成交稿。 AI大模型应知应会短平快系列100篇 - 整体规划设计 一、基础知识模块&#xff08;20篇&#xff09; 1.1 大模型…...

SwanLab Slack通知插件:让AI训练状态同步更及时

在AI模型训练的过程中&#xff0c;开发者常常面临一个难题&#xff1a;如何及时跟踪训练状态&#xff1f;无论是实验超参数的调整、关键指标的变化&#xff0c;还是意外中断的告警&#xff0c;传统的监控方式往往依赖手动刷新日志或反复检查终端&#xff0c;这不仅效率低下&…...

收集 的 JavaScript 数组方法表格

这个表格可以作为数组方法的快速参考指南 方法名对应版本功能原数组是否改变返回值类型concat()ES5-合并数组&#xff0c;并返回合并之后的新数组nArrayjoin()ES5-使用分隔符&#xff0c;将数组转为字符串并返回nStringpop()ES5-删除最后一位&#xff0c;并返回删除的数据yAny…...

操作系统高频(六)linux内核

操作系统高频&#xff08;六&#xff09;linux内核 1.内核态&#xff0c;用户态的区别⭐⭐⭐ 内核态和用户态的区别主要在于权限和安全性。 权限&#xff1a;内核态拥有最高的权限&#xff0c;可以访问和执行所有的系统指令和资源&#xff0c;而用户态的权限相对较低&#x…...

位置编码汇总 # 持续更新

看了那么多还没有讲特别好的&#xff0c;GPT老师讲的不错关于三角函数编码。 一、 手撕transformer常用三角位置编码 GPT说&#xff1a;“低维度的编码&#xff08;例如&#xff0c;第一个维度&#xff09;可以捕捉到大的位置差异&#xff0c;而高维度的编码则可以捕捉到小的细…...

电阻(Resistor)详解

一、电阻的定义与核心作用 电阻是电子电路中用于 限制电流、分压、调节信号电平、消耗功率 的基础被动元件&#xff0c;其阻值&#xff08;Resistance&#xff09;单位为欧姆&#xff08;Ω&#xff09;。其核心作用可归纳为&#xff1a; 限流保护&#xff1a;防止元器件过电流…...

DaVinci Resolve19.1下载:达芬奇调色中文版+安装步骤

如大家所了解的&#xff0c;DaVinci Resolve中文名为达芬奇&#xff0c;是一款专业视频编辑与调色软件。它最初以调色功能闻名&#xff0c;但经过多年发展&#xff0c;已扩展为一套完整的后期制作解决方案&#xff0c;涵盖了剪辑、视觉特效、动态图形和音频后期制作等多个模块。…...

文件IO 2

补充一些用到前面没提到的方法 isDirectory()方法&#xff0c;检查一个对象是否是文件夹&#xff0c;是true不是false isFile()方法&#xff0c;检测一个对象是否为文件,是true不是false 文件的读写操作实践 上一篇大致讲了文件读写操作的基本操作&#xff0c;下面是实践时…...

【Word】批注一键导出:VBA 宏

&#x1f4cc; VBA 宏代码实现 下面是完整的 VBA 代码&#xff0c;支持&#xff1a; 自动创建新文档&#xff0c;并将当前 Word 文档的所有批注导出。批注格式清晰&#xff0c;包括编号、作者、日期和批注内容。智能检测&#xff0c;如果当前文档没有批注&#xff0c;则提示用…...

《深度洞察:MySQL与Oracle中游标的性能分野》

在数据库管理的复杂领域中&#xff0c;游标作为一种强大的工具&#xff0c;用于对数据进行逐行处理&#xff0c;为许多复杂的数据操作提供了解决方案。然而&#xff0c;当涉及到MySQL和Oracle这两大主流数据库时&#xff0c;游标在性能表现上存在着显著的差异。深入理解这些差异…...

LINUX 1

快照 克隆&#xff1a;关机状态下&#xff1a;长时间备份 uname 操作系统 -a 获取所有信息 绝对路径 相对路径 -a -l 列表形式查看 -h 查看版本 相对路径这个还没太搞懂 LS -L LL 简写 显示当前路径 pwd cd 切换到目录 clear 清屏 reboot 重启操作系统...

高效定位 Go 应用问题:Go 可观测性功能深度解析

作者&#xff1a;古琦 背景 自 2024 年 6 月 26 日&#xff0c;阿里云 ARMS 团队正式推出面向 Go 应用的可观测性监控功能以来&#xff0c;我们与程序语言及编译器团队携手并进&#xff0c;持续深耕技术优化与功能拓展。这一创新性的解决方案旨在为开发者提供更为全面、深入且…...

【Windows】win10系统安装.NET Framework 3.5(包括.NET 2.0和3.0)失败 错误代码:0×80240438

一、.NET3.5(包括.NET 2.0和3.0)安装方式 1.1 联网安装(需要联网,能访问微软,简单,很可能会失败) 1.2 离线安装-救急用(需要操作系统iso镜像文件,复杂,成功几率大) 二、联网安装 通过【控制面板】→【程序】→【程序和功能】→【启用或关闭Windows功能】 下载过程…...

蓝桥杯训练士兵

思路&#xff1a;其实每次就是要比较士兵单独训练的价格之和SUM与S的大小&#xff0c;如果 SUM大&#xff0c;那么就减去所有士兵都要训练的次数的最小值&#xff0c;SUM再更新一下&#xff0c;继续比较。 先对士兵的次数按从小到大的次序排序&#xff08;很重要&#xff09;&…...

Java基础-27-多态-多态好处和存在的问题

在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;多态是一个非常重要的概念。它能够让我们用统一的方式处理不同类型的对象&#xff0c;提升代码的灵活性和可扩展性。Java 作为一种面向对象的编程语言&#xff0c;充分支持多态&#xff0c;并在实际开发中提供了巨大的…...

循环神经网络 - 简单循环网络

本文我们来学习和了解简单循环网络(Simple Recurrent Network&#xff0c;SRN)&#xff0c; SRN是一个非常简单的循环神经网络&#xff0c;只有一个隐藏层的神经网络。 简单循环神经网络&#xff0c;也常称为 Elman 网络&#xff0c;是最基本的循环神经网络&#xff08;RNN&am…...

Linux 企业项目服务器组建(附脚本)

一、架构概述​ 本方案旨在为企业搭建一套高效、安全的 Linux 服务器架构&#xff0c;包含一台 DNS 服务器&#xff0c;以及一台同时承载 FTP 和 Samba 服务的服务器&#xff0c;满足公司在域名解析、图片存储与共享、文件共享等方面的业务需求。​ 二、服务器部署​ DNS 服…...