• 3.2——11298: 苟利


    题目描述

    给定正整数n和正整数数组Ai(1≤i≤n),现有n堆石子排成一列,第i堆石子有Ai个,其中对于任一正整数i(i<n),第i堆石子与第i+1堆石子相邻。每次将两堆石子合并成一堆,新堆的石子数是原来两堆石子数之和,代价是原来两堆石子数之积,求合并n−1次将n堆石子合并成一堆的代价和最小是多少。

    输入

    第一行,一个正整数n。
    第二行,n个正整数,第i个正整数表示Ai,相邻两个数之间有一个空格隔开。

    输出

    仅一行,一个正整数,表示答案。

    样例输入

    复制样例数据

    2 
    2 2
    

    样例输出

    4
    

    提示

    对于所有的测试点,满足n≤30000,Ai≤200000。

    来源/分类

    Java高精度嘛,训练赛一看就是这个玩意。但是为啥训练赛只能用C++。错了n次发现,一直最小乘最小,合并继续,和最大乘最小合并。答案一样,但是数字较大嘛。。。

    import java.math.BigInteger;
    import java.util.Arrays;
    import java.util.Scanner;
     
    public class bigint {
     
    	public static void main(String[] args) {
            Scanner cin = new Scanner(System.in);
            int n = cin.nextInt();
            BigInteger a[]; 
            a = new BigInteger [n];
            int i;
            for(i=0;i<n;i++) {
            	a[i]=cin.nextBigInteger();
            }
            Arrays.sort(a);
            BigInteger ans=new BigInteger("0");
            for(i=0;i<n-1;i++) {
            	BigInteger b=new BigInteger("1");
            	b=b.multiply(a[n-1]);
            	b=b.multiply(a[i]);
            	ans=ans.add(b);
            	a[n-1]=a[n-1].add(a[i]);
            }
            System.out.println(ans);
        }
    }
  • 相关阅读:
    快速排序算法
    HDOJ(1005) Number Sequence
    HDOJ(1004) Let the Balloon Rise
    HDOJ(1003) Max Sum
    HDOJ(1002) A + B Problem II
    HDOJ(1001) Sum Problem
    HDOJ(1000) A + B Problem
    DeepFaceLab小白入门(5):训练换脸模型!
    DeepFaceLab小白入门(4):提取人脸图片!
    DeepFaceLab小白入门(3):软件使用!
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319532.html
Copyright © 2020-2023  润新知