【HDU6024】Building Shops
题意
有n个教室排成一排,每个教室都有一个坐标,现在,小Q想建一些糖果商店,在这n个教室里面。总的花费有两部分,在教室i建一个糖果屋需要花费ci,对于没有任何糖果屋的P,需要的花费为这个教室到它左边有糖果商店的距离。怎么建糖果商店才能使花费最少?n<=3000.
分析
比较显然的dp,每个教室有两种选择,建糖果教室或者 不建糖果教室。f[i][0]第i个教室不建糖果商店时的最少花费。f[i][1]第i个教室建糖果商店时的最少花费。直接转移的话复杂度时O(N^3)的。我们可以预处理出所有i,j直接的距离的和。嗯,就酱~
对了,据说当时场上ltx大佬把这个转换成了树形dp???
玄学:vj上提交的时候G++可以AC,但是C++会WA
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream> using namespace std;
const int maxn=+;
const int INF=1e14;
struct Node{
long long x,c;
bool operator <(const Node& rhs)const{
return x<rhs.x;
}
}node[maxn];
int n;
long long f[maxn][],sum[maxn][maxn];
int main(){
while(scanf("%d",&n)!=EOF){
for(int i=;i<=n;i++){
scanf("%lld%lld",&node[i].x,&node[i].c);
}
sort(node+,node++n);
memset(sum,,sizeof(sum));
for(int i=;i<=n;i++){
sum[i][i]=;
for(int j=i+;j<=n;j++){
sum[i][j]=sum[i][j-]+node[j].x-node[i].x;
}
}
/* for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
printf("%d--%d:%d\n",i,j,sum[i][j]);
}
}*/
for(int i=;i<=n;i++){
f[i][]=f[i][]=INF;
}
f[][]=node[].c;
for(int i=;i<=n;i++){
f[i][]=min(f[i-][],f[i-][])+node[i].c;
f[i][]=f[i-][]+node[i].x-node[i-].x;
for(int j=;j<i;j++){//在j处建
f[i][]=min(f[i][],f[j][]+sum[j][i]);
}
}
long long ans=min(f[n][],f[n][]);
printf("%lld\n",ans);
// for(int i=1;i<=n;i++){
// printf("%d:%lld %lld\n",i,f[i][0],f[i][1]);
//}
}
return ;
}
【HDU6024】Building Shops的更多相关文章
- HDU6024:Building Shops(简单DP)
Building Shops Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 【BZOJ-1670】Building the Moat护城河的挖掘 Graham扫描法 + 凸包
1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 464 Solv ...
- 【转】Building a RESTful Web Service
目标 构建一个service,接收如下HTTP GET请求: [plain] view plain copy http://localhost:8080/greeting 并返回如下JSON格式的 ...
- 【译】Building ArduPilot on Windows with waf and Bash
原文链接:http://ardupilot.org/dev/docs/building-ardupilot-onwindows10.html 翻译水平有限,如有错误请指出! 在Windows上使用wa ...
- HDU6024:Building Shops(DP)
传送门 题意 在一条直线上有n个教室,现在要设置糖果店,使得最后成本最小,满足以下两个条件: 1.若该点为糖果店,费用为cost[i]; 2.若不是,则为loc[i]-最近的糖果店的loc 分析 dp ...
- 【arc062e】Building Cubes with AtCoDeer
Description STL有n块瓷砖,编号从1到n,并且将这个编号写在瓷砖的正中央: 瓷砖的四个角上分别有四种颜色(可能相等可能不相等),并且用Ci,0,Ci,1,Ci,2,Ci,3分别表示左上. ...
- HDU6024 Building Shops 2017-05-07 18:33 30人阅读 评论(0) 收藏
Building Shops Time Limit: 2000/1000 MS ...
- 【例题 8-2 UVA-1605】Building for UN
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 两层 然后n*n就够了 第一层类似 aaa.. bbb.. ccc.. ... 第二次则变成 abc.... abc.... abc ...
- (hdu 6024) Building Shops
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6024 Problem Description HDU’s n classrooms are on a ...
随机推荐
- Leetcode 912. Sort an Array
class Solution: def sortArray(self, nums: List[int]) -> List[int]: return sorted(nums)
- 用php实现四种常见的排序算法
几种常见的排序 排序是一个程序员的基本功,对于初级phper,更是可以通过排序算法来锻炼自己的思维能力. 所谓排序,就是对一组数据,按照某个顺序排列的过程.下面就总结四种常用的php排序算法,分别是冒 ...
- Django之 路由系统
Django的路由系统 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这 ...
- (四)canvas绘制路径
save() 样式不受污染的起始范围 shadowOffsetX 阴影x轴的距离 shadowOffsetY 阴影y轴的距离 shadowBlur 模糊度 shadowColor 阴影颜色 resto ...
- Struts2 级联下拉框 详解析
目录(?)[+] 运行环境:myeclipse8.6+jboss5.1+jvm1.6 先看最后目录结构: 直接上源码: complexFormTag.jsp: <%@ page language ...
- Xcode7 修改项目名完全攻略
1.先把整个工程文件夹名改为新的工程名. 2 .将旧项目文件夹和Tests文件名夹修改为新的名称,修改后如下图所示 3.右击 ,选择“show content package”(中文:显示包内容),看 ...
- z变换的性质
z变换的许多重要性质在数字信号处理中常常要用到. 序列 z变换 收敛域 1)x(n) X(z) Rx-< |z| <Rx+ 2)y(n) Y(z) Ry-< |z| <Ry+ ...
- test20181219 连续段的期望
题意 连续段的期望 [问题描述] 小N最近学习了位运算,她发现2个数xor之后数的大小可能变大也可能变小,and之后都不会变大,or之后不会变小.于是她想算出以下的期望值:现在有 N个数排成一排,如果 ...
- noip积木大赛
先要覆盖一号位置的高度,(现在你的目的只是想要覆盖一号位置). 每次你可以选区间[l,r]高度+1,这个作为一个操作. 为什么不选的范围大一点,让更多的区间增加高度呢. 所以红色的地方是,在我的目的是 ...
- Java文件压缩优化工具(ProGuard) 软件介绍 Soft content
ProGuard是一款免费的Java类文件的压缩.优化.混肴器.它可以帮你删除没用的类,字段,方法与属性,使字节码最大程度地优化,使用简短且无意义的名字来重命名类.字段和方法 .目前eclipse已经 ...