---恢复内容开始---

最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 38242 Accepted Submission(s): 15029 Problem Description

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.

某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,

请帮助计算一下最少需要多少套拦截系统.

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

Output 对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统. Sample Input 8 389 207 155 300 299 170 158 65 Sample Output 2

最开始想的便是lis,不过貌似跑偏了,计算出最大反序lis,然后根据标记查找最少需要几台,不过算法有问题巴拉巴拉不过-。-;

神测试数据:10 3 6 5 3 2 1 0 5 4 3 答案应是2(65543/33210),按我的就是3(hhhh

好吧然后就是贪心了,先把第一胎加入系统数组中,接着如果后面的比他小/==便无需在新购一台,更改比他大的最小机器即可,

反之加入一台新机器。大小就是他,不过貌似不用每次sort,因为按照这个逻辑机器的顺序恰是升序嘻嘻; 代码:

#include<bits/stdc++.h>

using namespace std;

int main() {

int i,j,n,k,l,sum,a[1005],temp[1005]; //a[i]也不必开数组

while (cin>>n){ sum=-1;

for (i=1;i<=n;i++){

int flag=1;

cin>>a[i];

if (i==1) temp[++sum]=a[i];

for (j=0;j<=sum;j++){

if (temp[j]>=a[i]) {

temp[j]=a[i];

flag=0;

break; } }

if (flag) temp[++sum]=a[i]; //加入新机器中

}

cout<<sum+1<<endl; }

return 0; }

然后发现麻麻的直接求一遍lis就ac了汗死:

#include<bits/stdc++.h>

using namespace std;

int lis(int n,int a[]) {

int i,j,macn,dp[1005]={0},sum=0;

for (i=1;i<=n;i++) {

macn=0; for (j=1;j<i;j++) {

if (a[j]<a[i]&&dp[j]>macn) macn=dp[j];

}

dp[i]=macn+1;

sum=max(sum,dp[i]); }

return sum; }

int main() {

int a[1005],n,i,j;

while (cin>>n){

for (i=1;i<=n;i++)

cin>>a[i];

cout<<lis(n,a)<<endl; }

return 0; } 炮弹发射高度递减,如果后面一台大于前面的高度,就不能拦截后面的这台,所以要多一台系统

简单证明: a b c d 假设a<c<d, 则b>d/b<a,

当b>d时,此时a/bc/d 三台;

当b<a时,此时ab/c/d三台

所以b总可与左边或右边的结合为一台;

---恢复内容结束---

hdu 1257 LIS (略坑5的更多相关文章

  1. HDU 1257——最少拦截系统——————【LIS变型题】

    最少拦截系统 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  2. HDU 1257 最少拦截系统(Dilworth定理+LIS)

    最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. HDU 1257 最少拦截系统 最长递增子序列

    HDU 1257 最少拦截系统 最长递增子序列 题意 这个题的意思是说给你\(n\)个数,让你找到他最长的并且递增的子序列\((LIS)\).这里和最长公共子序列一样\((LCS)\)一样,子序列只要 ...

  4. 【贪心】HDU 1257

    HDU 1257 最少拦截系统 题意:中文题不解释. 思路:网上有说贪心有说DP,想法就是开一个数组存每个拦截系统当前最高能拦截的导弹高度.输入每个导弹高度的时候就开始处理,遍历每一个拦截系统,一旦最 ...

  5. 怒刷DP之 HDU 1257

    最少拦截系统 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  6. HDU 1257 最少拦截系统 (DP || 贪心)

    最少拦截系统 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  7. POJ 1065 Wooden Sticks / hdu 1257 最少拦截系统 DP 贪心

    参考链接:http://blog.csdn.net/xiaohuan1991/article/details/6956629 (HDU 1257 解题思路一样就不继续讲解) POJ 1065题意:给你 ...

  8. HDU 1257 最少拦截系统(贪心 or LIS)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1257 最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)   ...

  9. hdu 1257 最少拦截系统【贪心 || DP——LIS】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1257 http://acm.hust.edu.cn/vjudge/contest/view.action ...

随机推荐

  1. 《开始使用Linux》单元测验 1

    C语言编写的应用程序,通过printf打印一个换行符\n,但在终端上执行的是回车加换行\r\n,把换行符替换为回车换行是由下面哪个软件模块完成的? Linux内核中的行律模块 下面哪个命令可以获得ma ...

  2. Entity Framework Core

    Entity Framework是一种支持 .NET 开发人员使用 .NET 对象处理数据库的对象关系映射程序 (O/RM). 它不要求提供开发人员通常需要编写的大部分数据访问代码. Entity F ...

  3. 解决pip ReadTimeoutError问题

    参考: 更新pip时报错:Read Timeout Error 解决pip ReadTimeoutError问题 问题:在Mac OSX系统下使用pip install时报错: ReadTimeout ...

  4. Sublime Text3 插件:DocBlockr与javascript注释规范

    原:http://www.ithao123.cn/content-719950.html 1.引子 在写代码的时候,尤其是写脚本,最需要注释了.目前脚本.样式的注释格式都有一个已经成文的约定规范(这些 ...

  5. jQuery中的$(window).load()与$(document).ready()以及jquery $(document).ready() 与window.onload的区别

    大多数jQuery实例或教程都告诉我们绑定我们的jQuery代码到$(document).ready事件.虽然$(document).ready 事件在大多数情况下都OK,但是它的解析顺序是在文档准备 ...

  6. 异步编程- async和await

    使用目的 避免阻塞主线程 提高程序响应能力 C#中使用 C# 中的 Async 和 Await 关键字是异步编程的核心. 疑惑 The async and await keywords don't c ...

  7. CSS sprites

    CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式. 优点: 它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一 ...

  8. JS字典 Dictionary类

    字典 Dictionary类 /*字典 Dictionary类*/ function Dictionary() { this.add = add; this.datastore = new Array ...

  9. Android IPC 结篇

    一.概述 Android 的 IPC 方式有 Bundle .共享文件.AIDL .Messenger .ContentProvider .Socket ,我们在实现进程间通信时要选择哪一种方式来实现 ...

  10. Dreamweaver 1 网页制作

    1.站点 1.1 创建站点 点击菜单栏中站点进行站点创建,输入站点名称,路径 1.2 设置图像文件夹 1.3 站点管理 站点的编辑.复制.删除 2.页面属性栏 2.1 外观 1.设置页面整体的字体.大 ...