C. Another Array Problem

思路:这个题没想到吧数先往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.mzph.cn/news/48258.shtml

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

相关文章

关于JSONObject以及JSONArray对象的相关转化

1.JSONObject转换为Map对象 public static Map<String,Object> transformJsonToMap(JSONObject jsonObject){Map<String,Object> mapObj new HashMap<>();//循环转换for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {mapObj.put(ent…

xcode14.3更新一系列问题

1. Missing file libarclite_iphoneos.a (Xcode 14.3) 解决方法 Xcode升级到14.3后编译失败&#xff0c;完整错误日志&#xff1a; File not found: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneo…

C语言好题解析(四)

目录 选择题一选择题二选择题三选择题四选择题五编程题一 选择题一 已知函数的原型是&#xff1a; int fun(char b[10], int *a); 设定义&#xff1a; char c[10];int d; &#xff0c;正确的调用语句是&#xff08; &#xff09; A: fun(c,&d); B: fun(c,d); C: fun(&…

Android 9系统源码_SystemUI(十)SystemUIVisibility属性

前言 在Android系统中&#xff0c;很多应用都需要根据具体情况来控制状态栏和导航栏的显示和隐藏&#xff0c;又或者将状态栏透明&#xff0c;实现诸如沉浸式、全面屏灯效果&#xff0c;而要实现这些效果&#xff0c;都离不开SystemUIVisibility属性。由于SystemUIVisibilityy…

jvm 运行时数据区

Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁 1.1程序计数器 程序计数器也叫pc寄存器 可以看作是当前线程…

OLAP 和 OLTP区别

OLAP 和 OLTP 1、概述2、处理数据类型3、处理数据模式4、性能要求5、数据安全性6、应用场景7、结论 1、概述 OLAP在线分析处理&#xff08;Online Analytical Processing&#xff09; 是一种计算机处理数据的方式&#xff0c;主要用于处理企业级的决策分析、战略分析以及业务分…

Java进阶(4)——结合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化

目录 引出类什么时候被加载JVM中创建对象几种方式1.new 看到new : new Book()2.反射 Class.forName(“包名.类名”)如何获取Class对象【反射的基础】案例&#xff1a;连接数据库方法 3.克隆&#xff08;拷贝&#xff09;clone浅拷贝深拷贝案例 序列化和反序列化对象流-把对象存…

【面试题】前端面试复习6---性能优化

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 性能优化 一、性能指标 要在 Chrome 中查看性能指标&#xff0c;可以按照以下步骤操作&#xff1a; 打开 Chrome 浏览器&#xff0c;并访问你想要测试…

lvs-DR

lvs-DR数据包流向分析 client向目标VIP发出请求。 DIR根据负载均衡算法一台active的RS&#xff08;RIR1&#xff09;&#xff0c;将RIP1所在的网卡的mac地址作为目标的mac地址&#xff0c;发送到局域网里。 RIRI在局域网中的收到这个帧&#xff0c;拆开后发现目标&#xff08…

C++类模板的特化(三)

本文主要介绍类模板的特化、局部特化和缺省模板实参&#xff1b; 1.类模板的特化 类模板的特化&#xff08;Class Template Specialization&#xff09;是指为特定的模板参数提供自定义实现的过程。通过特化&#xff0c;我们可以针对某些特定的类型或条件提供不同的行为或实现…

dart基础类型与方法使用

dart基础类型与方法使用 类型及方法 字符串、数字、列表、集合、映射&#xff0c;及列表、集合、映射相互转换 void foo() {var toly Person(xiaoming);toly.say();var bm toly.bmi(height: 170, weight: 60);print(bm);toly.logNumFunc(-100.5);toly.logStrFunc(你好.abd…

IPEmotion交流电功率分析计算

一 应用背景 随着国内电动汽车行业的快速发展&#xff0c;在相同的道路环境和行驶状态下&#xff0c;增加电动车的整体续航里程和提升乘员对于行驶途中用电需求的满意度尤为重要。对此&#xff0c;需要采集试验过程中交直流电压电流信号&#xff0c;以计算出车辆各种部件输出和…

Docker容器与虚拟化技术:Docker镜像创建、Dockerfile实例

目录 一、理论 1.Docker镜像的创建方法 2.Docker镜像结构的分层 3.Dockerfile 案例 4.构建Systemctl镜像&#xff08;基于SSH镜像&#xff09; 5.构建Tomcat 镜像 6.构建Mysql镜像 二、实验 1.Docker镜像的创建 2. Dockerfile 案例 3.构建Systemctl镜像&#xff08;…

redis的应用场景

Redis最适合所有数据in-momory的场景&#xff0c;虽然Redis也提供持久化功能&#xff0c;但实际更多的是一个disk-backed的功能&#xff0c;跟传统意义上的持久化有比较大的差别&#xff0c;那么可能大家就会有疑问&#xff0c;似乎Redis更像一个加强版的Memcached&#xff0c;…

大数据平台需要做等保测评吗?怎么做?

大数据时代的数据获取方式、存储规模、访问特点、关注重点都有了很大不同&#xff0c;所以保证大数据平台数据安全尤其重要。因此不少人在问&#xff0c;大数据平台需要做等保测评吗&#xff1f;怎么做&#xff1f; 大数据平台需要做等保测评吗&#xff1f; 大数据平台是需要做…

数据结构之——(手撕)顺序表

本章会介绍的知识点如下图&#xff1a; 1&#xff1a; 顺序表的概念&#xff1a;顺序表是用一段物理地址连续的存储单元依次存储数据的线性结构&#xff0c;通常我们使用数组来表示&#xff0c;对数组进行增删查改。 顺序表的结构&#xff1a;逻辑结构与物理结构都是内存中一块…

AI Agent在情景猜谜场景下的AgentBench基准测试

目录 AgentBench评估哪些场景? 近日,来自清华大学、俄亥俄州立大学和加州大学伯克利分校的研究者设计了一个测试工具——AgentBench,用于评估LLM在多维度开放式生成环境中的推理能力和决策能力。研究者对25个LLM进行了全面评估,包括基于API的商业模型和开源模型。 他们发现…

数字人学习目录

数字人学习目录 百度PaddlePaddleHub图像风格迁移模型pp-tinypose模型 PaddleGANPaddleLitePaddleDetectionPP-TinyPose 人体骨骼关键点识别 PaddleSpeechVisualDLPaddleBobo TransformerWav2LibCLIPFFMpeg模型库数据集学习天地PythonJupyter Notebook Unity3DUE 百度Paddle P…

docker之Consul环境的部署

目录 一.Docker consul的介绍 1.1template模板(更新) 1.2registrator&#xff08;自动发现&#xff09; 1.3agent(代理) 二.consul的工作原理 三.Consul的特性 四.Consul的使用场景 五.搭建Consul的集群 5.1需求 5.2部署consul 5.3主服务器[192.168.40.20] 5.4client部署&…

华为OD-最大括号深度

题目描述 一个合法的括号匹配序列有以下定义: 1、空串""是一个合法的括号匹配序列 2、如果"X"和"Y"都是合法的括号匹配序列,"XY"也是一个合法的括号匹配序列 3、如果"X"是一个合法的括号匹配序列,那么"(X)"也是一…