蓝桥与力扣刷题(蓝桥 蓝桥骑士)

news/2025/3/31 5:54:12/

题目:小明是蓝桥王国的骑士,他喜欢不断突破自我。

这天蓝桥国王给他安排了 N 个对手,他们的战力值分别为 a1,a2,...,an,且按顺序阻挡在小明的前方。对于这些对手小明可以选择挑战,也可以选择避战。

身为高傲的骑士,小明从不走回头路,且只愿意挑战战力值越来越高的对手。

请你算算小明最多会挑战多少名对手。

输入描述

输入第一行包含一个整数 NN,表示对手的个数。

第二行包含 N 个整数 a1,a2,...,an​,分别表示对手的战力值。

1≤N≤3×10^5,1≤ai​≤10^9。

输出描述

输出一行整数表示答案。

输入输出样例

示例 1

输入

6
1 4 2 2 5 6

输出

4

解题思路+代码:

代码:

java">import java.util.Scanner;
import java.util.Arrays;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt(); // n个对手int[] enemy = new int[n]; //防止数组下标越界for(int i = 0; i<n; i++){enemy[i] = scan.nextInt();//填充n个对手的战力值}int[] tail = new int[n]; // tail[i] 存储长度为 i+1 的上升子序列的最小结尾元素int length = 0;//遍历n个对手for(int i = 0; i<n; i++){int left = 0, right = length; //声明数组的左右边界//二分查找while(left<right){ //左边边界 小于 右边边界int mid = (left + right) / 2; if(tail[mid] < enemy[i]){left = mid + 1; //左边边界右移}else{right = mid; //右边边界左移}}// 更新当前长度的最小结尾tail[left] = enemy[i];  // 如果 a[i] 比所有 tail 中的值都大,则扩展长度if(left == length){length++;}}System.out.println(length);scan.close();}
}

 总结:这时一道LIS(最长上升子序列)问题,必须采用 贪心 + 二分查找算法来解答。LIS的核心是必须按照原顺序选择对手,不能随意调整顺序,定义 tail[] 数组,tail[i] 表示长度为 i+1 的上升子序列的最小结尾元素。遍历每个对手,使用 二分查找 找到第一个比 enemy[i] 大的位置,替换或者扩展序列。最后输出的 tail[] 数组的长度就是 LIS 长度(length 表示当前找到的最长递增子序列的长度)


http://www.ppmy.cn/news/1583782.html

相关文章

人体的三个 Bug

写在前面&#xff1a;​【财富自由计算器】已上线&#xff0c;快算算财富自由要多少​ 我将违背我的天性&#xff0c;忤逆我的本能&#xff0c;永远爱你。——《自私的基因》 最近在看的一些书和课程&#xff0c;都提到了人类生理机制的特点&#xff0c;索性汇总到一块。 我愿…

UE4学习笔记 FPS游戏制作17 让机器人持枪 销毁机器人时也销毁机器人的枪 让机器人射击

添加武器插槽 打开机器人的Idle动画&#xff0c;方便查看武器位置 在动画面板里打开骨骼树&#xff0c;找到右手的武器节点&#xff0c;右键添加一个插槽&#xff0c;重命名为RightWeapon&#xff0c;右键插槽&#xff0c;添加一个预览资产&#xff0c;选择Rifle&#xff0c;根…

智能宠物门禁“黑白颠倒”?快瞳AI用双身份档案破解宠物身份识别难题

现象解读&#xff1a;同一只猫为何被AI“误判”为两只宠物&#xff1f; 在智能宠物门禁场景中&#xff0c;主人常发现&#xff1a;自家猫咪白天能轻松通过门禁&#xff0c;但到了夜晚却“无端被拒”。这并非AI“任性”&#xff0c;而是技术局限与宠物生理特征共同作用的结果&a…

MOSN(Modular Open Smart Network)-08-MOSN 扩展机制解析

前言 大家好&#xff0c;我是老马。 sofastack 其实出来很久了&#xff0c;第一次应该是在 2022 年左右开始关注&#xff0c;但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFAStack-00-sofa 技术栈概览 MOSN&#xff08;Modular O…

第六届电气、电子信息与通信工程国际学术会议 (EEICE 2025)

重要信息 官网&#xff1a;www.eeice.net&#xff08;点击了解参会投稿等&#xff09; 时间&#xff1a;2025年4月18-20日 地点&#xff1a;中国-深圳技术大学 简介 第六届电气、电子信息与通信工程 (EEICE 2025&#xff09;将于2025年4月18-20日在中国深圳召开。 EEICE 20…

(C语言)文本动态通讯录(动态通讯录升级版)(C语言小项目)

1.首先是头文件&#xff1a; //头文件 //contact.h//防止头文件被重复包含 #pragma once //定义符号常亮&#xff0c;方便维护和修改 //联系人基本信息容量 #define NAME_MAX 20 #define AGE_MAX 5 #define SEX_MAX 5 #define TELE_MAX 15 #define ADDR_MAX 30 //联系人最大容量…

数字图像处理 -- 霍夫曼编码(无损压缩)练习

算法的设计说明 目标 对彩色图像进行压缩&#xff0c;使用霍夫曼编码方法对图像的每个像素进行编码&#xff0c;从而减少其存储空间。解码时&#xff0c;能够恢复图像的原始像素数据&#xff0c;确保图像在经过压缩和解压后与原图像一致。 输入 原始图像&#xff08;以RGB格…

【Java】时间戳转耗时时长

目录 一、方法 1、代码 2、使用示例 二、工具类 1、代码 2、使用示例 三、项目地址 1、GitHub 2、Gitee 一、方法 1、代码 public static String convert(long timestamp) {if (timestamp < 0) {return "0s";}long oneSecond 1000;long oneMinute 60…