Problem Description
  The TV shows such as You Are the One has been very popular. In order to meet the need of boys who are still single, TJUT hold the show itself. The show is hold in the Small hall, so it attract a lot of boys and girls. Now there are n boys enrolling in. At the beginning, the n boys stand in a row and go to the stage one by one. However, the director suddenly knows that very boy has a value of diaosi D, if the boy is k-th one go to the stage, the unhappiness of him will be (k-1)*D, because he has to wait for (k-1) people. Luckily, there is a dark room in the Small hall, so the director can put the boy into the dark room temporarily and let the boys behind his go to stage before him. For the dark room is very narrow, the boy who first get into dark room has to leave last. The director wants to change the order of boys by the dark room, so the summary of unhappiness will be least. Can you help him?

Input
  The first line contains a single integer T, the number of test cases. For each case, the first line is n (0 < n <= 100)
  The next n line are n integer D1-Dn means the value of diaosi of boys (0 <= Di <= 100)

Output
  For each test case, output the least summary of unhappiness .

输入样例

2
  
5
1
2
3
4
5 5
5
4
3
2
2

输出样例

Case #1: 20
Case #2: 24


子区间划分:由于栈的特点,区间的第一个元素在第k位出栈,则(1,k-1)(k+1,n)互相独立
注意dp数组的赋值
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=400,inf=0x3f3f3f3f;
int a[N],s[N],dp[N][N];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int T;cin>>T;
for(int t=1;t<=T;++t)
{
int n;
cin>>n;
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;++i)
{cin>>a[i];
s[i]=a[i]+s[i-1];
}
for(int i = 0; i <= n; i++)
for(int j = i+1; j <= n; j++)
dp[i][j] = inf;//注意初始化只有成立区间赋值为inf
//dp[i][j]表示第i个人以i为起点
//第k个出场,k从i到j的相对焦虑最小值
for(int len=2;len<=n;++len)
for(int i=1;i<=n;++i)
{
int j=i+len-1;
if(j>n) break;
for(int k=i;k<=j;++k)//第i个人在第k个出场
{
dp[i][j]=min(dp[i][j],(k-i)*a[i]+dp[i+1][k]+dp[k+1][j]
+(k-i+1)*(s[j]-s[k]));
//i在第k个出场,则子区间为(i+1,k) (k+1,j)
}
}
cout<<"Case #"<<t<<": "<<dp[1][n]<<'\n';
}
return 0;
}

hdu: You Are the One(区间DP)的更多相关文章

  1. hdu 4597 + uva 10891(一类区间dp)

    题目链接:http://vjudge.net/problem/viewProblem.action?id=19461 思路:一类经典的博弈类区间dp,我们令dp[l][r]表示玩家A从区间[l, r] ...

  2. HDU 2476 String painter (区间DP)

    题意:给出两个串a和b,一次只能将一个区间刷一次,问最少几次能让a=b 思路:首先考虑最坏的情况,就是先将一个空白字符串刷成b需要的次数,直接区间DP[i][j]表示i到j的最小次数. 再考虑把a变成 ...

  3. HDU 4597 Play Game(区间DP(记忆化搜索))

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4597 题目大意: 有两行卡片,每个卡片都有各自的权值. 两个人轮流取卡片,每次只能从任一行的左端或右端 ...

  4. HDU 5151 Sit sit sit 区间DP + 排列组合

    Sit sit sit 问题描述 在一个XX大学中有NN张椅子排成一排,椅子上都没有人,每张椅子都有颜色,分别为蓝色或者红色. 接下来依次来了NN个学生,标号依次为1,2,3,...,N. 对于每个学 ...

  5. hdu 5115 Dire Wolf(区间dp)

    Problem Description Dire wolves, also known as Dark wolves, are extraordinarily large and powerful w ...

  6. HDU 2476 String painter(区间DP)

    String painter Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

  7. HDU 4745 Two Rabbits(区间DP,最长非连续回文子串)

    Two Rabbits Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total ...

  8. HDU 5115 Dire Wolf ——(区间DP)

    比赛的时候以为很难,其实就是一个区间DP= =..思路见:点我. 区间DP一定要记住先枚举区间长度啊= =~!因为区间dp都是由短的区间更新长的区间的,所以先把短的区间更新完.. 代码如下: #inc ...

  9. hdu 3632 A Captivating Match(区间dp)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3632 题意:n个人进行比赛,每个人有一个价值a[i],最后冠军只有一个,只能相邻两个人进行 ...

  10. HDU 5151 Sit sit sit 区间dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5151 题解: 有n个椅子,编号为1到n. 现在有n个同学,编号为1到n,从第一个同学开始选择要坐的位 ...

随机推荐

  1. sqoop mysql2hive

    a./etc/profile添加export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*b.将hive-site.xml 拷贝到 $SQOO ...

  2. color-color diagram data

  3. .Net Core WebApi 控制器自动创建文件夹上传图片

    /// <summary> /// 异步图片或文件上传 /// </summary> /// <param name="formFile">&l ...

  4. mongodb对Obeject对象进行增删改操作

    1.插入某个对象,如User对象 mongoTemplate.insert(user, "users");//第一个参数是实体类对象User, 第二个参数是mongodb对应的集合 ...

  5. ComPiler200003:Story-Oriented Programming

    Story-Oriented Programming MAY 25TH, 2018 http://www.brandonkeown.com/2018/05/story-oriented-program ...

  6. Chtholly Tree 学习笔记

    前言 珂朵莉树 (Chtholly Tree) 是一种简单优美的数据结构,就像 Chtholly 一样可爱.暴力即优美. 适用于一些有区间赋值操作的序列操作题. Chtholly Tree 的本质是把 ...

  7. Python中用requests处理cookies的3种方法

    在接口测试中,大多数项目的接口是需要登录后进行操作的,经常用到requests库进行模拟登录及登录后的操作,下面是我不断踩坑后总结出来的关于登录凭证cookies的3种操作方法. 一. 用 reque ...

  8. 用C#的控制台程序写一个飞行棋项目

    using System; namespace 飞行棋项目 { class Program { ///1.画游戏头 ///2.初始化地图 ///把整数数组中数字编程控制台中显示的特殊字符显示的过程,就 ...

  9. ASP.NET Core 6部署到IIS

    1.打开IIS,新建一个网站 2.给新创建的应用程序池,设置为无托管代码,下面那个选经典或集成好像都没问题 3.运行网站,不出意外的话,会报错,提示HTTP 错误 500.19,说明网站目录权限不足, ...

  10. Python切换中英文输入法

    要实现中英文切换,首先Windows系统必须要有中文语言和英文语言,才能实现输入法(语言)切换. import win32api import win32gui from win32con impor ...