先看原题:
明明家从 11 号站点出发,开车去旅游,一共要经过 nn 个站点,依次为 2 , 3 , ... , n2,3,...,n 。
由于明明带上了心爱的小猫,在每个站点都要为小猫提供一条鱼用做美餐(包括 11 号站点)。
除了 11 号站点只能吃 11 号站点买的鱼,其它站点既可以吃当地买的鱼,也可以吃之前经过的站点买了存入车载冰箱中的鱼。
但车载冰箱消耗的电能来自汽油,所以每条鱼用冰箱保存到下一站的费用与各站点的汽油价格有关。
为使问题简化,我们约定:
-
车从某站开出时油箱中都是此站点刚加的汽油。
-
车载冰箱能容纳一路上需要的所有鱼。
即:每条鱼的费用既包括购买时的费用,也包括用冰箱保存鱼的费用。
为了降低小猫吃鱼的总代价,明明预先上网查到了这 nn 个站点的鱼价和汽油价格。并据此算出每个站点买一条鱼的费用以及从该站点到下一站用冰箱保存一条鱼的费用。你能帮明明算出这一路上小猫吃鱼的最小费用吗?
【输入格式】
第一行:站点数 nn (2 ≤ n ≤ 1002≤n≤100) 。
接下来的 nn 行:每行两个以空格分隔的正整数,表示:这一站买一条鱼的费用,以及从这一站把每条鱼保存到下一站的费用,两个费用均为小于等于 1000010000 的正整数。
【输出格式】
输出最小总费用,是一个正整数。
可以看出题目还是有点难度的,
代码如下:
import java.util.Scanner;
class Damo{
public static void main(String[] args) {
Scanner a=new Scanner(System.in);
int n=a.nextInt();//n个站台
int arr1[]= new int[100] ,arr2[]= new int[100];
for(int i=0;i<n;i++) {
arr1[i]=a.nextInt();//买
arr2[i]=a.nextInt();//运
}
int min=9999999,t=0;
for(int i=0;i<n;i++) {
if(min>arr1[i])//在该赞,要么买一条与,要么从上一站买
//如果还要从上一站买,那还要加运费
min=arr1[i];
t+=min;//买鱼钱
min+=arr2[i];//该站卖鱼与运费总和
}
System.out.println(t);
}
}