最少拦截系统

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

Problem Description
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
Input
输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
Output
对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
Sample Input
8 389 207 155 300 299 170 158 65
Sample Output
2
因为没有给导弹个数的范围,所以不敢开数组去存下来,只好往着边输入边解决的方法去计算。
思路:暴力更新区间。
 1 #include<cstdio>
 2 #include<cstring>
 3 using namespace std;
 4 const int maxn=30006;
 5 bool dp[maxn];
 6
 7 int main()
 8 {
 9     int n;
10     while( ~scanf("%d",&n)){
11         int top=0,ans=0,num;
12         memset( dp, false, sizeof dp);
13         for(int i=1;i<=n;i++){
14             scanf("%d",&num);
15             if(num>=top){
16                 ans++;
17                 dp[num]=true;
18                 top=num;
19             }
20             else{
21                 int j;
22                 for(j=num;j<=top;j++){
23                     if(dp[j]) break;
24                 }
25                 if(j==top){
26                     dp[top]=false;
27                     dp[num]=true;
28                     top=num;
29                 }
30                 else{
31                     dp[j]=false;
32                     dp[num]=true;
33                 }
34             }
35         }
36         printf("%d\n",ans);
37     }
38     return 0;
39 }

因为这道题目的是被某神放在dp里面,本菜鸡实在是没有想到dp的方法,就上网查题解看有没有人用dp去做的。

发现真的可以把导弹的每一个都存下来,然后用LIS。。。

说实话,把每个导弹的高度都存下来我就没有想。然而,确实能存。

下面的代码来自:https://blog.csdn.net/hurmishine/article/details/52926957

 1 #include<cstdio>
 2 const int maxn=10000;
 3 int a[maxn],dp[maxn];
 4 int n;
 5
 6 int LIS()
 7 {
 8     dp[1]=1;
 9     int ans=1;
10     for(int i=2;i<=n;i++){
11         int m=0;
12         for(int j=1;j<i;j++){
13             if(dp[j]>m&&a[j]<a[i])
14                 m=dp[j];
15         }
16         dp[i]=m+1;
17         if(dp[i]>ans)
18             ans=dp[i];
19     }
20     return ans;
21 }
22
23 int main()
24 {
25     while( ~scanf("%d",&n)){
26         for(int i=1;i<=n;i++)
27             scanf("%d",&a[i]);
28         printf("%d\n",LIS());
29     }
30     return 0;
31 }

转载于:https://www.cnblogs.com/ZQUACM-875180305/p/9090234.html

hdoj 1257(暴力)相关推荐

  1. 状态压缩 + 暴力 HDOJ 4770 Lights Against Dudely

    题目传送门 题意:有n*m的房间,'.'表示可以被点亮,'#'表示不能被点亮,每点亮一个房间会使旁边的房间也点亮,有意盏特别的灯可以选择周围不同方向的房间点亮.问最少需要多少灯使得所有房间点亮 分析: ...

  2. HDOJ 5131 Song Jiang's rank list(暴力排序水题)

    Song Jiang's rank list Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java ...

  3. HDOJ ACM 题目

    转载 HDOJ 题目分类(转) 1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 H ...

  4. 逆序数2 HDOJ 1394 Minimum Inversion Number

    题目传送门 1 /* 2 求逆序数的四种方法 3 */ 1 /* 2 1. O(n^2) 暴力+递推 法:如果求出第一种情况的逆序列,其他的可以通过递推来搞出来,一开始是t[1],t[2],t[3]. ...

  5. HDOJ 1012-1020

    最近感冒了,有点小咳嗽,做题速度比较慢,本以为这周会做的比较少,没想到全是水题...我做的也蛮开心的@.@...对自己无语 HDOJ 1012 这个题目蛮简单,就是输出格式比较烦,处理好格式基本就没问 ...

  6. bzoj 1257: [CQOI2007]余数之和sum

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 4462  Solved: 2078 [Submit][ ...

  7. HDOJ题目分类大全

    版权声明:本文为博主原创文章,欢迎转载,转载请注明本文链接! https://blog.csdn.net/qq_38238041/article/details/78178043 杭电里面有很多题目, ...

  8. hdoj杭电问题分类

    杭电上的题虽然多,但是一直苦于找不到问题分类,网页都是英文的,所以平时做题也没怎么看,今天仔细一看,问题分类竟然就在主页....做了那么久的题居然没发现,表示已经狗带..不要笑,不知道有没有像我一样傻 ...

  9. HDU 6085 Rikka with Candies (暴力压位)

    题目链接 HDU 6085 Rikka with Candies 分析 其实很容易想到一个有技巧的暴力方法,我们可以这样办 首先对于每一个 AiA_i 我们考虑比 AiA_i 大的部分 BB ,对于这 ...

最新文章

  1. 浅谈“三层结构”原理与用意(转帖)
  2. 《计算机科学与工程导论:基于IoT和机器人的可视化编程实践方法第2版》一1.1 计算机科学和工程的课程体系及职业发展...
  3. subtext3php,sublime text3怎么快速查找和替换?快捷键是什么
  4. 面试中的智力题及编程实践(二)
  5. php验证码显示碎图片,我的验证码只显示破碎的小图片
  6. 缓存框架——Redis(一)
  7. MaxCompute命令行工具——odpscmd的操作使用
  8. python opencv 将lena图像嵌入空白画布处
  9. .Net Core 使用swagger UI
  10. java摇号抽奖程序_HTML5教程之年终摇号抽奖小程序
  11. TabHost眼睛会骗人
  12. Jira+Confluence+Fisheye+Crucible安装步骤清单
  13. 网络工程——HCNA网络技术的简单配置
  14. Matlab中的元胞数组(cell)
  15. 你为什么总是做出错误的选择?
  16. TSN算法的PyTorch代码解读(训练部分)
  17. 求和计算机教案,面试真题gt;小学信息技术《自动求和》教学设计
  18. 谭浩强c语言视频教程bt种子,c语言视频教程BT种子文件(谭浩强)
  19. 51nod oj 1489 蜥蜴和地下室【dfs】
  20. cas协议官方文档的理解(除代理模式)

热门文章

  1. P2415 集合求和(python3实现)
  2. QT Core | 信号槽03 - 自定义信号与槽
  3. 苹果ios浏览器里面数字被当做电话号码
  4. 川大 计算机 博士 毕业要求,川大酝酿新规:博士生毕业不能直接当讲师
  5. springboot 获取项目路径_怎样学习 SpringBoot
  6. Linux笔记-查询进程,获取其运行时输入的参数
  7. Kafka笔记-kafka外网搭建及构建生产者
  8. oracle 9i闪回schema,Oracle 9i闪回查询的新特性
  9. c++调用求平方根函数_如何使用java语言求一个正整数的平方根?(不使用库函数)...
  10. CentOS系统自动下载RPM包及其所有依赖的包(离线部署)