zoukankan      html  css  js  c++  java
  • (Java实现) 拦截导弹

    1260:【例9.4】拦截导弹(Noip1999)

    时间限制: 1000 ms 内存限制: 65536 KB
    提交数: 4063 通过数: 1477

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

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

    【输入】
    n (一共n个导弹)
    输入导弹依次飞来的高度。

    【输出】
    第一行:最多能拦截的导弹数;

    第二行:要拦截所有导弹最少要配备的系统数。

    【输入样例】
    389 207 155 300 299 170 158 65
    【输出样例】
    6
    2
    思路:

    求最多能拦截的导弹数就是求最长不上升子序

    求拦截系统数,就是求最长上升子序

    import java.util.Scanner;
    
    
    public class lanjiedaodanwenti {
    	public static void main(String args[]) {
    		Scanner sc = new Scanner(System.in);
    //		
    //		String str = sc.nextLine();
    //		String[] s = str.split(" ");
    		int n = sc.nextInt();
    		int[] num = new int[n];
    //		for(int i=0; i<s.length; i++) num[i] = Integer.parseInt(s[i]);
    		for (int i = 0; i <n; i++) {
    			num[i]=sc.nextInt();
    		}
    		int[] dp_1 = new int[n];
    		int[] dp_2 = new int[n];
    		for(int i=0; i<n; i++) {
    			dp_1[i] = 1; dp_2[i] = 1;
    		}
    		for(int i=0; i<n; i++) {
    			for(int j=0; j<i; j++) {
    				if(num[i]<=num[j]) {
    					dp_1[i] = Math.max(dp_1[i], dp_1[j]+1);
    				}else {
    					dp_2[i] = Math.max(dp_2[i], dp_2[j]+1);
    				}
    			}
    		}
    //		for(int i=0; i<s.length; i++) System.out.print(dp_1[i]+" ");
    //		System.out.println();
    //		for(int i=0; i<s.length; i++) System.out.print(dp_2[i]+" ");
    //		System.out.println();
    		int ans_1 = -1, ans_2 =-1;
    		for(int i = 0; i<n; i++) {
    			ans_1 = Math.max(ans_1, dp_1[i]);
    			ans_2 = Math.max(ans_2, dp_2[i]);
    //			System.out.print(num[i]+" ");
    		}
    //		System.out.println();
    		System.out.println(ans_1);
    		System.out.println(ans_2);	
    	}
    }
    
    
  • 相关阅读:
    python note 30 断点续传
    python note 29 线程创建
    python note 28 socketserver
    python note 27 粘包
    python note 26 socket
    python note 25 约束
    Sed 用法
    python note 24 反射
    python note 23 组合
    python note 22 面向对象成员
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13079063.html
Copyright © 2011-2022 走看看