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

小苯的数组构造-------牛客小白月赛87(e)

题目描述

大白熊给了小苯一个长度为 nnn 的数组 aaa,他希望小苯将数组 aaa 变成有序(非递减)的。具体的,小苯需要进行如下操作:

  1.任选一个数组 bbb,长度也为 nnn,且元素满足:−10^10≤bi≤10^10

   2. 对于所有 1≤i≤n1 \le i \le n1≤i≤n,都执行 ai=ai+bia_i = a_i + b_iai​=ai​+bi​。

大白熊希望在执行完操作后 aaa 数组满足有序,同时要最小化数组 bbb 的极差,即使得:max(b1,b2,...,bn)−min(b1,b2,...,bn)最小 。

请你帮小苯找出一个合法的 b 数组吧。

注:如有多解输出任意即可。

输入描述:

输入包含两行。
第一行一个正整数 n(1≤n≤2×10^5)表示 a 的长度。
第二行 nnn 个整数 ai(−10^9≤ai≤10^9),表示数组 a 的元素。

输出描述:

输出包含一行 n 个整数,表示构造出的 b 数组(有多解输出任意即可)。

如果找不到合法的 b 数组,请输出一个整数 −1。

示例1

输入

2
1 2

输出

114514 114514

说明

可以构造 b=[114514,114514]这样 b 的极差为 0,可以证明不存在比 0 更小的极差。

备注:

数组的极差 = 数组中的最大值减去最小值。

题意: 

给出一个a数组 ,通过b数组构造去让a数组变成一个有序的数列,通过b数组里的数构造通过a[i] = a[i] + b[i] 去构造。

思路:

三种情况,第一种可加可减,第二种固定就是减,第三种固定就是加。我们选择最简单的办法,就是只让他加。如果当前的 ai 小于 ai-1 那么就想办法加上一个数使他等于 ai-1,公式就是b[i] = a[i-1] - a[i]。 


 AC代码:

#include <bits/stdc++.h>using namespace std;const int N = 2e5+10;
long long a[N],b[N];
int n;int main()
{cin >> n;for(int i=0;i<n;i++) cin >> a[i];for(int i=1;i<n;i++){if(a[i] < a[i-1]){b[i] = a[i-1] - a[i];a[i] = a[i-1];}}for(int i=0;i<n;i++){cout << b[i] << ' ';}return 0;
}

相关文章:

  • 【Pytorch深度学习开发实践学习】B站刘二大人课程笔记整理lecture04反向传播
  • 网站常见的攻击类型有什么,如何针对性防护
  • 消息中间件-面试题
  • 安宝特AR汽车行业解决方案系列1-远程培训
  • 量子计算:数据安全难题
  • java和javascript的区别与联系
  • 基于springboot实现的音乐网站
  • java项目 maven高级分模块设计
  • C++ new 和 malloc 的区别?
  • QT的UI入门
  • 2024牛客寒假算法基础集训营4
  • 新手搭建服装小程序全攻略
  • springMVC第一天
  • 统计zabbix指定日期内的告警数量
  • C陷阱和缺陷--第二章 “语法陷阱”
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 230. Kth Smallest Element in a BST
  • ES6--对象的扩展
  • FastReport在线报表设计器工作原理
  • JS题目及答案整理
  • Terraform入门 - 3. 变更基础设施
  • v-if和v-for连用出现的问题
  • vue--为什么data属性必须是一个函数
  • 二维平面内的碰撞检测【一】
  • 关于Flux,Vuex,Redux的思考
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 我的面试准备过程--容器(更新中)
  • 一个完整Java Web项目背后的密码
  • AI算硅基生命吗,为什么?
  • UI设计初学者应该如何入门?
  • 阿里云服务器如何修改远程端口?
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • #define
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (C++17) optional的使用
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十三)Flask之特殊装饰器详解
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)大型网站的系统架构
  • ./和../以及/和~之间的区别
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net 受管制代码
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .Net的DataSet直接与SQL2005交互
  • .NET中使用Protobuffer 实现序列化和反序列化
  • .so文件(linux系统)
  • @Autowired注解的实现原理