首页 > 试题广场 >

牛牛的魔法值

[编程题]牛牛的魔法值
  • 热度指数:829 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛最近在和牛毕学习魔法,牛毕说每一个魔法都对应一个n维空间,用()表示。

成为一个伟大的牛魔法师的第一件事情是计算每个魔法的魔法值,然后挑选适合自己的魔法进行学习。
牛毕对牛牛说计算魔法值很简单就是对于每一个子连续维度空间计算出它的子维度魔法值,然后所有子维度魔法值中的最大值就能表示该魔法的最大威力,故其为该魔法的魔法值。

  • 一个子连续维度空间是指下标连续,例如一个n维空间(),()就是它的一个子连续空间而()不是。
  • 一个子连续维度空间的子维度魔法值是,这个空间的最高维度异或次高维度的值。例如(1,8,4)的维度魔法值就是8异或4等于12
  • 牛牛计算的魔法其对应的n维空间的坐标是不重复的,即对于任意一对.

输出魔法值

示例1

输入

10,[3,7,0,9,6,5,8,4,1,2]

输出

15
示例2

输入

5,[0,7,2,5,9]

输出

14

备注:
给定a数组,数组下标从0开始。
 
头像 未来0116
发表于 2021-08-25 21:15:58
一.题目描述NC574牛牛的魔法值求一个数组中每个连续子段中最大值和次最大值的异或值的最大值二.算法(模拟)我们可以枚举数组中每个元素,将其作为次大值,因为它所在的连续子段中只存在一个最大值,可以去寻找右边第一个比它大的元素和左边边第一个比它大的元素,分别进行将枚举的元素和左右边最大值异或运算,得到 展开全文
头像 AimerAimer
发表于 2021-10-02 14:56:39
题意:给定一个数组,每个元素的值不重复。       对于每一个子连续区间,它的值是该子连续区间最大值与次大值的异或值。         遍历每个子连续区间,使异或值最大。 方法一: 展开全文
头像 Peterliang
发表于 2021-09-14 12:57:12
题意分析 给出一个序列,这个序列的数字都是不一样的,我们需要找出所有的子序列里面的最大值和次大值的异或的结果中的最大值。 思路分析 题目的意思已经很明显了。我们需要找到最大值和次大值。但是我们发现数据范围太大,直接暴力会被TLE。所以,我们要相办法进行优化。我们发现,在我们直接暴力枚举的时候, 展开全文
头像 leehom
发表于 2021-08-17 17:33:14
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 表示是几维空间 * 展开全文
头像 球球了给孩子一个offer吧
发表于 2021-08-19 18:59:37
题目:求一个序列中每个连续子段中最大值异或次大值的最大值方法一:双指针暴力查找如果枚举每个元素作为最大值,则找次大值的时间复杂度比较高,因此,枚举序列中每个元素作为次大值,则在它所在的连续子段中,只有一个元素比它大,寻找左边第一个比它大的元素和右边第一个比它大的元素,分别进行异或运算得到这个连续子段 展开全文
头像 牛客487943642号
发表于 2021-08-14 15:15:29
题目描述 根据题意可知: 有长度为n的一维数组,数组值不重复,即对于任意一对(i,j),a[i] != a[j] 对于数组的某个连续子数组a[i,j]来说,a[i,j]区间内的最大值与次大值的异或结果为该子数组的魔法值 数组的魔法值为其所有子数组魔法值中的最大值 求数组的魔法值 示例:输入:10, 展开全文
头像 ThinkofBlank
发表于 2020-05-18 16:02:41
题目大意: 给你一个长度为n的序列,问你,这个序列的所有连续子序列中,子序列的最大值和次大值的异或和最大是多少? 分析: 我们直接枚举所有连续子序列肯定布星,我们换一个枚举方向。 我们考虑枚举子序列的次大值,那么,我们只需要找到一个当前枚举的点的值大的那个点作为最大值即可。 我们注意到,因为我们枚举 展开全文
头像 佛系的华夫饼
发表于 2023-04-30 17:17:09
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param n int整型 表示是几维空间 # @param a int整型一维数组 表示n维空间的坐标 # @return int整型 # class Solution: def solve( 展开全文
头像 胡澳治
发表于 2021-11-26 10:03:23
题目要求的是所有连续子序列中最大值和次最大值的异或值中的最大值。 我们可以遍历数组中某个元素作为次最大值,那么所有以该元素为次最大值的子序列的最大值只能是该元素左或右第一个比它大的数,只有这两种可能。 class Solution { public: /** * 代码中的类名、方 展开全文
头像 摸鱼学大师
发表于 2021-08-23 13:14:07
思路: 题目的主要信息: 数组a长度为n,且数字不重复,数组长度不为0 对于数组的某个连续子数组而言,区间内的最大值与次大值的异或值为该子数组的魔法值 整个数组中所有子区间的魔法值的最大值就是数组的魔法值,求这个值 方法一:数组模拟单调队列具体做法:如果我们找到了一个区间的最大值想要再找到次大值 展开全文

问题信息

难度:
4条回答 3363浏览

热门推荐

通过挑战的用户

查看代码
牛牛的魔法值