导弹拦截问题(DP+贪心)
1. 拦截导弹(Noip1999)
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹数n及n颗导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
样例输入:
8
389 207155 300 299 170 158 65
样例输出:
6(最多能拦截的导弹数)
2(要拦截所有导弹最少要配备的系统数)
#include<iostream>
const int N=10010;
using namespace std;
int dp[N]; //dp[i]每一个位置的最大拦截数量
struct shell{
int height;
int shifou;
}man[N];
int main(){
int m,n,cur;
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>man[i].height;
man[i].shifou=0;
}
int maxmn=1;
int len=0;
for(int i=1;i<=m;i++){
for(int j=1;j<i;j++){
if(man[j].height>=man[i].height){
dp[i]=max(dp[i],dp[j]+1);//寻找最长下降子序列
}
maxmn=max(maxmn,dp[i]);
}
if(man[i].shifou==1)continue;
cur=man[i].height;
len++;
for(int t=i+1;t<=m;t++){
if(man[t].height<=cur){
cur=man[t].height;
man[t].shifou=1;
}
}
}
cout<<maxmn<<endl<<len;
return 0;
}
注释:第一问最长上升子序列(动态规划)
第二问贪心,用上一次系统中拦截高度最低的那个拦截本次的导弹,如果不行新加一套系统
导弹拦截问题(DP+贪心)的更多相关文章
- Vijos p1303导弹拦截(LIS+贪心)
传送门:https://vijos.org/p/1303 背景 实中编程者联盟为了培养技术精湛的后备人才,必须从基础题開始训练. 描写叙述 某国为了防御敌国的导弹突击,研发出一种导弹拦截系统. 可是这 ...
- HDU 1257 最少拦截系统 (DP || 贪心)
最少拦截系统 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- 洛谷 1020:导弹拦截(DP,LIS)
题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...
- POJ - 2533 Longest Ordered Subsequence与HDU - 1257 最少拦截系统 DP+贪心(最长上升子序列及最少序列个数)(LIS)
Longest Ordered Subsequence A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let ...
- 导弹拦截(dp复习)
题目描述:求最长下降子序列的长度 in: 71 7 3 5 9 4 8 out: 4 解释:1 3 4 8/1 3 5 8 长度为四 这让我想到了hdu上导弹拦截那道题,是求最长上升子序列长度 其转移 ...
- 导弹拦截问题 dp c++
// // Created by snnnow on 2020/4/13. // //每一次拦截只能是降续的导弹 //如果该次不能拦截成功,则拦截次数需要加一 //求每次最大拦截量,以及需要的拦截次数 ...
- POJ 1065 Wooden Sticks / hdu 1257 最少拦截系统 DP 贪心
参考链接:http://blog.csdn.net/xiaohuan1991/article/details/6956629 (HDU 1257 解题思路一样就不继续讲解) POJ 1065题意:给你 ...
- 洛谷 P1020 导弹拦截(dp+最长上升子序列变形)
传送门:Problem 1020 https://www.cnblogs.com/violet-acmer/p/9852294.html 讲解此题前,先谈谈何为最长上升子序列,以及求法: 一.相关概念 ...
- hdu 1257 最少拦截系统【贪心 || DP——LIS】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1257 http://acm.hust.edu.cn/vjudge/contest/view.action ...
随机推荐
- YOLO理解
一.YOLO v1 1.网络结构 (1)最后一层使用线性激活函数: (2)其他各层使用leaky ReLU的激活函数: 2.Training (1) 将原图划分为SxS的网格.如果一个目标的中心落入某 ...
- C# .NET 按ASCII 从小到大排序
//C#的SortedDictionary<string,string>集合对key不是按照ascii码排序的因为他没有区分大小写,这就是个差别. 如果参数名中间有大写,小写,数字,Sor ...
- pecl 更换对应php版本
转自 https://www.jianshu.com/p/fee58d93e8b1 版本问题 如果我们是通过apt-get或者yum安装的php,现在一般默认的都是php7.0版本. pecl安装过 ...
- JIRA的邮件通知
提交测试或提交上线申请时发送给相关的开发人员.测试人员.运维人员. 使用插件Notification
- 协程gevent
协程,利用线程在等待其他资源期间去执行其他的函数. gevent里面封装了greenlet,greenlet里面封装了yield. from gevent import monkey import g ...
- SpringCloudConfig配置中心git库以及refresh刷新
基于git库的Spring Cloud Config配置中心代码demo下载地址:https://gitlab.com/mySpringCloud/config-git SpringBoot版本: 1 ...
- android 版本号大小比较
https://www.jianshu.com/p/ee1990270ee1 网上找了很多方法都不太靠谱,有问题,自己改了改,亲试可以 大家都知道,版本号一般由以下几部分组成: 1. 主版本号 2. ...
- 阿里云linux yum源配置
1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的CentOS-Base ...
- php对函数的引用
function &example($tmp=0){ //定义一个函数,别忘了加“&”符 return $tmp; ...
- TensorFlow代码初识
直接看代码 import tensorflow as tf # tf.Variable生成的变量,每次迭代都会变化, # 这个变量也就是我们要去计算的结果,所以说你要计算什么,你是不是就把什么定义为V ...