拦截导弹(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

相关文章

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G