首页 > 其他分享 >187. 导弹防御系统

187. 导弹防御系统

时间:2023-03-07 17:56:46浏览次数:56  
标签:int downcnt up 导弹 num 187 ans upcnt 防御

题目来源

acwing

题目难度

3星

程序

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

const int N = 55;

int n;

int up[N];  //上升的导弹系统的最后一个导弹高度(数组单调递减)
int down[N];  //下降的导弹系统的最后一个导弹高度(数组单调递增)

int num[N];
int ans;

//当前正在考虑num[u]
void dfs(int u, int upcnt, int downcnt)
{
    if(upcnt + downcnt >= ans) //剪枝
    {
        return;
    }
    if(u > n)
    {
        ans = min(ans, upcnt+downcnt);
        return;
    }
    
    //将当前导弹u放入上升的导弹系统up
    int k = 0;
    while(k < upcnt && up[k] >= num[u])
    {
        k ++;
    }
    int t = up[k];
    up[k] = num[u];
    if(k == upcnt)  //开一个新数列
    {
        dfs(u+1, upcnt+1, downcnt);
    }
    else
    {
        dfs(u+1, upcnt, downcnt);
    }
    up[k] = t;
    
    //将当前导弹u放入下降的导弹系统down
    k = 0;
    while(k < downcnt && down[k] <= num[u])
    {
        k ++;
    }
    t = down[k];
    down[k] = num[u];
    if(k == downcnt)
    {
        dfs(u+1, upcnt, downcnt+1);
    }
    else
    {
        dfs(u+1, upcnt, downcnt);
    }
    down[k] = t;
}

int main()
{
    
    while(cin >> n, n != 0)
    {
        for(int i = 1; i <= n; i ++)
        {
            cin >> num[i];
        }
        ans=  n;
        dfs(1, 0, 0);
        cout << ans << endl;
    }
    return 0;
}

标签:int,downcnt,up,导弹,num,187,ans,upcnt,防御
From: https://www.cnblogs.com/chaosliang/p/17188955.html

相关文章

  • 防御DDOS攻击
    如何防御DDOS攻击1、采用高性能的网络设备首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。再就是假......
  • Web开发的常用攻击和防御方式
    一、XSS主要利用:1.盲目相信用户提交的内容2.直接把用户的字符串转化成DOM分类:1.存储型XSS,恶意脚本存在数据库中,所有访问页面的用户都会被攻击2.反射型XSS,脚本写在URL......
  • 信息安全之常见web漏洞原理危害防御方法
    一暴力破解概述:在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。为了提高效率,......
  • 从防御视角探讨ChatGPT对网络安全的影响
    从防御视角探讨ChatGPT对网络安全的影响专家介绍ChatGPT的核心优势是通过基于自然语言处理技术模型、情景模型和语言模型来自动生成文章和代码。在前面的文章中,我们从......
  • SQL注入绕过及简单防御
    绕过当注入语句正常但依然无回显或回显错误时,判定注入的语句被绕过了大小写绕过通过修改正常sql注入语句,为大小写夹杂的注入语句,如:?id=-1’UnionSelect1,2,3--+注释......
  • 缓冲区溢出攻击是什么意思?防御措施有哪些?
    缓冲区溢出攻击是利用缓冲区溢出漏洞所进行的攻击行为,是一种非常普遍、非常危险的漏洞,也是最常见的网络攻击手段,该攻击虽然简单但危害性极大。那么缓冲区溢出攻击是什么......
  • 使用 Angular Universal 进行服务器端渲染的防御性编程思路
    如果无法从Angular平台注入所需的正确全局值,则可以避免调用浏览器代码,只要不需要在服务器上访问该代码即可。例如,全局窗口元素的调用通常是为了获取窗口大小或其他一些视......
  • 使用 Angular Universal 进行服务器端渲染的防御性编程思路
    如果无法从Angular平台注入所需的正确全局值,则可以避免调用浏览器代码,只要不需要在服务器上访问该代码即可。例如,全局窗口元素的调用通常是为了获取窗口大小或其他一些......
  • 畅通工程续(HDU 1874)(简单最短路)
    某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的......
  • 恒创科技:高防IP防御DDoS攻击的原理是什么?
    高防IP是一个防御DDOS攻击的产品,我们知道防御DDOS攻击的有高防服务器、高防云服务器、高防CDN以及高防IP这几种方法,在以往的内容中我们多次介绍过高防服务器是如何防御D......