DAY2 - T2 保卫地球

T2:保卫地球

题目

题目描述

章北蚤想创建完银河战队,要用它保护地球
现在有一个长度为 n 的数组,将其分成 k 部分 记每段的最大值为 b1,b2...,bk
先要使得 b1b2+b1b3+...+b1bk+b2b3+b2b4+...+...+bk-1bk 最大

输入

输入文件为 protect.in。 第一行包含两个整数 n,k 第二行包含 n 个整数

输出

输出文件为 protect.out。
共一行一个数

样例

8 7
1 2 3 4 5 6 7 8
511

数据

对于前 20%的数据,满足 k=2
对于另外 40%的数据,满足 n<=20,k<=7 对于 100%的数据,满足 n<=40,k<=20,ai<=10

题解

模拟

排序 /不正经/

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

int n, k, a[41], p[41];

int main(){
    scanf("%d%d", &n, &k);
    for(int i = 1; i <= n; i++){
        scanf("%d", &a[i]);
    }
    sort(a+1, a+n+1);
    for(int i = 1; i <= k; i++){
        p[i] = a[n-i+1];
    }
    sort(p+1, p+k+1);
    int num = 0;
    for(int i = k; i >= 2; i--){
        int q = 0;
        for(int j = i-1; j >= 1; j--){
            q += p[i]*p[j];
        }
        num += q;
    }
    printf("%d\n", num);
    return 0;
}

DFS

posted @ 2020-08-04 12:02  LT-Y  阅读(91)  评论(0)    收藏  举报