备战蓝桥杯---基础算法刷题2

题目有一点水,不过还是有几个好题的,我在这分享一下:

很容易想到先往最高处跳再往最低处跳,依次类推,那怎么保证其正确性呢?

证法1. 在此,我们从0开始,假设可以跳到a,b,c(a<b<c).

那么如果跳到a,体力值(不管平方项)为a^2+(a-b)^2+(b-c)^2

跳到b为b^2+(b-a)^2+(a-c)^2,跳到c为c^2+(c-a)^2+(a-b)^2

我们展开易得跳到c最合适,我们也易将该结论进行推广为:应从先从地面跳到最高柱子。

然后在把最高的当成地面,依次类推即可。

证法2.有h1,h2,....hn个他们高度依次递增,如果第一次跳不到hn,那么我们分两种情况:

1.若hn最后被跳到,那么我们把hn与第一次跳到的位子然后按照反方向跳,这样就增加了hn^2-hi^2,更优。

2.若hn在中间位置被跳到,假设它下一步为hq,然后从第一次跳到的 hp到 hn​ 的跳跃全程反转,第一次跳到的 下一步跳到hq,这样就增加了hn^2+(hp-hq)^2-hp^2-(hn-hq)^2>0,因此更优。

下面为AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,a[500],b[500];
bool cmp(int a,int b){
	return a>b;
}
bool cmp1(int a,int b){
	return a<b;
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=1;i<=n;i++) b[i]=a[i];
	sort(a+1,a+n+1,cmp);
	sort(b+1,b+n+1,cmp1);
	int sum=0;
	int j=1;
	for(int i=1;i<=(n+1)/2;i++){
		sum+=(a[i]-b[i-1])*(a[i]-b[i-1]);
		sum+=(a[i]-b[i])*(a[i]-b[i]);
	}
	cout<<sum;
}

接题:

我们容易想到:从大到小轮着就值最大,比如3个3,3个2,2个1,按照32132132肯定是最优。

下面给出正确性证明(来自某大佬题解):

我们不妨考虑答案的上界:

对于3,最多出现3+3+2次,即其他元素可以提供次数但要取min,于是我们可以得出:

对于元素n,他最多可以选\sum min(ai,an);

对于n和n-1,同理,它可以选\sum min(ai,max(an,an-1))

对于其他ak ,它可以选\sum min(ak,max(an,an-1,...,ak))

而按照刚才的策略即可取到上界。

清楚了策略的来源,我们就不用真的去模拟实现,我们从每一个数的贡献出发,用前缀和就巧妙地实现了,下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
long long n,a[100010],sum[100010],cnt=0;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	int x=0;
	for(int i=n;i>=1;i--){
		if(x>=a[i]){
			cnt+=sum[a[i]];
			continue;
		}
		for(int j=x+1;j<=a[i];j++){
			sum[j]=sum[j-1]+i;
			
		}
		x=a[i];
		cnt+=sum[a[i]];
	}
	cout<<cnt;
}

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

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

相关文章

NUS神经网络生成我感觉解读过于夸大了

网上对其解读有点过了&#xff0c;只是合成了最后标准化层的参数&#xff0c;或者是更多的其他层参数。而不是网络结构。对于新任务下的网络结构以及参数如何生成&#xff0c;应该是做不到的&#xff0c;论文意义有限。 论文片段&#xff1a;我们提出了神经网络扩散&#xff0…

以 All-in-One 模式安装 KubeSphere时避坑

环境 ubuntu 18.04 准备 安装服务插件 socat 必须 可选但建议 conntrack 必须 可选但建议 ebtables 可选但建议 可选但建议 ipset 可选但建议 可选但建议 命令 sudo apt-get install socat安装docker 建议自行安装&#xff0c;不用KubeSphere 自带的 处理服务器配置 1…

1906_ AMBA_高级MCU总线架构

1906_ AMBA_高级MCU总线架构 全部学习汇总&#xff1a; g_arm_cores: ARM内核的学习笔记 (gitee.com) 在看内核相关的文件的时候看到了AMBA这个缩写&#xff0c;查了一下具体的概念。这个其实是一个总线架构&#xff0c;应该是ARM设计的。我找到了相关的介绍网页&#xff1a; A…

基于容器和集群技术的数据自动化采集设计和实现

目标&#xff1a;部署mysql服务容器并使用docker构建包含python爬虫脚本的容器采集数据到mysql数据库。 环境&#xff1a;Centos7、已配置Kubernetes集群及docker。 环境配置请参考以下文章&#xff1a; CentOS7搭建Kubernetes集群 Kubernetes集群信息如下(虚拟机主机名和IP…

浪潮信息服务器蝉联全球第二,中国第一持续领跑

作为服务器领域的专家&#xff0c;浪潮信息多年来持续通过技术创新更新服务&#xff0c;提升产品竞争力&#xff0c;领衔全球服务器市场。根据国际权威研究机构高德纳&#xff08;Gartner&#xff09;公布的《2023年第3季度全球服务器市场追踪报告》可见&#xff0c;2023Q3全球…

Java里常用的集合哪些是线程安全的和不安全的

最近在做一个业务的时候&#xff0c;需要考虑线程的安全性&#xff0c;然后选用集合的时候专门去整理了一下。 线程安全的是: Hashtable&#xff0c;ConcurrentHashMap&#xff0c;Vector &#xff0c;CopyOnWriteArrayList &#xff0c;CopyOnWriteArraySet 线程不安全的是: H…

