zoukankan      html  css  js  c++  java
  • HDU1257 最小拦截系统 【贪婪】

    最小拦截系统

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 18249    Accepted Submission(s): 7203


    Problem Description
    某国为了防御敌国的导弹突击,发展出一种导弹拦截系统.可是这样的导弹拦截系统有一个缺陷:尽管它的第一发炮弹可以到达随意的高度,可是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.因为该系统还在试用阶段,所以仅仅有一套系统,因此有可能不能拦截全部的导弹.
    怎么办呢?多搞几套系统呗!你说说倒蛮easy,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少须要多少套拦截系统.
     

    Input
    输入若干组数据.每组数据包含:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
     

    Output
    相应每组数据输出拦截全部导弹最少要配备多少套这样的导弹拦截系统.
     

    Sample Input
    8 389 207 155 300 299 170 158 65
     

    Sample Output
    2
     
    water

    #include <stdio.h>
    #include <vector>
    using std::vector;
    
    int main()
    {
    	int n, i, a, t, j, ans;
    	vector<int> vec;
    	vector<bool> vis;
    	while(scanf("%d", &n) == 1){
    		vec.clear();
    		vis.clear();
    		for(i = 0; i < n; ++i){
    			scanf("%d", &a);
    			vec.push_back(a);
    			vis.push_back(false);
    		}
    		for(i = ans = 0; i < n; ++i){
    			if(vis[i]) continue;
    			a = vec[i]; ++ans;
    			for(j = i + 1; j < n; ++j){
    				if(vis[j]) continue;
    				if(a >= vec[j]){
    					vis[j] = 1; a = vec[j];
    				}
    			}
    		}
    		printf("%d
    ", ans);
    	}
    	return 0;
    }


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    java编程思想概括(第二章)一切都是对象
    java编程思想概括(第六章)复用类
    .net程序在无.net环境下运行
    一个让人哭笑不得的触发器
    iReaper for android
    博易博客删除垃圾评论
    解决博易2.0版分页问题
    允许更新此预编译站点的作用
    java包的命名规则技巧
    简易拨号器iCall
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4739615.html
Copyright © 2011-2022 走看看