题意

有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的更多相关文章

  1. HDU6024:Building Shops(简单DP)

    Building Shops Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  2. 【BZOJ-1670】Building the Moat护城河的挖掘 Graham扫描法 + 凸包

    1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 464  Solv ...

  3. 【转】Building a RESTful Web Service

    目标 构建一个service,接收如下HTTP GET请求: [plain] view plain copy   http://localhost:8080/greeting 并返回如下JSON格式的 ...

  4. 【译】Building ArduPilot on Windows with waf and Bash

    原文链接:http://ardupilot.org/dev/docs/building-ardupilot-onwindows10.html 翻译水平有限,如有错误请指出! 在Windows上使用wa ...

  5. HDU6024:Building Shops(DP)

    传送门 题意 在一条直线上有n个教室,现在要设置糖果店,使得最后成本最小,满足以下两个条件: 1.若该点为糖果店,费用为cost[i]; 2.若不是,则为loc[i]-最近的糖果店的loc 分析 dp ...

  6. 【arc062e】Building Cubes with AtCoDeer

    Description STL有n块瓷砖,编号从1到n,并且将这个编号写在瓷砖的正中央: 瓷砖的四个角上分别有四种颜色(可能相等可能不相等),并且用Ci,0,Ci,1,Ci,2,Ci,3分别表示左上. ...

  7. HDU6024 Building Shops 2017-05-07 18:33 30人阅读 评论(0) 收藏

    Building Shops                                                             Time Limit: 2000/1000 MS ...

  8. 【例题 8-2 UVA-1605】Building for UN

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 两层 然后n*n就够了 第一层类似 aaa.. bbb.. ccc.. ... 第二次则变成 abc.... abc.... abc ...

  9. (hdu 6024) Building Shops

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6024 Problem Description HDU’s n classrooms are on a ...

随机推荐

  1. Kali Linux破解wifi密码(WEP)

    WEP是无线路由器最初广泛使用的一种加密方式,这种加密方式非常容易被破解. 目前很少有人使用wep加密方式,但是还是会有. 建议:使用WPA/WPA2做为加密方式. 抓包和"破解wpa/wp ...

  2. Python 多版本共存之pyenv

    经常遇到这样的情况: 系统自带的 Python 是 2.6,自己需要 Python 2.7 中的某些特性: 系统自带的 Python 是 2.x,自己需要 Python 3.x: 此时需要在系统中安装 ...

  3. 【前端】XHTML入门笔记

    教程/XHTML 模块/XHTML 标准属性/XHTML 事件属性 XHTML 指可扩展超文本标签语言(EXtensible HyperText Markup Language). XHTML 元素必 ...

  4. Python之namedtuple源码分析

    namedtuple()函数根据提供的参数创建一个新类,这个类会有一个类名,一些字段名和一个可选的用于定义类行为的关键字,具体实现如下 namedtuple函数源码 from keyword impo ...

  5. fileUtil文件的上传下载

    package com.beisun.mbp.util; import java.io.BufferedInputStream;import java.io.BufferedOutputStream; ...

  6. Git 下载、安装与SSH配置

    一.Git学习笔记(基于Github) Git简介 Git是目前流行的分布式版本管理系统.它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响.也因此其近乎所有的操作都 ...

  7. AngularJS方法 —— angular.bootstrap

    描述: 此方法用于手动加载angularjs模板 (官方翻译:注意基于端到端的测试不能使用此功能来引导手动加载,他们必须使用ngapp. angularjs会检测这个模板是否被浏览器加载或者加载多次并 ...

  8. C#编程的几个建议

    1.属性(properties) 抽象属性可以放在接口的定义里.如: public interface INameValuePair<T>     {         string Nam ...

  9. iOS 10 隐私权限设置

    iOS 10 开始对隐私权限更加严格,如果你不设置就会直接崩溃,现在很多遇到崩溃问题了,一般解决办法都是在info.plist文件添加对应的Key-Value就可以了. 以上Value值,圈出的红线部 ...

  10. Django: TemplateDoesNotExist (rest_framework/api.html)

    需要在站点前面的INSTALLED_APP里面加上rest_framework