拦截导弹(cin 最长上升子序列模型 函数形参为数组)

2023-10-19 14:59

本文主要是介绍拦截导弹(cin 最长上升子序列模型 函数形参为数组),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
在分析这个问题之前,我们到不如先来说一下对于这种给定的样例,应该怎么输入:
两种方法一种用stringstream类来解决还有一种就是最简单的:

while (cin >> a[n]) n++;

循环来解决,这个循环在回车的时候结束,输入的n就是所需要的个数。

或:

#include <sstream>.
int main() {string line;getline(cin, line);stringstream ssin(line);while (ssin >> h[n]) n ++ ;return 0;
}

这一题有两个问题,第一个是最直接的最小非上升子序列问题,可以用二分O(nlogn)的方法计算出来,主要是第二个问题,需要几套防御系统。需要用到贪心的思想,这一题贪心的思想是创建一个数组g[],这个数组是单调递增的,g[i]表示当前第i套防空系统的所能防御导弹的最低高度,如果现在这枚导弹的高度比当前所有g[i]都高,则新开一个g

里面在做二分时,传了一个数组,这里传递的就是数组的首地址,所以在函数里面改变m[i],相当于对函数体外的数组q[i],进行了改变

#include <iostream>using namespace std;
const int N = 1010;
int a[N], g[N];
int q[N], tt, hh;
int n;void find (int x, int m[], int l, int r) {while (l < r) {int mid = (l + r) >> 1;if (x <= m[mid]) l = mid + 1;else r = mid;}m[r] = x;
}int main() {while (cin >> a[n]) n++;for (int i = 0; i < n; i++) {if (i == 0) q[0] = a[i];else if (a[i] <= q[tt]) q[++tt] = a[i];else find(a[i], q, hh, tt);}cout << tt - hh + 1 << endl;int cnt = 0;for (int i = 0; i < n; i++) {int k = 0;while (k < cnt && g[k] < a[i]) k++;g[k] = a[i];if (k == cnt) cnt++;}cout << cnt << endl;return 0;
}

这篇关于拦截导弹(cin 最长上升子序列模型 函数形参为数组)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/240549

相关文章

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程