计算机网络:思科实验【4-生成树协议STP及虚拟局域网VLAN】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;Cisco Packet Tracer实验 本文对应的实验报告源文件请关注微信公众号程序员刘同学&#xff0c;回复思科获取下载链接。 实验目的实验环境实验内容交换机生成树协议**STP**虚拟局域网**VLAN…

vue3个人网站电子宠物

预览 具体代码 Attack.gif Attacked.gif Static.gif Walk.gif <template><div class"pet-container" ref"petContainer"><p class"pet-msg">{{ pet.msg }}</p><img ref"petRef" click"debounce(attc…

FreeRTOS学习第8篇--同步和互斥操作引子

目录 FreeRTOS学习第8篇--同步和互斥操作引子同步和互斥概念实现同步和互斥的机制PrintTask_Task任务相关代码片段CalcTask_Task任务相关代码片段实验现象本文中使用的测试工程 FreeRTOS学习第8篇–同步和互斥操作引子 本文目标&#xff1a;学习与使用FreeRTOS中的同步和互斥操…

01背包问题:组合问题

01背包问题&#xff1a;组合问题 题目 思路 将nums数组分成left和right两组&#xff0c;分别表示相加和相减的两部分&#xff0c;则&#xff1a; left - right targetleft right sum 进而得到left为确定数如下&#xff0c;且left必须为整数&#xff0c;小数表示组合不存在&…

Android Gradle 开发与应用 (一) : Gradle基础

1. Gradle是什么 Gradle是一个通用的构建工具&#xff0c;支持诸多主要的 IDE&#xff0c;包括 Android Studio、IntelliJ IDEA、Visual Studio 等 Gradle 的底层实现(核心引擎和框架)其实是用 Java 编写的开发者通常使用 Groovy 或 Kotlin 来编写构建脚本 1.1 那么为什么Gra…

【JavaScript 漫游】【021】EventTarget 接口

事件的本质是程序各个组成部分之间的一种通信方式&#xff0c;也是异步编程的一种实现。DOM 支持大量的事件。 EventTarget 接口概述 DOM 的事件操作&#xff08;监听和触发&#xff09;&#xff0c;都定义在 EventTarget 接口。所有节点对象都部署了这个接口&#xff0c;其他…

Request 和 Response详解

文章目录 1.Request和Response的概述2.Request对象2.1 Request继承体系2.2 Request获取请求数据2.2.1 获取请求行数据2.2.2 获取请求头数据2.2.3 获取请求体数据2.2.4 获取请求参数的通用方式 2.3 解决post请求乱码问题 掌握学习目标内容讲解内容小结 2.4 Request请求转发 3.HT…

electron+vue3全家桶+vite项目搭建【27】封装窗口工具类【1】雏形

文章目录 引入思路抽出公共声明文件抽出全局通用数据类型和方法主进程模块1.抽离基础常量2.封装窗口工具类 渲染进程模块测试结果 引入 demo项目地址 可以看到我们之前在主进程中的逻辑全部都塞到index.ts文件中&#xff0c;包括窗口的一些事件处理&#xff0c;handle监听&am…

docker 容器访问 GPU 资源使用指南

概述 nvidia-docker 和 nvidia-container-runtime 是用于在 NVIDIA GPU 上运行 Docker 容器的两个相关工具。它们的作用是提供 Docker 容器与 GPU 加速硬件的集成支持&#xff0c;使容器中的应用程序能够充分利用 GPU 资源。 nvidia-docker 为了提高 Nvidia GPU 在 docker 中的…

【PX4SimulinkGazebo联合仿真】在Simulink中使用ROS2控制无人机进入Offboard模式起飞悬停并在Gazebo中可视化

在Simulink中使用ROS2控制无人机进入Offboard模式起飞悬停并在Gazebo中可视化 系统架构Matlab官方例程Control a Simulated UAV Using ROS 2 and PX4 Bridge运行所需的环境配置PX4&Simulink&Gazebo联合仿真实现方法建立Simulink模型并完成基本配置整体框架各子系统实现…

C语言编程安全规范

目的 本规范旨在加强编程人员在编程过程中的安全意识,建立编程人员的攻击者思维,养成安全编码的习惯,编写出安全可靠的代码。 2 宏 2.1 用宏定义表达式时,要使用完备的括号 2.2 使用宏时,不允许参数发生变化 3 变量 3.1 所有变量在定义时必须赋初值 变量声明赋予初值,可…

matlab simulink永磁同步电机pid控制

1、内容简介 略 53-可以交流、咨询、答疑 2、内容说明 略 摘 要 19世纪90年代&#xff0c;美国西屋电气公司研制出了世界上第一台交流同步电机。随着科学技术的迅猛发展和生产工艺的持续进步&#xff0c;在20世纪50年代出现了永磁同步电机。它以永磁体代替电励磁绕组&#…

CSS重点

第一章&#xff1a;CSS类型 1、行内样式 <div style"color:red;font-size:30px;font-weight: 900;font-style: italic;">qcby</div>注意&#xff1a;行内样式&#xff0c;作用力优先级最高&#xff0c;但是不利于html与css的书写以及修改&#xff0c;会…

曲线生成 | 图解B样条曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 控制点计算之插值2 控制点计算之近似3 仿真实现3.1 ROS C实现3.2 Python实现3.3 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(图搜索、采样法、智能算法等)&a…