当前位置:编程学习 > JAVA >>

Java程序练习-泄洪

 

泄洪

时间限制: 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); 

    } 

}   

作者 冰非寒

补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,