2020 CCPC Wannafly Winter Camp Day6 Div.1&2——N.合并!【思维】

题目传送门


题目描述

有 ${n} 个石子堆,第 i {i} i 个在一开始有 a i a_i ai 个石子。每次你可以选择两堆相邻的石子 a i , a i + 1 a_i,a_{i+1} ai,ai+1 合并,合并完之后得到的收益为 a i a i + 1 a_ia_{i+1} aiai+1,两堆石子变成一堆有 a i + a j a_i+a_j ai+aj 个石子的堆。
你会一直进行合并操作,直到只剩下一堆石子为止。
求你能得到的最大的收益之和。


输入描述:

第一行一个正整数 n {n} n
第二行 n {n} n 个正整数,表示 a 1... n a_{1...n} a1...n
1 ≤ n , a i ≤ 2000 1\leq n,a_i\leq 2000 1n,ai2000


输出描述:

输出一个数,表示能获得的最大收益


输入

3
1 2 3


输出

11


题解

  • 其实⽆论怎么进⾏合并,最后的答案⼀定是 a [ 1 … n ] a[1…n] a[1n] 两两的乘积之和

AC-Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int maxn = 2005;
int a[maxn];
int main() {
    int n;
    while (cin >> n) {
        for (int i = 1; i <= n; ++i) 
            cin >> a[i];
        ll ans = 0;
        for(int i = 1; i <= n; ++i)
            for(int j = i+1; j <= n; ++j)
                ans += a[i]*a[j];
        cout << ans << endl;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值