首页 > 其他分享 >CF1763C Another Array Problem

CF1763C Another Array Problem

时间:2024-11-24 09:44:17浏览次数:6  
标签:le maxl max 最大值 texttt Another 操作 Array Problem

CF1763C Another Array Problem

题目大意:

有一个数列 \(a\),每次操作可以选择两个位置 \(i,j(1 \le i < j \le n)\),然后把所有位置 \(k(i \le k \le j)\) 的值 \(a_k\) 变成 \(|a_i - a_j|\)。

问若干次操作后,序列的和的最大值为多少?

思路:

序列的和的最大值可以在所有数都等于原序列中的最大值时取到。下令位置 \(x\) 为最大值。

操作一:可以先让区间 \([1,2]\) 进行两次操作使 \(a_1,a_2\) 都变为 \(0\),然后对区间 \([1,x]\) 进行操作;

操作二:然后再让区间 \([n - 1,n]\) 进行两次操作使 \(a_{n - 1},a_n\) 都变为 \(0\),然后对区间 \([1,n]\) 进行操作。

\(\texttt{Tips : }\)当 \(1 \le x \le 2\) 时,先对做操作二。

上为 \(3 < n\) 是的情况,下为特殊情况 \((n \le 3)\):

  • \(\texttt{if n==1}\)
    无法操作,输出 \(a_1\)。
  • \(\texttt{if n==2}\)
    要么操作 \([1,2]\),要么不操作,输出 \(\max(a_1 + a_2, 2 \times |a_1 - a_2|)\)。
  • \(\texttt{if n==3}\)
    • 不操作:\(a_1 + a_2 + a_3\)。
    • 最大值位置不为 \(2\):仍然可以使所有数变为最大值,输出 \(3 \times Maxl\)。
    • 最大值位置为 \(2\):
      • 先操作 \([1,2]\),可以使所有值变为 \(\max(a_2 - a_1, a_3)\),输出 \(3 \times \max(a_2 - a_1, a_3)\)。
      • 先操作 \([2,3]\),可以使所有值变为 \(\max(a_2 - a_3, a_1)\),输出 \(3 \times \max(a_2 - a_3, a_1)\)。

代码:

#include <bits/stdc++.h>
#define ll long long
#define Maxn 200005

using namespace std;

ll T, n, a[Maxn], maxl, x;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	
	cin >> T;
while (T --) {
	cin >> n, maxl = x = -1;
	for (ll i = 1; i <= n; i ++) {
		cin >> a[i], x = (maxl < a[i] ? i : x);
		maxl = max(maxl, a[i]);
	}
	
	if (n == 1) {
		cout << a[1] << "\n";
	} else if (n == 2) {
		cout << max(a[1] + a[2], 2 * (max(a[1], a[2]) - min(a[1], a[2]))) << "\n";
	} else if (n == 3) {
		if (x != 2) { cout << n * maxl << "\n"; }
		else { cout << max({a[1] + a[2] + a[3], 3 * max(a[2] - a[1], a[3]), 3 * max(a[2] - a[3], a[1])}) << "\n"; }
	} else {
		cout << n * maxl << "\n";
	}
} return 0;
}

标签:le,maxl,max,最大值,texttt,Another,操作,Array,Problem
From: https://www.cnblogs.com/BLM-dolphin/p/18565461

相关文章

  • 深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
    目录深入理解JavaScript中的Array.find()方法:原理、性能优势与实用案例详解一、引言:为什么要使用Array.find()二、Array.find()的使用与技巧1、基础语法2、返回值3、使用技巧三、Array.find()的优势与实际应用案例1、利用返回引用的优势修改数据2、查找嵌套数据......
  • Java中的List集合:从ArrayList到CopyOnWriteArrayList
    目录1.List接口简介2.ArrayList2.1基本特性2.2内部实现2.3扩容机制2.4性能考虑2.5代码示例3.LinkedList3.2内部实现3.3性能考虑3.4代码示例4.Vector4.1特性4.2与ArrayList的比较4.3代码示例5.Collections.synchronizedList5.1特性5.2实现原理5.3使......
  • 每日一题:https://codeforces.com/contest/2005/problem/B1
    题目链接:https://codeforces.com/contest/2005/problem/B1(开局看掉m=2和q=1)includeincludeusingnamespacestd;intmain(){longu;cin>>u;for(;u>0;u--){longn;longm,q;longarr1[3];longcha;cin>>n>>m>>q;for(inti=0;i<2;i++){......
  • JS中使用new Array()与使用Array.from()方式创建二维数组的性能比较
    比较1,单次创建小额数组:1.通过newArray()方式functiont(){console.time();newArray(100).fill().map(()=>newArray(10));console.timeEnd();} 执行5次耗时:0.078125ms0.050048828125ms0.0380859375ms0.031005859375ms0.093017578125ms2.......
  • CSC3100 Problem Scale & Subtasks
    RequirementsCode(90%)YoucanwriteyourcodeinJava,Python,C,orC++.Thetimelimitmayvaryamongdifferentlanguages,dependingontheperformanceofthelanguage.Yourcodemustbeacompleteexcutableprograminsteadofonlyafunction.Weg......
  • PHAS0051: Data Analysis Problem
    PHAS0051:DataAnalysisProblemSheet2024/25Page1PHAS0051DataAnalysisProblemSheet2024/25Fourquestionstotalling42marksSubmissiondeadline5pm,Monday21stOctober.SoRAsubmissiondeadline5pm,Wednesday30thOctober.SubmissionviaTurnitinass......
  • Arraylist集合实现以及代码解读
    原理主要把插入后的元素向后移动一位package集合框架.Arraylist;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Objects;importjava.util.Queue;/***如果传入参数执行有参构造方法,进行判断如果intsize等于0那么说明数组为空数组如果大于0那么此......
  • P11022 「LAOI-6」Yet Another Graph Coloration Problem
    P11022「LAOI-6」YetAnotherGraphColorationProblem-洛谷|计算机科学教育新生态(luogu.com.cn)关于无解情况,如果这个图有两块连通块,那么不可能同时有黑色白色,假设\(1,2\)连通块,设\(1\)中有黑色,因为\(2\)中点不能到\(1\),所以\(2\)中只能是黑色,又因为\(2\)中......
  • Problem Set 1 Installing MikTex
    ProblemSet1XXXDue:10/10/2024IntroductionThisdocumentwasproducedbyRusingRMarkdown.Tocompletethisweeksassignment,wewillaskyoutocompleteaseriesofanalyticalandcodingexercises.TheAnalyticalExercisesrequirenocoding,whereasth......
  • 「OC」NSArray的底层逻辑和遍历方法
    「OC」NSArray的底层逻辑和遍历方法文章目录「OC」NSArray的底层逻辑和遍历方法前言NSArray的底层逻辑占位符init后的空NSArray只有单个元素的NSArray大于一个元素的NSArray可变数组NSMutableArray总结图片遍历NSArray1.for循环2.枚举3.for—in4.多线程1.for循环&f......