【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

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #include <iostream>
 5
 6 using namespace std;
 7 const int maxn=3000+10;
 8 const int INF=1e14;
 9 struct Node{
10     long long x,c;
11     bool operator <(const Node& rhs)const{
12         return x<rhs.x;
13     }
14 }node[maxn];
15 int n;
16 long long f[maxn][3],sum[maxn][maxn];
17 int main(){
18     while(scanf("%d",&n)!=EOF){
19         for(int i=1;i<=n;i++){
20             scanf("%lld%lld",&node[i].x,&node[i].c);
21         }
22         sort(node+1,node+1+n);
23         memset(sum,0,sizeof(sum));
24         for(int i=1;i<=n;i++){
25                 sum[i][i]=0;
26             for(int j=i+1;j<=n;j++){
27                 sum[i][j]=sum[i][j-1]+node[j].x-node[i].x;
28             }
29         }
30        /* for(int i=1;i<=n;i++){
31             for(int j=i+1;j<=n;j++){
32                 printf("%d--%d:%d\n",i,j,sum[i][j]);
33             }
34         }*/
35         for(int i=1;i<=n;i++){
36             f[i][0]=f[i][1]=INF;
37         }
38         f[1][1]=node[1].c;
39         for(int i=2;i<=n;i++){
40             f[i][1]=min(f[i-1][0],f[i-1][1])+node[i].c;
41             f[i][0]=f[i-1][1]+node[i].x-node[i-1].x;
42             for(int j=1;j<i;j++){//在j处建
43                f[i][0]=min(f[i][0],f[j][1]+sum[j][i]);
44             }
45         }
46         long long ans=min(f[n][1],f[n][0]);
47         printf("%lld\n",ans);
48       //  for(int i=1;i<=n;i++){
49         //    printf("%d:%lld %lld\n",i,f[i][0],f[i][1]);
50         //}
51     }
52 return 0;
53 }

原文地址:https://www.cnblogs.com/LQLlulu/p/8955246.html

时间: 2024-10-11 16:54:19

【HDU6024】Building Shops的相关文章

【arc062e】Building Cubes with AtCoDeer

Description STL有n块瓷砖,编号从1到n,并且将这个编号写在瓷砖的正中央: 瓷砖的四个角上分别有四种颜色(可能相等可能不相等),并且用Ci,0,Ci,1,Ci,2,Ci,3分别表示左上.右上.右下.左下的颜色.颜色有1000种,编号从0到999. 现在STL想知道,从这n块瓷砖中选出不同的6块,能围成多少本质不同的合法的立方体. 一个立方体被称为合法的,当且仅当瓷砖有编号的一侧在外面,并且立方体的每个顶点处的三个颜色相同. 注意,由于瓷砖的中间是写着编号的,因此将一个瓷砖旋转90度

【Unity3D】生成工程报错解决—UnityEditor.HostView:OnGUI() Error building Player: Couldn&#39;t build player because of unsupported data on target platform.

错误 错误1:An asset is marked as dont save, but is included in the build: unityEditor.HostView:OnGUI() 错误2:Building - Failed to write file: sharedassets0.assetsUnityEditor.HostView:OnGUI() 错误3:Error building Player: Couldn't build player because of unsup

(hdu 6024) Building Shops

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6024 Problem Description HDU's n classrooms are on a line ,which can be considered as a number line. Each classroom has a coordinate. Now Little Q wants to build several candy shops in these n classrooms

【POJ2482】【线段树】Stars in Your Window

Description Fleeting time does not blur my memory of you. Can it really be 4 years since I first saw you? I still remember, vividly, on the beautiful Zhuhai Campus, 4 years ago, from the moment I saw you smile, as you were walking out of the classroo

【技巧】谷歌地图操作类

原文:[技巧]谷歌地图操作类 /********************************************************************************Name:谷歌地图操作类Author:刘皓Date:2012.8.13Desc:该类封装谷歌地图的一些操作version:1.0*********************************************************************************/ ///*一些全

【git】git与github的英文记录

Pull requests  Issues Gist 请求 问题 要点 ------------------------------------------------------------------------------------------- Learn Git and GitHub without any code! 没有任何代码学习Git和GitHub! ---------------------------------------------------------------

【分享】数据挖掘学习资料免费下载

 Artificial Intelligence - Wiley - Data Mining - Concepts Models Methods and Algorithms - 2003.chm 8.4 MB  IEEE - Finding Patterns in Three Dimensional Graphs Algorithms and Applications to Scientific Data Mining.pdf 561.8 KB  Mining The Web - Discov

利用javascript和WebGL绘制地球 【翻译】

利用javascript和WebGL绘制地球 [翻译] 原翻译:利用javascript和WebGL绘制地球 [翻译] 在我们所有已知的HTML5API中,WebGL可能是最有意思的一个,利用这个API我们能够在浏览器中创造出炫酷3D场景的能力.本文将完整的向你展示一些炫酷是如何实现的. 需要特别指出的是,这篇教程我们将会构建一个地球行星模型,这个模型可以像一个兴奋的人一样环绕的旋转,另外,它可能使我们可以获得一些其他程序员的称赞,好吧,就这么多了. 准备 这篇教程我们将会用到一个令人着迷的We

【转】对于杭电OJ题目的分类

[好像博客园不能直接转载,所以我复制过来了..] 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDI