• 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;
    }


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

  • 相关阅读:
    《区块链100问》第38集:比特币钱包是干嘛的?
    《区块链100问》第39集:冷钱包热钱包
    《区块链100问》第40集:全节点钱包和轻钱包
    《区块链100问》第41集:比特币可以用于支付吗?
    《区块链100问》第42集:区块链和比特币的关系
    《区块链100问》第43集:区块链技术发展史
    KindEditor使用
    Django之验证码
    Django之ModelForm
    Django之Form详解
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4739615.html
Copyright © 2020-2023  润新知