题目1086:最小花费
2014-01-05 22:40
211 查看
import java.io.IOException; import java.io.FileReader; import java.io.BufferedReader; import java.util.Scanner; import java.lang.Math; class Main { public static final boolean DEBUG = false; public static void main(String[] args) throws IOException { Scanner cin; int l1, l2, l3, c1, c2, c3; int a, b; int n; long[] dis; long[] f; if (DEBUG) { cin = new Scanner(new BufferedReader(new FileReader("d:\\OJ\\uva_in.txt"))); } else { cin = new Scanner(System.in); } while (cin.hasNext()) { l1 = cin.nextInt(); l2 = cin.nextInt(); l3 = cin.nextInt(); c1 = cin.nextInt(); c2 = cin.nextInt(); c3 = cin.nextInt(); a = cin.nextInt(); b = cin.nextInt(); if (a > b) { int tmp; tmp = a; a = b; b = tmp; } n = cin.nextInt(); dis = new long[n + 1]; f = new long[n + 1]; for (int i = 2; i <= n; i++) { dis[i] = cin.nextLong(); } for (int i = b; i > a; i--) { dis[i] -= dis[i - 1]; } //System.out.println(Long.MAX_VALUE); for (int i = a; i <= b; i++) f[i] = Long.MAX_VALUE / 2; f[a] = 0; for (int i = a + 1; i <= b; i++) { long len = 0; for (int j = i - 1; j >= a; j--) { len += dis[j + 1]; if (len <= l1) { f[i] = Math.min(f[i], f[j] + c1); } else if (len <= l2) { f[i] = Math.min(f[i], f[j] + c2); } else if (len <= l3) { f[i] = Math.min(f[i], f[j] + c3); } else break; } } System.out.println(f[b]); } } }
相关文章推荐
- 题目1086:最小花费 ( 动态规划 )
- 题目1086:最小花费
- 题目1086:最小花费
- 九度OJ 题目1086:最小花费
- 题目1086:最小花费
- 九度 oj 题目1086:最小花费
- 九度OJ 1086 清华大学2011年机试 《最小花费》
- 九度OJ 1086 最小花费
- DP求最小花费 - 九度OJ 1086
- JD 1086:最小花费(dp)
- 九度OJ 1086:最小花费 (DP)
- 九度OJ 1086:最小花费 (DP)
- FZU 2197 最小花费(思维题目)
- 九度OJ 1086 最小花费--动态规划
- OJ_1086 最小花费
- 九度OJ 1086 最小花费--动态规划
- 九度题目1209:最小邮票数
- 最小生成树,POJ和HDU几道题目的解题报告(基于自己写的模板)
- 九度 题目1371:最小的K个数
- 单源最短路径+最小花费生成树