2017中国大学生程序设计竞赛 - 女生专场(dp)
Building Shops
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 701 Accepted Submission(s): 265
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.
The total cost consists of two parts. Building a candy shop at classroom i would have some cost ci. For every classroom P without any candy shop, then the distance between P and the rightmost classroom with a candy shop on P’s left side would be included in the cost too. Obviously, if there is a classroom without any candy shop, there must be a candy shop on its left side.
Now Little Q wants to know how to build the candy shops with the minimal cost. Please write a program to help him.
Input
The input contains several test cases, no more than 10 test cases.
In each test case, the first line contains an integer n(1≤n≤3000), denoting the number of the classrooms.
In the following n lines, each line contains two integers xi,ci(−109≤xi,ci≤109), denoting the coordinate of the i-th classroom and the cost of building a candy shop in it.
There are no two classrooms having same coordinate.
Output
For each test case, print a single line containing an integer, denoting the minimal cost.
Sample Input
3
1 2
2 3
3 4
4
1 7
3 1
5 10
6 1
Sample Output
5
11
Source
2017中国大学生程序设计竞赛 - 女生专场
题意:
有n个教室,现在想在这n个教室中建一些超市,问你最少费用为多少?
费用分为两种:
1:在第i个教室建超市,费用因为ci
2:没有建超市的教室的费用为它和它左边最接近的超市的坐标之间的距离
#include <iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<deque>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
struct node
{
ll x;
ll c;
}a[];
bool cmp(node x,node y)
{
return x.x<y.x;
}
ll dp[];
//dp[i]表示只考虑前i个教室 的最优解
ll dp2[];
//dp2[i]表示 第i个固定条件下,前i个的最优解
ll s[];
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=;i<=n;i++)
{
scanf("%lld %lld",&a[i].x,&a[i].c); }
sort(a+,a+n+,cmp);
memset(dp,inf,sizeof(dp));
memset(dp2,inf,sizeof(dp2));
memset(s,,sizeof(s));
dp[]=;
dp[]=dp2[]=a[].c;
int pp=a[].x;
for(int i=;i<=n;i++)
{
a[i].x-=pp;
s[i]=a[i].x+s[i-];
}
for(int i=;i<=n;i++)
{
dp2[i]=dp[i-]+a[i].c;
//第i个固定条件下,前i个的最优解
for(int j=;j<=i;j++)
{
dp[i]=min(dp[i],dp2[j]+s[i]-s[j]-(i-j)*a[j].x);
}
}
printf("%lld\n",dp[n]);
}
return ;
}
Building Shops
Time
Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K
(Java/Others)
Total Submission(s): 2728 Accepted Submission(s):
936
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.
The total cost consists of two parts. Building a candy shop
at classroom i
would have some cost ci
. For every classroom P
without any candy shop, then the distance between P
and the rightmost classroom with a candy shop on P
's left side would be included in the cost too. Obviously, if there is a
classroom without any candy shop, there must be a candy shop on its left
side.
Now Little Q wants to know how to build the candy shops with the
minimal cost. Please write a program to help him.
test cases.
In each test case, the first line contains an integer n(1≤n≤3000)
, denoting the number of the classrooms.
In the following n
lines, each line contains two integers xi
,c
i
(−10
9
≤x
i
,c
i
≤10
9
)
, denoting the coordinate of the i
-th classroom and the cost of building a candy shop in it.
There are no two
classrooms having same coordinate.
integer, denoting the minimal cost.
1 2
2 3
3 4
4
1 7
3 1
5 10
6 1
11
several similar problems for you: 6286 6285 6284 6283 6282
2017中国大学生程序设计竞赛 - 女生专场(dp)的更多相关文章
- 2017中国大学生程序设计竞赛 - 女生专场 Deleting Edges(思维+最短路)
Deleting Edges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 2017中国大学生程序设计竞赛 - 女生专场 Happy Necklace(递推+矩阵快速幂)
Happy Necklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 2017中国大学生程序设计竞赛 - 女生专场(Graph Theory)
Graph Theory Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To ...
- 2017中国大学生程序设计竞赛 - 女生专场 1002 dp
Building Shops Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 2017中国大学生程序设计竞赛 - 女生专场B【DP】
B HDU - 6024 [题意]:n个教室,选一些教室建造糖果商店. 每个教室,有一个坐标xi和在这个教室建造糖果商店的花费ci. 对于每一个教室,如果这个教室建造糖果商店,花费就是ci,否则就是与 ...
- 2017中国大学生程序设计竞赛 - 女生专场C【前后缀GCD】
C HDU - 6025 [题意]:去除数列中的一个数字,使去除后的数列中所有数字的gcd尽可能大. [分析]: 数组prefixgcd[],对于prefixgcd[i]=g,g为a[0]-a[i]的 ...
- 2017中国大学生程序设计竞赛 - 女生专场A【模拟】
A HDU - 6023 [题意]:求AC题数和总时长. [分析]:模拟.设置标记数组记录AC与否,再设置错题数组记录错的次数.罚时罚在该题上,该题没AC则不计入总时间,AC则计入.已经AC的题不用再 ...
- HDU 6024(中国大学生程序设计竞赛女生专场1002)
这是CCPC女生专场的一道dp题.大佬们都说它简单,我并没有感到它有多简单. 先说一下题意:在一条直线上,有n个教室,现在我要在这些教室里从左到右地建设一些作为糖果屋,每个教室都有自己的坐标xi 和建 ...
- "巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场
Combine String #include<cstdio> #include<cstring> #include<iostream> #include<a ...
随机推荐
- 关于C语言中结构体大小计算
结构体大小的计算,.网上说法一大堆还都不一样分什么对齐不对齐,偏移量什么的.. 在此稍微举例简单总结下: 对齐原则:每一成员的结束偏移量需对齐为后一成员类型的倍数 补齐原则:最终大小补齐为成员中最大 ...
- javascript异步编程的几种方法
目前工作中用的比较多的异步模式编程有如下几种方法 一 回调函数 这是异步编程最基本的方法,假设有两个函数f1和f2,后者等待前者的执行结果 f1(); f2(); 如果f1是一个很耗时的任务,可以考虑 ...
- JVM安全退出(如何优雅的关闭java服务)
https://tech.imdada.cn/2017/06/18/jvm-safe-exit/?utm_source=tuicool&utm_medium=referral 背景 用户:货都 ...
- leetcode 2SUM
; i < numbers.size(); ++i){ ; i < v.size(); i++){ ; j < v.size ...
- python递归 及 面向对象初识及编程思想
递归 及 面向对象初识及编程思想 一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递 ...
- 条款25:考虑写出一个不抛出异常的swap函数
首先说下标准库的swap算法: namespace std{ template<typename T> void swap(T & a, T & b) { T tmp = ...
- $fn、$extends $fn.extends的用法,jquery的插件开发
原文链接:http://caibaojian.com/jquery-extend-and-jquery-fn-extend.html Query.fn.extend(); jQuery.extend( ...
- WebForms UnobtrusiveValidationMode 需要“jQuery”ScriptResourceMapping。
.net framework4.5开发中, Unobtrusive ValidationMode是一种隐式的验证方式,需要前端调用jquery来进行身份验证.且默认启用. 解决方法如下 方法一: 修改 ...
- json 和 table控件
<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content= ...
- XE7/10诡异报错brcc32错误
重新编译工程时,报错: 之前没遇到过,解决方法: 重新设置下Application Icon,再build,问题解决.