• HDU-1257 最少拦截系统 ( 贪心 )


    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1257

    Problem Description
    某 国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能 超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
    怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
     
    Input
    输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
     
    Output
    对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
     
    Sample Input
    8 389 207 155 300 299 170 158 65
     
    Sample Output
    2
     
    贪心,对于每一个导弹,在已存在的拦截系统中搜索,如果可以被拦截,则加入差最小的系统中,否则添加一个系统。
     
     1 #include<iostream>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 
     6 const int INF = 0x3f3f3f3f;
     7 int dp[1000];
     8 
     9 int main(){
    10     int n;
    11     ios::sync_with_stdio( false );
    12 
    13     while( cin >> n ){
    14         int ans = 0, temp;
    15 
    16         while( n-- ){
    17             cin >> temp;
    18             int mini, min = INF, flag = 0;
    19 
    20             for( int i = 0; i < ans; i++ ){
    21                 if( temp < dp[i] && dp[i] - temp < min ){
    22                     min = dp[i] - temp;
    23                     mini = i;
    24                     flag = 1;
    25                 }
    26             }
    27 
    28             if( flag ) dp[mini] = temp;
    29             else{
    30                 dp[ans] = temp;
    31                 ans ++;
    32             }
    33         }
    34 
    35         cout << ans << endl;
    36     }
    37 
    38     return 0;
    39 }
  • 相关阅读:
    Unity在协程内部停止协程自身后代码执行问题
    unity如何停止不用字符串方式开启协程的方法
    解决导入protobuf源代码Unity报错的问题
    FastCGI模式编译安装LAMP+Xcache
    Apache配置防盗链
    Apache配置日志切割
    Apache配置参数的优化
    Apache三种工作模式详解
    隐藏Nginx、Apache、PHP的版本号
    配置Apache控制浏览器端的缓存的有效期
  • 原文地址:https://www.cnblogs.com/hollowstory/p/5351928.html
Copyright © 2020-2023  润新知