//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. 5.5 Selenium2中的元素定位

    WebDriver的更加面向对象的方式大大降低了Selenium的入门门槛,对Web元素的操作也非常之简单易学.实际项目用起来,工作量最大的部分就是你如何解析定位到你的目标项目页面中的各种元素.好比你 ...

  2. Azure 云平台用 SQOOP 将 SQL server 2012 数据表导入 HIVE / HBASE

    My name is Farooq and I am with HDinsight support team here at Microsoft. In this blog I will try to ...

  3. http协议分析工具【转】

    转自:http://www.cnblogs.com/klguang/p/4624333.html

  4. hdu----(5047)Sawtooth(大数相乘+数学推导)

    Sawtooth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

  5. HDUoj-------(1128)Self Numbers

    Self Numbers Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  6. 去除DataTable重复数据的三种方法

    业务需求 最近做一个把源数据库的数据批次导出到目标数据库.源数据库是采集程序采集而来的原始数据库,所以需要对其进行一些处理(过滤一些为空,长度太短或太长,非法字符,重复数据)然后在进行入库. 其中要避 ...

  7. 5月4日课堂内容:for循环的穷举、迭代

    一.for循环拥有两类: 1.穷举: 把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况. 2.迭代: 从初始情况按照规律不断求解中间情况,最终推导出结果. 二.穷举练习 1.单位给发了一张 ...

  8. Android基础之项目结构分析

    创建了第一个Android项目,用工具开发Android项目,我们有必要熟悉项目的目录结构,清楚各个项目下面放置的是什么东西.展开整个项目,其根目录结构(选用不同版本的SDK文件目录结构会有一些不同, ...

  9. Flume数据传输事务分析[转]

    本文基于ThriftSource,MemoryChannel,HdfsSink三个组件,对Flume数据传输的事务进行分析,如果使用的是其他组件,Flume事务具体的处理方式将会不同.一般情况下,用M ...

  10. 第五章 CSS页面布局基础

    1.标准文档流 在正常流中,在没有使用浮动或者定位的情况下,文本元素按照从上到下.从左到右的格式布局.这是浏览器的默认行为.在正常流中,块级元素从上到下依次排列,而行级元素从左到右依次排列.正常流中的 ...