hdu 1257

http://acm.hdu.edu.cn/showproblem.php?pid=1257

题意:有个拦截系统,这个系统在最开始可以拦截任意高度的导弹,但是之后只能拦截不超过这个导弹高度的导弹,现在有N个导弹需要拦截,问你最少需要多少个拦截系统

思路:按高度由大到小进行排序,然后在遍历这个,用一个数组继续每个导弹拦截系统可以拦截的最低高度,如果发现当前的点需要在所以的拦截系统拦截的最低高度之前,那么在加一个拦截系统

 

 1 import java.awt.Point;
 2 import java.io.BufferedReader;
 3 import java.io.File;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.InputStream;
 8 import java.io.InputStreamReader;
 9 import java.io.OutputStream;
10 import java.io.PrintStream;
11 import java.lang.reflect.Array;
12 import java.math.BigInteger;
13 import java.util.Arrays;
14 import java.util.Comparator;
15 import java.util.Random;
16 import java.util.Scanner;
17 import java.util.StringTokenizer;
18 
19 public class Main {
20     public static void main(String[] args) throws FileNotFoundException{
21     //    InputReader cin = new InputReader(System.in);
22         Scanner cin = new Scanner(System.in);
23         int t;
24         Point p[] = new Point[20005];
25         for(int i =0;i<20005;i++)
26             p[i] = new Point();
27         int cnt[] = new int[20005];
28         while(cin.hasNext()){
29             t = cin.nextInt();
30             for(int i =0;i<t;i++){
31                 p[i].x = cin.nextInt();
32                 p[i].y = i;
33             }
34             Arrays.sort(p,0,t,new zxc());
35             cnt[0] = p[0].y;
36             int res = 1;
37             for(int i = 1,j;i<t;i++){
38             //    System.out.println(p[i].x+"   "+p[i].y);
39                 for(j = 0;j<res;j++){
40                     if(p[i].y>cnt[j]){
41                         cnt[j] = p[i].y;
42                         break;
43                     }
44                 }
45                 if(j==res){
46                     cnt[res++] = p[i].y;
47                 }
48             }
49             System.out.println(res);
50         }
51     }
52 }
53 
54 
55 class zxc implements Comparator<Point>{
56 
57     
58     public int compare(Point a, Point b) {
59         if(a.x==b.x)
60             return a.y-b.y;
61         return b.x-a.x;
62     }
63     
64 }

 

转载于:https://www.cnblogs.com/Tree-dream/p/7451790.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值