zoukankan      html  css  js  c++  java
  • Gone Fishing

    原题网址

    代码已经写出来了,自己测试的时候没有问题,提交上去之后反馈了我一个Runtime error  一口老血啊!

    找了半天还是没找到可能越界啊啥的地方

    import java.util.Scanner;
    import java.util.Arrays;
    import java.util.Queue;
    import java.util.LinkedList;
    //import java.math.*;
    //import java.util.Arrays;
    public class Main {
        public static void main(String[] args){
            Queue<Question> question=new LinkedList<Question>();
            Scanner sc=new Scanner(System.in);
            int n=sc.nextInt();
            while(n!=0){
                int h=sc.nextInt();
                int fi[]=new int[n];
                int di[]=new int[n];
                int ti[]=new int[n-1];
                for(int i=0;i<n;i++) fi[i]=sc.nextInt();
                for(int i=0;i<n;i++) di[i]=sc.nextInt();
                for(int i=0;i<n-1;i++)ti[i]=sc.nextInt()*5;
                Question qu=new Question(n,h,fi,di,ti);
                question.add(qu);
                n=sc.nextInt();
            }
            sc.close();
            while(!question.isEmpty()){
                Question next=question.remove();
                next.doSomething();
                if(next.answer!=null)
                    System.out.print(next.answer[0]*5);
                for(int i=1;i<next.answer.length;i++)
                    System.out.print(", "+next.answer[i]*5);
                //for(int i:next.answer)
                    //System.out.print(i*5+",");
                System.out.println("
    Number of fish expected: "+next.number+"
    ");
                //System.out.println(next.ti[next.ti.length-1]);
            }
        }
    }
    class Question{
        int n;
        int h;
        int[] fi;
        int[] di;
        int[] ti;
        int[] answer;
        int number;//用于保存最多可以钓多少鱼
        private int temp;
        Question(int a,int b,int[] c,int[] d,int [] e){
            n=a;h=b;fi=Arrays.copyOf(c,c.length);di=Arrays.copyOf(d, d.length);ti=Arrays.copyOf(e, e.length);
        }
        public void doSomething(){
            int max=0;int[] temp0 = null;
            for(int i=1;i<=n;i++){
                int x=h*60;
                for(int j=0;j<i-1;j++) x-=ti[j];
                int[] temp1=getBest(i,x,Arrays.copyOf(fi, i),Arrays.copyOf(di, i));
                if(temp>max){
                max=temp;    
                temp0=temp1;
                }
            }
            number=max;
            answer=temp0;
        }
        private int[] getBest(int n,int h,int[] fi,int[] di){
            temp=0;int[] list=new int[this.n];
            for(int i=0;i<h;i+=5){
                int max=0;int flag=0;
                for(int j=0;j<n;j++){
                    if(max<fi[j]){
                        flag=j;max=fi[j];
                    }
                }
                temp+=fi[flag];
                list[flag]++;
                //h-=5;
                fi[flag]=fi[flag]>di[flag]?fi[flag]-di[flag]:0;
            }
                
            return list;
        }
    }
  • 相关阅读:
    RIP2与OSPFv2 动态路由协议区别
    Linux平台下SSD的TRIM指令的最佳使用方式(不区别对待NVMe)
    MLNX网卡驱动安装
    字符串/字符数组读入(char/string)
    【NOIP2016模拟3】图书列表
    活动选择-贪心
    数列极差问题-STL优先队列-贪心
    货物搬运-贪心
    【NOIP 2002提高】均分纸牌-贪心
    【HAOI2008】糖果传递-贪心
  • 原文地址:https://www.cnblogs.com/liujinming/p/7608834.html
Copyright © 2011-2022 走看看