//Accepted    300 KB    0 ms
 //区间dp
 //dp[i][j] 表示i到j第一个出场的最小diaosizhi
 //对于i到j考虑元素i
 //(1)i第一个出场,diaosizhi为 dp[i+1][j]+sum(i+1--j)
 //(2)i不是第一个出场,而是第k个出场,则i+1到k+i-1这段区间第一个出场,k+i到j第k+1个出场
 //diaoshizhi为dp[i+1][i+k-1] + a[i]*(k-1) + (dp[i+k][j]+k*sum(i+k--j))
 //sum为一段区间的diaosizhi的和,考虑k+i到j第k+1个出场相当于k+i到j第一个出场再加上k*(sum(i+k--j))
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 using namespace std;
 ;
 int dp[imax_n][imax_n];
 int a[imax_n],sum[imax_n];
 int n;
 int min(int a,int b)
 {
     return a<b?a:b;
 }
 void Dp()
 {
     memset(dp,,sizeof(dp));
     ;l<=n;l++)
     {
         ;i<=n;i++)
         {
             ;
             if (j>n) break;
             dp[i][j]=dp[i+][j]+sum[j]-sum[i];
             ;k<=l;k++)
             {
                 dp[i][j]=min(dp[i][j],dp[i+][i+k-]+a[i]*(k-)+dp[i+k][j]+k*(sum[j]-sum[i+k-]));
             }
         }
     }
 }
 int main()
 {
     int T;
     scanf("%d",&T);
     ;t<=T;t++)
     {
         scanf("%d",&n);
         sum[]=;
         ;i<=n;i++)
         {
             scanf("%d",&a[i]);
             sum[i]=sum[i-]+a[i];
         }
         Dp();
         printf(][n]);
     }
     ;
 }
 //Accepted    4792 KB    281 ms
 //区间dp
 //dp[i][j][k] i到j整段区间在第k个出去时的最小花费
 //考虑区间中的第一个元素i,有一下两种情况:
 //(1)i在第k个出去,则i+1到j在第k+1个出去即dp[i+1][j][k+1]
 //(2)i不在第k个出去,则i后必有一段在第k个出去,假设这段为i+1到m
 //则有dp[i+1][m][k]+a[i]*(k+m-i)+dp[m+1][j][k+m-i+1]
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 using namespace std;
 ;
 ;
 int dp[imax_n][imax_n][imax_n];
 int a[imax_n];
 int n;
 int min(int a,int b)
 {
     return a<b?a:b;
 }
 void Dp()
 {
     memset(dp,,sizeof(dp));
     ;i<=n;i++)
     {
         ;k<=n;k++)
         {
             dp[i][i][k]=(k-)*a[i];
         }
     }
     ;i<n;i++)
     {
         ;k<=n;k++)
         {
             dp[i][i+][k]=min((k-)*a[i]+k*a[i+],k*a[i]+(k-)*a[i+]);
         }
     }
     ;l<=n;l++)
     {
         ;i<=n;i++)
         {
             ;
             if (j>n) break;
             ;k<=n;k++)
             {
                 dp[i][j][k]=inf;
                 dp[i][j][k]=min(dp[i][j][k],dp[i+][j][k+]+(k-)*a[i]);
                 ;m<=j;m++)
                 {
                     dp[i][j][k]=min(dp[i][j][k],dp[i+][m][k]+a[i]*(k+m-i-)+dp[m+][j][k++m-i]);
                 }
             }
         }
     }
 }
 int main()
 {
     int T;
     scanf("%d",&T);
     ;t<=T;t++)
     {
         scanf("%d",&n);
         ;i<=n;i++)
         scanf("%d",&a[i]);
         Dp();
         printf(][n][]);
     }
     ;
 }

hdu4283 区间dp的更多相关文章

  1. HDU4283:You Are the One(区间DP)

    Problem Description The TV shows such as You Are the One has been very popular. In order to meet the ...

  2. hdu4283 You Are the One 区间DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4283 自己想了很久还是不会,参考了别人的思路才写的,区间DP还是很弱,继续努力!! 思路: 转载: 题 ...

  3. 【BZOJ-4380】Myjnie 区间DP

    4380: [POI2015]Myjnie Time Limit: 40 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 162  Solved: ...

  4. 【POJ-1390】Blocks 区间DP

    Blocks Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5252   Accepted: 2165 Descriptio ...

  5. 区间DP LightOJ 1422 Halloween Costumes

    http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...

  6. BZOJ1055: [HAOI2008]玩具取名[区间DP]

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1588  Solved: 925[Submit][Statu ...

  7. poj2955 Brackets (区间dp)

    题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...

  8. HDU5900 QSC and Master(区间DP + 最小费用最大流)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...

  9. BZOJ 1260&UVa 4394 区间DP

    题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k ...

随机推荐

  1. unity入门笔记

    我于2010年4月1日硕士毕业加入完美时空, 至今5年整.刚刚从一家公司的微端(就是端游技术+页游思想, 具体点就是c++开发, directX渲染, 资源采取所需才会下载)项目的前端主程职位离职, ...

  2. JavaScript document

    window -- document用于表现HTML页面当前窗体的内容 document,中文"文档" document是BOM中最重要对象之一 document对象是window ...

  3. 【转】Linux下XenServer管理工具安装

    转载文章 - Linux下XenServer管理工具安装 Xen-Server 6.5 虚拟机安装Linux系统 vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) ...

  4. CentOS下更新python版本

    执行#Python或#python -V或#python --version,看到版本号是2.7.5,到官网https://www.python.org/ftp/python/查看了下最新版本都到了2 ...

  5. Java的内存回收机制

    原文出处: cnblogs-小学徒V 在Java中,它的内存管理包括两方面:内存分配(创建Java对象的时候)和内存回收,这两方面工作都是由JVM自动完成的,降低了Java程序员的学习难度,避免了像C ...

  6. NetworkShareAccesser: 远程PC1 文件 copy 到PC2 文件夹

    Usage: string strRepoBundlePath = @"\\at1-repo01\ATE\Bundles\SharePoint\Open\denyopen.zip" ...

  7. tar.xz如何解压:linux和windows下tar.xz解压命令介绍

    在linux下怎么解压和压缩tar.xz文件? (本文由www.169it.com搜集整理) 在linux下解压tar.xz文件步骤 1 2 # xz -d ***.tar.xz  //先解压xz # ...

  8. SASS学习笔记2 —— 语法

    sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一种是scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号.在此也建议使用后缀名为scss的文件,以避免sass ...

  9. Entity Framework 复杂类型

      为了说明什么是复杂属性,先举一个例子. public class CompanyAddress { public int ID { get; set; } public string Compan ...

  10. PHP+mysql常用类库

    <?php /** * @title: Ekcms mysql类库 * @version: 1.0 * @author: perry <perry@1kyou.com> * @pub ...