列表

详情


NC21841. 牛牛玩平板

描述

牛牛和牛妹喜欢玩平板游戏,游戏一开始屏幕上会出现很多个图形,玩家在每一轮可以合并两个图形,当只有一个图形的时候游戏结束,每个图形都有一个大小,合并完成后的图形的大小为x+y,x和y分别为合并之前的两个图形,与此同时,玩家会获得x*y的分数。
牛牛和牛妹新开了一盘游戏,屏幕上出现了n个图形,每个图形的大小已知,请算出牛牛和牛妹最大能获得的分数

输入描述

第一行输入一个整数n ()
第二行输入n个整数范围在1到100之间

输出描述

输出一个整数

示例1

输入:

3
1 2 3

输出:

11

示例2

输入:

2
3 4

输出:

12

示例3

输入:

3
2 2 2

输出:

12

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Java 解法, 执行用时: 51ms, 内存消耗: 10916K, 提交时间: 2023-08-11 16:50:03

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int []arr = new int[a];
		int res = 0;
		for (int i = 0; i < a; i++)
			arr[i]=sc.nextInt();
		for (int i = 1; i < a; i++) {
			res+=arr[i]*arr[i-1];
			arr[i]+=arr[i-1];
		}
		System.out.println(res);
	}
}

Python3 解法, 执行用时: 40ms, 内存消耗: 4604K, 提交时间: 2023-08-11 16:49:29

n = int(input())
m = [int(v) for v in input().split()]

res = l = 0  # l是前缀和
for j in range(1, n):
    l = m[j-1] + m[j]
    res += m[j-1] * m[j]
    m[j] = l
print(res)

上一题