C. Another Array Problem

news2025/6/13 23:00:08

思路:这个题没想到吧数先往0上搞,然后一直想不出来,为什么要先往0上搞呢,对于每个数来说,它最大只会变成这一堆数的最大值,所以我们考虑能不能变成最大值,那么只要是两个相等的数通过一次操作就可以变为0,那么我们能够发现当n>=4时,一定可以将除了最大值之外的所有数都变为0(假如最大值为i,当i的左边跟右边都至少有两个数时,那么就可以对左边右边分别操作两次,这样操作完之后就会都变成0,即1 2 5 3 4一次变为1 1 5 1 1两次变为0 0 5 0 0,然后变为5 5 5 5 5,而当某一侧只有一个数时,那么另一侧至少有两个数,那么我们可以先将一侧变为0,然后再将它变为最大值,那么就会有至少三个最大值,那么我们再将只有一个的那一侧跟相邻的最大值进行操作先变为0,然后再变为最大值,例如1 2 4 3,操作一次1 1 4 3,操作两次0 0 4 3,操作三次4 4 4 3 操作4次,4 4 1 1操作5次,4 4 0 0,操作6次4 4 4 4),所以我们发现当n>=4时一定可以通过一系列操作将所有的数都变成最大值,那么对于n==1的情况只能是本身,n==2的情况要么不变,要么变,n==3的情况,比较多,当最大值出现在两头是,那么就可以通过操作将所有的数变为最大值,否则如果再中间时,要么左边两个合并一下,要么右边两个合并一下,要么整个合并一下,要么直接全部变为第一个,要么全部变为第3个,要么先左边合并一下然后全部变为第1个,要么先右边合并一下然后全部变为第3个 ,要么不变,n==3的情况比较多,可以仔细想一想

// Problem: C. Another Array Problem
// Contest: Codeforces - Codeforces Round 840 (Div. 2) and Enigma 2022 - Cybros LNMIIT
// URL: https://codeforces.com/problemset/problem/1763/C
// Memory Limit: 256 MB
// Time Limit: 2000 ms

