zoukankan      html  css  js  c++  java
  • [CODEVS1048]石子归并

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 黄金 Gold
    题目描述 Description
    有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量和w[i]+w[i+1]。问安排怎样的合并顺序,能够使得总合并代价达到最小。
    输入描述 Input Description
    第一行一个整数n(n<=100)
    第二行n个整数w1,w2...wn  (wi <= 100)
    输出描述 Output Description
    一个整数表示最小合并代价
    样例输入 Sample Input
    4
    4 1 1 4
    样例输出 Sample Output
    18

    var  
      w:array[0..105]of longint;  
      f,sum:array[0..105,0..105]of longint;  
      i,n,j,x,y,k:longint;  
    function min(x,y:longint):longint;  
      begin  
        if x>y  
          then min:=y  
          else min:=x  
      end;  
    begin  
      readln(n);  
      for i:=1 to n do  
        read(w[i]);  
      fillchar(sum,sizeof(sum),0);  
      fillchar(f,sizeof(f),char(-1));  
      for i:=1 to n do  
        for j:=1 to n do  
          for k:=i to j do  
            inc(sum[i,j],w[k]);  
      for i:=n-1 downto 1 do  
        for j:=i+1 to n do  
          begin  
            f[i,j]:=maxlongint;  
            for k:=i to j do  
              f[i,j]:=min(f[i,j],f[i,k]+f[k+1,j]+sum[i,j])  
          end;  
      writeln(f[1,n]);  
    end.  
  • 相关阅读:
    oracle中的DECODE
    服务器修改密码cmd
    oracle 创建用户,授权用户,创建表,查询表
    Oralce 处理字符串函数
    oracle 非数字型转数字型
    d3
    linux SVN 安装配置
    JAVA with Cassandra
    Struts2实现文件上传和下载
    xmanager 5图文使用教程
  • 原文地址:https://www.cnblogs.com/yangqingli/p/4709263.html
Copyright © 2011-2022 走看看