当前位置:网站首页>HDU - 6024 Building Shops(女生赛)
HDU - 6024 Building Shops(女生赛)
2022-07-06 09:25:00 【是小张张呀 zsy】
C - Building Shops
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 ii 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 nn lines, each line contains two integers xi,ci(1e-9<=xi,ci<=1e9), denoting the coordinate of the ii-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
碎念念,早就想写dp的题了,上次就因为dp不会,影响我拿奖呜呜呜呜,我的报名费呀
dp【i】【j】为到第i个教室,前一个糖果店的位置是j,的最小费用是多少。
分两种,一是在这里修建糖果店。dp【i】【i】=min(dp【i】【i】,dp【i-1】【j】+v【i】)(1<=j<i)。
二是不修建糖果店。dp【i】【j】=min(dp【i】【j】,dp【i-1】【j】+d【i】-d【j】)(1<=j<i)。
当然,第一个教室必须修建糖果店 dp[1][1]=a[1].n。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int const N=1e5+10;
typedef long long ll;
struct node{
ll m,n;
}a[3010];
ll dp[3010][3010];
ll const inf=1e9+10;
int cmp(node x,node y)
{
return x.m<y.m;
}
int main()
{
int nn;
while(~scanf("%d",&nn))
{
for(int i=1;i<=nn;i++)
{
scanf("%lld%lld",&a[i].m,&a[i].n);
}
sort(a+1,a+nn+1,cmp);
memset(dp,inf,sizeof(dp));
dp[1][1]=a[1].n;
for(int i=1;i<=nn;i++)
for(int j=1;j<i;j++)
{
dp[i][j]=min(dp[i][j],dp[i-1][j]+a[i].m-a[j].m);
dp[i][i]=min(dp[i][i],dp[i-1][j]+a[i].n);
}
ll sum=inf;
for(int i=1;i<=nn;i++)
sum=min(sum,dp[nn][i]);
printf("%lld\n",sum);
}
return 0;
}
边栏推荐
- [C language] twenty two steps to understand the function stack frame (pressing the stack, passing parameters, returning, bouncing the stack)
- JS --- all knowledge of JS objects and built-in objects (III)
- 学习记录:TIM—电容按键检测
- Servlet
- Cost accounting [23]
- FSM and I2C experiment report
- China's salt water membrane market trend report, technological innovation and market forecast
- How to write the bug report of software test?
- ucore lab5
- How to become a good software tester? A secret that most people don't know
猜你喜欢
C4D quick start tutorial - creating models
JS --- detailed explanation of JS facing objects (VI)
毕业才知道IT专业大学生毕业前必做的1010件事
C语言必背代码大全
How to become a good software tester? A secret that most people don't know
ucore Lab 1 系统软件启动过程
Your wechat nickname may be betraying you
How to build a nail robot that can automatically reply
ucore lab 2
ucore lab7
随机推荐
UCORE lab5 user process management experiment report
Research Report on market supply and demand and strategy of China's medical chair industry
JS --- BOM details of JS (V)
STM32學習記錄:輸入捕獲應用
ucorelab4
JS --- all basic knowledge of JS (I)
Cost accounting [22]
C语言学习笔记
ucore lab 2
学习记录:理解 SysTick系统定时器,编写延时函数
Cost accounting [19]
学习记录:TIM—基本定时器
ucorelab3
What to do when programmers don't modify bugs? I teach you
LeetCode#19. Delete the penultimate node of the linked list
How to do agile testing in automated testing?
How to write the bug report of software test?
What if software testing is too busy to study?
Cost accounting [13]
Printing quality inspection and verification system Industry Research Report - market status analysis and development prospect forecast