备战蓝桥杯---基础算法刷题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;
}

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

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

相关文章

UE学习笔记-- bUseUnity 加速编译 及 踩坑记录

前言 在写 UE 项目时&#xff0c;使用 VS 2022 进行编译&#xff0c;发现编译不过。 原因是少了头文件&#xff0c;导致某些了类型缺失。 问题发现 但是很奇怪的是&#xff0c;以前编译没问题&#xff0c;在原本应该出问题的 cpp 文件里面加了一行注释之后&#xff0c;编译就…

嵌入式学习day25 Linux

进程基本概念: 1.进程: 程序&#xff1a;存放在外存中的一段数据组成的文件 进程&#xff1a;是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态查看当前系统中的所有进程信息&#xff08;根据CPU占用率排序&a…

查看仓库版本记录

打开命令行窗口 输入git log即可。 若发现分支不对&#xff0c;方法如下 查看项目目录&#xff0c;命令行输入dir可以查看 多个moudel&#xff0c;进入到需要查版本记录的moudel下 命令行输入cd .\文件名如wowo-win-server\ 切换到wowo-win-server文件夹下后&#xff0c;再输入…

C语言内存管理-C进程内存布局

C进程内存布局 任何一个程序&#xff0c;正常运行都需要内存资源&#xff0c;用来存放诸如变量、常量、函数代码等等。这些不同的内容&#xff0c;所存储的内存区域是不同的&#xff0c;且不同的区域有不同的特性。因此我们需要研究C语言进程的内存布局&#xff0c;逐个了解不…

sonar-java 手写一个规则-单元测试分析

前言 最近做项目&#xff0c;定制sonar规则&#xff0c;提高Java代码质量&#xff0c;在编写的sonar规则&#xff0c;做验证时&#xff0c;使用单元测试有一些简单的心得感悟&#xff0c;分享出来。 自定义规则模式 sonar的自定义规则很简单&#xff0c;一般而言有2种模式可…

MySQL多实例与Mycat分布式读写分离的架构实践

文章目录 1.Mycat读写分离分布式架构规划2.在两台服务器中搭建八个MySQL实例2.1.安装MySQL软件2.2.创建每个MySQL实例的数据目录并初始化2.3.准备每个实例的配置文件2.4.准备每个实例的启动脚本2.6启动每台机器的MySQL多实例2.7.为每个MySQL实例设置密码2.8.查看每个MySQL实例的…

使用GPT生成python图表

首先&#xff0c;生成一脚本&#xff0c;读取到所需的excel表格 import xlrddata xlrd.open_workbook(xxxx.xls) # 打开xls文件 table data.sheet_by_index(0) # 通过索引获取表格# 初始化奖项字典 awards_dict {"一等奖": 0,"二等奖": 0,"三等…

three中界面交互gui.js库的使用

gui.js库(可视化改变三维场景) dat.gui.js说白了就是一个前端js库&#xff0c;对HTML、CSS和JavaScript进行了封装&#xff0c;学习开发的时候&#xff0c;借助dat.gui.js可以快速创建控制三维场景的UI交互界面&#xff0c;你打开课件中案例源码体验一下就能感受到。 学习dat…

一元函数微分学——刷题(22

目录 1.题目&#xff1a;2.解题思路和步骤&#xff1a;3.总结&#xff1a;小结&#xff1a; 1.题目&#xff1a; 2.解题思路和步骤&#xff1a; 由于是极坐标方程&#xff0c;所以这个式子一定成立&#xff1a; 然后代入r即可变为参数方程的求导&#xff1a; 3.总结&#xff…

【Linux运维系列】vim操作

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

linux系统消息中间件rabbitmq普通集群的部署

rabbitmq普通集群的部署 普通集群准备环境查询版本对应安装rabbitmq软件启动创建登录用户开启用户远程登录查看端口 部署集群创建数据存放目录和日志存放目录:拷⻉erlang.cookie将其他两台服务器作为节点加⼊节点集群中查看集群状态创建新的队列 普通集群准备环境 配置hosts⽂件…

Matlab自学笔记二十七:详解格式化文本sprintf各参数设置方法

1.一个程序引例 上篇文章已经介绍了格式化文本的初步应用&#xff0c;程序示例如下&#xff1a; sprintf(|%f\n|%.2f\n|%8.2f,pi*ones(1,3)) 2.格式化操作符各字段的含义解析 格式化操作符可以有六个字段&#xff0c;只有主字符%和转换格式是必需的&#xff0c;其他都是可选…

数据库安全性与完整性设计

文章标签集合[数据库安全,数据敏感,通信安全,MD5,盐加密] 1 系统设计 1.1设计目标 &#xff08;1&#xff09;确定系统中需要保护的敏感数据和通信内容&#xff1b; &#xff08;2&#xff09;设计合适的签名、加密和解密算法&#xff1b; &#xff08;3&#xff09;实现…

【前端素材】推荐优质后台管理系统Uena平台模板(附源码)

一、需求分析 后台管理系统&#xff08;或称作管理后台、管理系统、后台管理平台&#xff09;是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成&#xff0c;为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

DAY33--learning English

一、积累 1.testify 2.sanctuary 3.assauslt 4.grocery 5.peg 6.figure 7.carton 8.bruise 9.dangle 10.script 11.lad 12.manipulate 13.molecule 14.shuttle 15.gutter 16.drastic 17.wag 18.rear 19.nail clipper 20.cereal 二、练习 1.牛津原译 Testify v. /ˈtestɪfaɪ…

通配符证书的作用

通配符证书是一种 SSL/TLS 证书&#xff0c;可用于保护多个域&#xff08;主机&#xff09;&#xff0c;由域名字段中的通配符 (*) 指示。这种证书主要用于具有许多子域的组织。通配符证书对主域及其所有一级子域有效。例如&#xff0c;一个针对 *.example.com 的通配符证书可以…

CleanMyMac2024一款备受赞誉的mac电脑垃圾清理软件

在数字世界中&#xff0c;我们的Mac不仅仅是一台电脑&#xff0c;更是我们工作、娱乐和生活的得力助手。然而&#xff0c;随着时间的推移&#xff0c;系统垃圾、无用文件和缓存不断堆积&#xff0c;让Mac变得迟钝&#xff0c;甚至威胁到我们的数据安全。此刻&#xff0c;您需要…

linux---nginx基础

目录 一、Nginx的概念 二、Nginx常用功能 1、HTTP(正向)代理&#xff0c;反向代理 1.1正向代理 1.2 反向代理 2、负载均衡 2.1 轮询法&#xff08;默认方法&#xff09; 2.2 weight权重模式&#xff08;加权轮询&#xff09; 2.3 ip_hash 3、web缓存 三、基础特性 四…

Centos配置SSH并禁止密码登录

CentOS8 配置SSH使用密钥登录并禁止密码登录 一、概念 SSH 为 Secure Shell 的缩写,SSH 为建立在应用层基础上的安全协议。SSH 是较可靠&#xff0c;专为远程登录会话和其他网络服务提供安全性的协议。 SSH提供两个级别的认证&#xff1a; 基于口令的认证 基于密钥的认证 基本使…

【Java程序员面试专栏 算法思维】二 高频面试算法题:二分查找

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊二分查找,包括基础二分,寻找目标值的左右边界,搜索旋转数组以及波峰,以及x的平方根问题,所以放到一篇Blog中集中练习 题目关键字解题思路时间空…