Java程序练习-泄洪

2014-11-24 03:02:54 · 作者: · 浏览: 0

泄洪

时间限制: 10000ms内存限制: 10240kB

描述

有一个淹水的车站,共分n层,从上至下编号1~n。已知每层现有水量Wi,另外还知道每层的水量超过Li就会自动泄洪,把所有的水泻入i+1层。工作人员手动控制第i层泄洪,但需要Pi的费用。

求工作人员至少需要花多少费用,才能使全部n层泄洪。

输入

第一行,1个数,n(<15000)

第二行,n个数,表示w[1]~w[n]

第三行,n个数,表示L[1]~L[n]

第四行,n个数,表示P[1]~P[n]

(除n外,每个整数不超过1000)

输出

一个数,表示总需要花费的钱数sum

样例输入

4

5 6 7 8

8 7 19 20

15 25 22 40

样例输出

37

参考代码

/*

* flood discharge 2011-10-6 12:36PM Eric Zhou

*/

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class Main {

public static void main(String[] args) throws IOException{

BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));

int n = Integer.parseInt(cin.readLine().trim());

int w[] = new int[n];

int l[] = new int[n];

int p[] = new int[n];

int i = 0;

String sw[] = cin.readLine().split(" ");

for(i = 0;i < n;++ i)

w[i] = Integer.parseInt(sw[i]);

String sl[] = cin.readLine().split(" ");

for(i = 0;i < n;++ i)

l[i] = Integer.parseInt(sl[i]);

String sp[] = cin.readLine().split(" ");

for(i = 0;i < n;++ i)

p[i] = Integer.parseInt(sp[i]);

int v = 0;

for(i = 0;i < n;++ i){

if(w[i] <= l[i]){

if(i + 1 < n)

w[i + 1] += w[i];

v += p[i];

}else{

if(i + 1 < n)

w[i + 1] += w[i];

}

}

System.out.println(v);

}

}

作者 冰非寒