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
    没有未来的未来不是我想要的未来
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号