HDU 6024 Building Shops (简单dp)
2024-09-05 22:48:44
题目链接: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 ;
}
最新文章
- java基础 布局管理器
- 一道关于阿里简单面试题的反思C/C++
- sql中列数据横着显示
- Bootstrap页面布局10 - BS代码
- <;转>;如何改变讨好型人格 | 你根本不需要讨好任何人
- 2016传统行业&ldquo;互联网+&rdquo;元年,你准备好了吗?
- Google翻译,3个步骤灭绝人类
- Aizu 2309 Sleeping Time DFS
- PLSQL Developer激活码
- python运算符使用规律
- json数据获取
- android studio 实现代码混淆
- wemall app商城源码Android之支付宝接口公用函数
- Nmon实时监控并生成HTML监控报告
- 理解bootstrap的列偏移offset 和 推拉push/pull的区别?
- 乘法原理,加法原理,多重集的排列数(多个系列操作穿插的排列数) 进阶指南 洛谷p4778
- python type metaclass
- postman的Testing examples(常用方法)
- css写三角形
- ASP.NET Core 2 学习笔记(五)静态文件
热门文章
- 关于 阿里云 的linux 安装 jdk和tomcat 中的问题(解压版的jdk和tomcat)
- 5519: [Usaco2016 Open]Landscaping
- getCurrentSession 与 openSession区别
- Java数据结构之队列(Queue)
- 使用内核LED框架搭建驱动 ——led_classdev_register
- java synchronized实现可见性对比volatile
- 用Java语言做ACM的注意事项
- 问题 J: 老肖数等式
- Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍
- 数组去重ES6