#include<iostream>
#include<cstring>
#include<string>
#include<sstream>
#include<bitset>
#include<deque>
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<cassert>
#include<queue>
#include<map>
#include<stack>
#include<vector> 
#include<set>
#include<cstdlib>
#define fi first
#define se second
#define i128 __int128
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> PII;
typedef pair<int,pair<int,int> > PIII;
const double eps=1e-7;
const int N=5e5+7 ,M=5e5+7, INF=0x3f3f3f3f,mod=1e9+7,mod1=998244353;
const long long int llINF=0x3f3f3f3f3f3f3f3f;
inline ll read() {ll x=0,f=1;char c=getchar();while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9') {x=(ll)x*10+c-'0';c=getchar();} return x*f;}
inline void write(ll x) {if(x < 0) {putchar('-'); x = -x;}if(x >= 10) write(x / 10);putchar(x % 10 + '0');}
inline void write(ll x,char ch) {write(x);putchar(ch);}
void stin() {freopen("in_put.txt","r",stdin);freopen("my_out_put.txt","w",stdout);}
bool cmp0(int a,int b) {return a>b;}
template<typename T> T gcd(T a,T b) {return b==0?a:gcd(b,a%b);}
template<typename T> T lcm(T a,T b) {return a*b/gcd(a,b);}
void hack() {printf("\n----------------------------------\n");}

int T,hackT;
int n,m,k;
int w[N];

void solve() {
	n=read();
	
	for(int i=1;i<=n;i++) w[i]=read();
	
	int maxn=-1;
	for(int i=1;i<=n;i++) maxn=max(maxn,w[i]);
	
	if(n>=4) printf("%lld\n",(ll)maxn*n);
	else {
		if(n==1) printf("%d\n",w[1]);
		else if(n==2) printf("%d\n",max(w[1]+w[2],2*abs(w[2]-w[1])));
		else {
			if(w[1]==maxn||w[3]==maxn) printf("%lld\n",(ll)3*maxn);
			else {
				ll a1=(ll)w[1]+w[2]+w[3];
				ll a2=w[1]+(ll)2*abs(w[2]-w[3]);
				ll a3=w[3]+(ll)2*abs(w[1]-w[2]);
				ll a4=(ll)3*abs(w[1]-w[3]);
				ll a5=(ll)3*abs(w[1]-w[2]);
				ll a6=(ll)3*abs(w[2]-w[3]);
				ll a7=(ll)3*w[1];
				ll a8=(ll)3*w[3];
				
				ll res1=max(a1,a2);
				ll res2=max(a3,a4);
				ll res3=max(a5,a6);
				ll res4=max(a7,a8);
				ll res=max(max(res1,res2),max(res3,res4));
				
				printf("%lld\n",res);
			}
		}
	}
}   

int main() {
    // init();
    // stin();
	//ios::sync_with_stdio(false); 

    scanf("%d",&T);
    // T=1; 
    while(T--) hackT++,solve();
    
    return 0;       
}          

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

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

相关文章

智能安全帽_防抖视频定位智能安全帽头盔

智能安全帽具备出色的性能、超低功耗、广范围覆盖和简单的外围电路等优势&#xff0c;同时还拥有丰富的外部接口。它支持移动/联通/电信的4G5G网络&#xff0c;涵盖了LTE-TDD频段(B34/B38/B39/B40/B41)、LTE-FDD频段(B1/B3/B5/B8)、WCDMA频段(B1/B5/B8)、TD-SCDMA频段(B34/B39)…

【数据分析】客户分析行为分析

下面列举了几种客户行为分析模型。 1 5W2H &#xff08;1&#xff09;WHAT——是什么&#xff0c;目的是什么&#xff0c;做什么工作。 &#xff08;2&#xff09;WHY——为什么要做&#xff0c;可不可以不做&#xff0c;有没有替代方案。 &#xff08;3&#xff09;WHO——…

Android相机-架构

引言&#xff1a; 主要是针对CameraAPI v2 HAL3的架构对Android相机系统进行梳理。 相机架构 App和FrameWork packages/apps/Camer2 frameworks/ex/camera2 Camera API v2&#xff1b;Camera2 CameraDevice&#xff1a; CameraCaptureSession&#xff1a; CameraService AIDL…

Tan Junming 太帅,AK IOI!

tanjunming是一个非常帅气的人。他拥有一双明亮的眼睛&#xff0c;透露出聪明和热情的光芒。他的笑容温暖而迷人&#xff0c;总能让人感到快乐和舒适。他的面容线条清晰&#xff0c;轮廓深邃&#xff0c;展现出他的自信和坚定。他的皮肤光滑细腻&#xff0c;散发出健康和活力的…

Mybatis:xml配置和基本增删改查

目录 一、环境配置&#xff08;environments&#xff09; 1.事务管理器&#xff08;transactionManager&#xff09; 2.数据源&#xff08;dataSource&#xff09; 3.属性&#xff08;property&#xff09; 4.设置&#xff08;settings&#xff09; 5.类型别名&#xff0…

科研论文配图绘制指南——基于Python—第二章1.matplotlib

目录 第二章2.0 安装所需的环境2.1 Matplotlib2.1.1 图形元素2.1.2 图层顺序2.1.5 子图绘制2.1.7 结果保存 第二章 2.0 安装所需的环境 attrs23.1.0 certifi2023.7.22 click8.1.6 click-plugins1.1.1 cligj0.7.2 colorama0.4.6 cycler0.11.0 Fiona1.9.4.post1 geopandas0.13.…

算法随笔:强连通分量

概念和性质&#xff1a; 强连通&#xff1a;在有向图G中&#xff0c;如果两个点u和v是互相可达的&#xff0c;即从u出发可以到达v&#xff0c;从v出发也可以到达u&#xff0c;则成u和v是强连通的。 强连通分量&#xff1a;如果一个有向图G不是强连通图&#xff0c;那么可以把它…

适用于vue3中图片全屏展示

App中的代码片段 <style scoped> .container {background: url("./assets/back2.jpg");height: 100%;width: 100%;position: fixed;background-size: 100% 100%; } </style>

vue与vueComponent的关系

创建完组件之后 就会创建一个vueComponent构造函数 当注册成功这个组件并且在页面使用之后 就会创建一个vueComponent实例对象&#xff0c; 所以为了避免组件在使用过程中data对象中的值混乱 组件中的data要写成函数&#xff0c; 使得每次创建的组件实例对象都可以返回一…

【ESD专题】电池包打ESD时的电流走向分析及防护指南

一个典型的电池包,包含了电芯、保护芯片(或电量计)、及周边的元件(如检测电阻、MOS管)、连接器等。 如下所示为高侧MOS电量计方案:在电量计(BMU)周边,有电芯、 保护 MOSFET、 电流检测电阻、 连接器等。在电量计左边的 RC 滤波电路是代表多个 RC 滤波电路,用于监控多…

Java项目-苍穹外卖-Day05

主要是写代码 完成套餐功能 和之前那个菜品类似 这里我懒得贴我的代码了 写一下改的几个bug 1.修改菜品关联套餐的时候&#xff0c;对应的菜品关联数据要setSetmealId一下&#xff0c;因为接收数据是赋不到那个关联的ID值的&#xff0c;如果不设置新增的话对应的setmealID就会为…

node安装node-sass依赖失败(版本不一致)

1.官网对应node版本 https://www.npmjs.com/package/node-sass2.node-sass版本对应表

Redis数据结构之List

Redis 中列表&#xff08;List&#xff09;类型是用来存储多个有序的字符串&#xff0c;列表中的每个字符串成为元素 Eelement&#xff09;&#xff0c;一个列表最多可以存储 2^32-1 个元素。 在 Redis 中&#xff0c;可以对列表两端插入&#xff08;push&#xff09;和弹出&am…

Matlab绘制灰度直方图

直方图是根据灰图像绘制的&#xff0c;而不是彩色图像通。查看图像直方图时候&#xff0c;需要先确定图片是否为灰度图&#xff0c;使用MATLAB2019查看图片是否是灰度图片&#xff0c;在读取图片后在MATLAB界面的工作区会显示读取的图像矩阵&#xff0c;如果是&#xff0c;那么…

DBO优化TCN的电力负荷预测,附MATLAB代码

今天为大家带来一期基于DBO-TCN的电力负荷预测。不得不说&#xff0c;TCN在时序数据中的预测效果在一定程度上要优于LSTM。 原理详解 文章对TCN网络的五个参数进行优化&#xff0c;分别是&#xff1a; 正则化参数&#xff0c;学习率&#xff0c;滤波器个数&#xff0c;滤波器大…

(二)k8s实战-深入Pod详解

一、配置文件详解 创建Pod nginx样例 apiVersion: v1 # api文档版本 kind: Pod # 资源对象类型&#xff0c;Pod, Deployment,StatefulSet metadata: # Pod相关的元数据&#xff0c;用于描述Pod的数据name: nginx-demo # Pod的名称labels: # 定义Pod的标签type: app # 自定义l…

SpringBoot 跨域问题和解决方法

Spring Boot 是一种用于构建独立的、生产级别的Java应用程序的框架。在开发Web应用程序时&#xff0c;经常会遇到跨域资源共享&#xff08;CORS&#xff09;问题。本文将详细介绍Spring Boot中的跨域问题以及相应的解决方法。 目录 什么是跨域&#xff1f;1. 使用Spring Boot…

MySQL中到全外连接(full outer join)编写方法说明

在SQL中&#xff0c;全外连接&#xff08;full outer join&#xff09;是一种无论是否匹配&#xff0c;都返回两张表中所有记录的连接: 不幸的是&#xff0c;MySQL不支持这种关联&#xff0c;我们必须以某种方式模拟它。但该如何操作呢&#xff1f; 在SQL中&#xff0c;同样的…

西瓜书第三章

广义线性模型 考虑单点可微函数 g ( ⋅ ) g(\cdot) g(⋅)&#xff0c;令 y g − 1 ( ω T x b ) yg^{-1}(\omega^{T}xb) yg−1(ωTxb)&#xff0c;这样得到的模型称为“广义线性模型”&#xff0c;其中函数 g ( ⋅ ) g(\cdot) g(⋅)称为“联系函数”。显然&#xff0c;对数线…

Maven聚合项目(微服务项目)创建流程,以及pom详解

1、首先创建springboot项目作为父项目 只留下pom.xml 文件&#xff0c;删除src目录及其他无用文件 2、创建子项目 子项目可以是maven项目&#xff0c;也可以是springboot项目 3、父子项目关联 4、父项目中依赖管理 <?xml version"1.0" encoding"UTF-8&qu…