• Java实现 洛谷 导弹拦截


    题目描述
    某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

    输入导弹依次飞来的高度(雷达给出的高度数据是 le 50000≤50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

    输入输出格式
    输入格式:
    11行,若干个整数(个数 le 100000≤100000)

    输出格式:
    22行,每行一个整数,第一个数字表示这套系统最多能拦截多少导弹,第二个数字表示如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
    输入输出样例
    输入样例#1:
    389 207 155 300 299 170 158 65
    输出样例#1:
    6
    2

    import java.util.Scanner;
    
    public class daodanlanjie {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		String s = sc.nextLine();
    		sc.close();
    		// int n = sc.nextInt();
    		String[] ss = s.split(" ");
    		int n = ss.length;
    		int[] num = new int[n];
    		for (int i = 0; i < num.length; i++) {
    			num[i] = Integer.valueOf(ss[i]);
    		}
    		int chang = -1;
    		int count = -1;
    		int[] dp1 = new int[n];
    		int[] dp2 = new int[n];
    		for (int i = 0; i < n; i++) {
    			dp1[i] = 1;
    			dp2[i] = 1;
    			for (int j = 0; j < i; j++) {
    				if (num[j] >= num[i]) {
    					dp1[i] = Math.max(dp1[i], dp1[j] + 1);
    				} else {
    					dp2[i] = Math.max(dp2[i], dp2[j] + 1);
    				}
    			}
    
    			chang = Math.max(chang, dp1[i]);
    			count = Math.max(count, dp2[i]);
    
    		}
    
    		System.out.println(chang);
    		System.out.println(count);
    	}
    }
    
    
  • 相关阅读:
    学习认知:学习的本质
    Gin 参数验证(支持中英文翻译)
    tcp 端口状态说明
    Full gc问题排查
    99分位、95分位计算 实时分位数的统计方法
    RequestMapping中consumes 和produces的作用
    curl 中文参数问题
    exception:nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'XXX' in
    jvm gc调优实践
    curl get丢失参数问题
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13079221.html
Copyright © 2020-2023  润新知