题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6024

题意:有n个room在一条直线上,需要这这些room里面建造商店,如果第i个room建造,则要总花费加上Ci , 不建造的话, 总花费就要加上去左边的第一间商店的距离。求总的最小花费。

题解:dp1[i] 为第i个建造的最小花费, dp2[i] 为第i个不建造的最小花费。

   dp1[i] = min(dp1[i-1], dp2[i-1]) + Ci

   dp2[i] = min(dp2[i], dp1[j] + dis[j][i])  j为[1, i-1]。

   j为左手边第一间商店,那么从j到i都是不建商店的,就需要加上 每一间room到商店的距离。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <set>
using namespace std;
typedef long long LL;
#define ms(a, b) memset(a, b, sizeof(a))
#define pb push_back
#define mp make_pair
const int INF = 0x7fffffff;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+;
const int maxn = + ;
struct node
{
LL x, c;
};
LL dp1[maxn];
LL dp2[maxn];
LL dis[maxn][maxn];
void init() {
ms(dp1, );
ms(dp2, );
ms(dis, );
}
bool cmp(node x1, node x2)
{
return x1.x < x2.x;
}
void solve(int n) {
node a[maxn];
for(int i=;i<=n;i++)
scanf("%lld%lld", &a[i].x, &a[i].c);
for(int i=;i<=n;i++)
a[i].x+=;
sort(a+, a+n+, cmp);
for(int i = ;i<=n;i++){
for(int j = i+;j<=n;j++){
dis[i][j] = dis[i][j-] + (a[j].x - a[i].x);
}
}
dp1[] = a[].c;
dp2[] = a[].c;
for(int i = ;i<=n;i++){
dp1[i] = min(dp1[i-], dp2[i-]) + a[i].c;
dp2[i] = dp1[i];
for(int j = i-;j>=;j--){
dp2[i] = min(dp2[i], dp1[j]+dis[j][i]);
}
}
printf("%lld\n", min(dp1[n], dp2[n]));
}
int main() {
#ifdef LOCAL
freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
#endif
int n;
while(~scanf("%d", &n)){
init();
solve(n);
}
return ;
}

HDU 6024 Building Shops (简单dp)的更多相关文章

  1. HDU 6024 Building Shops

    $dp$. $dp[i]$表示到$i$位置,且$i$位置建立了的最小花费,那么$dp[i] = min(dp[k]+cost[i+1][k-1])$,$k$是上一个建的位置.最后枚举$dp[i]$,加 ...

  2. hdu 2084 数塔 (简单dp)

    http://acm.hdu.edu.cn/showproblem.php?pid=2084 数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory L ...

  3. HDU 2084 数塔(简单DP入门)

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  4. HDU 2571 命运(简单dp)

    传送门 真是刷越多题,越容易满足.算是一道很简单的DP了.终于可以自己写出来了. 二维矩阵每个点都有一个幸运值,要求从左上走到右下最多能积累多少幸运值. 重点就是左上右下必须都踩到. dp[i][j] ...

  5. hdu 4826 Labyrinth(简单dp)

    Description 度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向上向下向 ...

  6. Ring HDU - 2296 AC自动机+简单DP和恶心的方案输出

    题意: 就是现在给出m个串,每个串都有一个权值,现在你要找到一个长度不超过n的字符串, 其中之前的m个串每出现一次就算一次那个字符串的权值, 求能找到的最大权值的字符串,如果存在多个解,输出最短的字典 ...

  7. hdu 1398 Square Coins(简单dp)

    Square Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Pro ...

  8. hdu 1003 Max sum(简单DP)

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem ...

  9. HDU 1260 Tickets(简单dp)

    Tickets Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

随机推荐

  1. Python - pycharm 代码自动补全

    有很多人说是代码补全功能未打开,的确,代码补全功能确实要打开才能用,打开方法 file---->power save mode,把这个前面的√号去掉即可

  2. [Git] 003 初识 Git 与 GitHub 之加入文件 第二弹

    在 GitHub 的 UI 界面使用 Git 往仓库里加文件 第二弹 1. 选择已有的文件,点击右侧的 edit 2. 在文件中继续写入文字 小发现:我只写到第 6 行,commit 后再点进去,发现 ...

  3. Java中获取大小:length、length()、size()

    1. java 中的 length 属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了 length 这个属性. 2. java 中的 length() 方法是针对字符串说的,如 ...

  4. Excel VBA批量处理寸照名字

    需求:因为处理学生学籍照片,从照相馆拿回来的寸照是按班级整理好,文件名是相机编号的文件.那么处理的话,是这么一个思路,通过Excel表格打印出各班A4照片列表,让学生自行填上照片对应姓名.表格收回来后 ...

  5. 生产者消费者模型(JoinableQueue)

  6. H-Updating a Dictionary (模拟)

    In this problem, a dictionary is collection of key-value pairs, where keys are lower-case letters, a ...

  7. CentOS安装Python3.x

    安装python3.6可能使用的依赖# yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqli ...

  8. echart 折线渐变 加柱形图结合图形,左右纵轴自设置格式,现行图北京渐变 ,x轴字体倾斜

    app.title = '折柱混合'; option = { grid: { left: '5%', //距离左边的距离 right: '5%', //距离右边的距离 top:'8%', bottom ...

  9. ES6——generator-yield

    yield 既可传参,又可以返回 第一个next()传参无效,只用来启动 如果函数前漏掉 * 就是普通函数 如果有yield会报错, ReferenceError: yield is not defi ...

  10. java指定若干个网络图片,打包为zip下载

    应项目要求需要将多个存在某url地址的图片,打包为zip下载下来 public void download(HttpServletRequest request, HttpServletRespons ...