zoukankan      html  css  js  c++  java
  • 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);
    	}
    }
    
    
  • 相关阅读:
    Python字符编码详解
    Python 编程规范
    希尔排序
    浅析 Python 的 metaclass
    c#通过数据集生成浏览页面
    QQ搜索群参数详解
    扩展名为HTM或HTML的文件图标不能正常显示的解决方案
    利用QQ2009协议,将抓包直接解密出ClientKey(SessionKey)
    用Sql语句还原,分离,删除数据库连接
    asp.net 导出excel 问题 (服务器的部署)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12948944.html
Copyright © 2011-2022 走看看