九度 oj 题目1086:最小花费
2017-01-14 20:54
260 查看
http://ac.jobdu.com/problem.php?pid=1086
#include <stdio.h>
#include <cstdlib>
#include <algorithm>
int main(){
//freopen("in/1086.in","r",stdin);
long long l1,l2,l3,c1,c2,c3;
int A,B;
int n=0;
int* a;
long long *dp;
while(scanf("%lld %lld %lld %lld %lld %lld",&l1,&l2,&l3,&c1,&c2,&c3)!=EOF ){
scanf("%d %d",&A,&B);
scanf("%d",&n);
a = (int*) malloc((unsigned) (n+1)*sizeof(int));
dp = (long long *) malloc((unsigned) (n+1) *sizeof(long long));
for (int i = 2; i <= n; ++i) {
scanf("%d",&a[i]);
}
a[1] = 0;
for (int i = A; i <=B ; ++i) dp[i] = 99999999999;
dp[A] = 0;
for (int i = A+1; i <=B; ++i) {
int j;
// l1
for (j = i-1; j >=A && a[i] - a[j] <=l1; j--) {
dp[i] = std::min(dp[i], dp[j]+c1);
}
//l2
for (;j>=A && a[i]-a[j] <=l2 ; j--){
dp[i] = std::min(dp[i],dp[j] + c2);
}
//l3
for (;j>=A && a[i]-a[j]<=l3; j--) {
dp[i] = std::min(dp[i],dp[j]+c3);
}
}
printf("%lld\n",dp[B]);
}
}
#include <stdio.h>
#include <cstdlib>
#include <algorithm>
int main(){
//freopen("in/1086.in","r",stdin);
long long l1,l2,l3,c1,c2,c3;
int A,B;
int n=0;
int* a;
long long *dp;
while(scanf("%lld %lld %lld %lld %lld %lld",&l1,&l2,&l3,&c1,&c2,&c3)!=EOF ){
scanf("%d %d",&A,&B);
scanf("%d",&n);
a = (int*) malloc((unsigned) (n+1)*sizeof(int));
dp = (long long *) malloc((unsigned) (n+1) *sizeof(long long));
for (int i = 2; i <= n; ++i) {
scanf("%d",&a[i]);
}
a[1] = 0;
for (int i = A; i <=B ; ++i) dp[i] = 99999999999;
dp[A] = 0;
for (int i = A+1; i <=B; ++i) {
int j;
// l1
for (j = i-1; j >=A && a[i] - a[j] <=l1; j--) {
dp[i] = std::min(dp[i], dp[j]+c1);
}
//l2
for (;j>=A && a[i]-a[j] <=l2 ; j--){
dp[i] = std::min(dp[i],dp[j] + c2);
}
//l3
for (;j>=A && a[i]-a[j]<=l3; j--) {
dp[i] = std::min(dp[i],dp[j]+c3);
}
}
printf("%lld\n",dp[B]);
}
}
相关文章推荐
- 九度OJ 题目1086:最小花费
- 九度OJ 1086:最小花费 (DP)
- 九度OJ 1086:最小花费 (DP)
- DP求最小花费 - 九度OJ 1086
- 九度OJ 题目1371:最小的K个数
- 九度OJ 题目1017:还是畅通工程 (最小生成树)
- 九度 OJ 题目1144:Freckles (kruskal算法 最小生成树)
- 【九度OJ】题目1187:最小年龄的3个职工 解题报告
- 题目1086:最小花费
- 九度OJ题目1020:最小长方形
- 九度oj 题目1020:最小长方形【ZJU2007考研机试题1】
- 题目1086:最小花费
- 九度OJ-题目1170:找最小数-10计院上机B
- 九度oj 题目1053:互换最大最小数
- 九度 oj 题目1209:最小邮票数
- OJ_1086 最小花费
- 题目1086:最小花费
- 【剑指Offer面试编程题】题目1386:旋转数组的最小数字--九度OJ
- 九度OJ-题目1504:把数组排成最小的数
- 题目1086:最小花费 ( 动态规划 )