洛谷java实现(P1091合唱队形)

(Java实现) 洛谷 P1091合唱队形 题目描述 NN位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的KK位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K1,2,…,K,他们的身高分别为 T5<T3 < T1 > T2>T4 (就是身高最高的在中间,小的依次往两边排) 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同... 阅读详情

题目连接:https://www.luogu.com.cn/problem/P1091

这题和导弹拦截特别像,本质都是求最长上升子序列。

import java.util.Scanner;
/**
 * 贪心优化-时间复杂度 :O(nlogn)
 */
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] datas = new int[n];
        for (int i = 0; i < n; i++) {
            datas[i] = in.nextInt();
        }
        int len = 0;
        int[] top = new int[n];
        int[] increase = new int[n];
        for (int i = 0; i < n; i++) {//求1—n到的最长上升
            int data = datas[i];
            int begin = 0, end = len;
            while (begin < end) {
                int mid = (begin + end) >> 1;
                if (data <= top[mid]) {//严格递增
                    end = mid;
                } else {
                    begin = mid + 1;
                }
            }
            top[begin] = data;
            if (begin == len) {
                len++;
            }
            increase[i] = len;
        }
        len = 0;
        int[] top2 = new int[n];
        int[] decrease = new int[n];
        for (int i = n - 1; i >= 0; i--) {//求n-1到的最长上升
            int data = datas[i];
            int begin = 0, end = len;
            while (begin < end) {
                int mid = (begin + end) >> 1;
                if (data <= top2[mid]) {//严格递增
                    end = mid;
                } else {
                    begin = mid + 1;
                }
            }
            top2[begin] = data;
            if (begin == len) {
                len++;
            }
            decrease[i] = len;
        }
        int ans = 0;
        for (int i = 0; i < n; i++) {
            ans = Math.max(ans, increase[i] + decrease[i] - 1);//最终相遇时的最大数是必定同一个数,减掉重复计算的最大数
        }
        System.out.println(n - ans);
    }
}
洛谷-【动态规划】- P1091 合唱队形 题目描述 NN位同学站成一排,音乐老师要请其中的(N-KN−K)位同学出列,使得剩下的KK位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K1,2,…,K,他们的身高分别为T_1,T_2,…,T_KT1​,T2​,…,TK​, 则他们的身高满足T_1&lt;...&lt;T_i&gt;T_{i+1}&gt;…&gt;T_K(1 \le i \le K)... 阅读详情

相关推荐

Python广度优先搜索BFS - 蓝桥13届省赛污染海域

请问这片N * M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该块海域上下左右被已污染的海域包围,且N * M以外的海域都为已被污染的海域)有一片海域划分为N * M个方格,其中有些海域已被污染(用0表示),有些海域没被污染(用1表示)。第二行开始输入N行,每行M个数字(数字只能为1或者0,1表示没被污染的海域,0表示已被污染的海域)这块4 * 5的海域,有3块海域(绿色)没被污染,因为每一块的上下左右都被污染的海域包围。输出一个整数,表示N * M的海域中有几块是没被污染的独立海域。

m0_69865359的博客 264

算法入门——洛谷第一章_顺序结构(JAVA)

详细讲解 洛谷入门第一章 附AC代码,常见错误,常用API 非常适合刚入门的小蒟蒻喵~

lonely__snow的博客 2084

yolov5 部署jetson nano(通用) 保姆级教学

Jetson nano从配置环境到yolov5成功推理检测全过程 文章目录Jetson nano从配置环境到yolov5成功推理检测全过程一、烧录镜像二、配置环境并成功推理1.更新系统和包2、配置环境2.1 配置CUDA2.2 修改Nano板的显存1.打开终端输入:2.修改nvzramconfig.sh文件:3.重启:4.终端输入:3、安装archiconda(也就是jetson nano板上的anaconda)1.下载地址:2.安装:3.测试conda:4.创建运行yolov5的虚拟环境:5.在conda

weixin_44312422的博客 3万+

算法入门——洛谷第二章_分支结构(JAVA)

详细讲解 洛谷入门第二章 附AC代码,解题思路,常见错误,常用API 非常适合刚入门的小蒟蒻喵~

lonely__snow的博客 1387

自定义LayoutManager实现android-pile-layout滑动卡片堆叠效果

这是我的第一篇博客,总算有个契机开始写博客了,就从自定义LayoutManager开始吧。 前段时间看到一个项目(android-pile-layout),效果特别不错,这是效果图: 效果确实不错,我看了下实现,是用的自定义的ViewGroup实现的,计算什么还搞的挺复杂的,具体的没细看。作者说也尝试过用LayoutManager实现,但是没找到合适的数学模型,好吧,看到数学模型我

u014296305的博客 1万+

别再只调A*算法了!聊聊ROS机器人导航中,OpenCV视觉信息如何与激光雷达数据“打配合”

本文探讨了ROS机器人导航中激光雷达与OpenCV视觉融合的实战策略,揭示了如何通过多模态感知提升导航精度。文章详细介绍了视觉特征到代价地图的转化方法、系统级挑战的工程解决方案,以及融合感知下的路径规划进化,帮助开发者优化机器人导航系统。

weixin_29278805的博客 226

入门(洛谷)JAVA

有的瓷砖可以踩,我们认为是安全的,而有的瓷砖一踩上去就会有喷出要命的毒气,那你就死翘翘了,我们认为是不安全的。你只能从一块安全的瓷砖上走到与他相邻的四块瓷砖中的任何一个上,但它也必须是安全的才行。由于你是黄蓉的朋友,她事先告诉你哪些砖是安全的、哪些砖是不安全的,并且她会指引你飞到第一块砖上(第一块砖可能在任意安全位置),现在她告诉你进入桃花岛的秘密就是:如果你能走过最多的瓷砖并且没有死,那么桃花岛的大门就会自动打开了,你就可以从当前位置直接飞进大门了。. 代表安全的砖,# 代表不安全的砖,@代表第一块砖。

Narnat的博客 714

Unity URP管线下的Highlight Plus插件,从导入到实现物体高亮的保姆级避坑指南

本文详细解析了在Unity URP管线中使用Highlight Plus插件实现物体高亮的完整流程与常见问题解决方案。从URP环境配置、插件导入避坑到相机设置优化,提供了一套完整的保姆级指南,帮助开发者高效解决高亮效果不显示等典型问题,并包含移动端性能优化与复杂场景管理的高级技巧。

weixin_27379781的博客 408

算法入门——洛谷第三章_循环结构(JAVA)

洛谷入门第三章 附AC代码,解题思路,常见错误,常用API 喵~

lonely__snow的博客 1316

2023推免(夏令营+套实验室)面试总结(博文附问题汇总和参考答案)

2023推免(夏令营+套实验室)面试总结(博文附问题汇总和参考答案)

m0_51339444的博客 1804

ABAP CDS SELECT, parameters 全面解析:把参数化视图玩明白(含可运行示例)

这篇技术博客介绍了ABAP CDS中参数化视图的用法与实践。文章从业务需求出发,解释了参数化视图的必要性,并详细说明了语法规则、参数类型匹配、视图内部参数引用等关键点。重点展示了在JOIN和ASSOCIATION中传递参数的写法,提供了航线分析的完整业务案例和可运行代码示例。文章还总结了视图实体与DDIC视图的差异、会话变量使用技巧等实践要点,特别强调了JOIN中必须显式传参的语法要求。通过真实场景演示,帮助开发者掌握参数化CDS的高效应用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 362

Java写洛谷_1

使用idea创建项目习惯了,突然使用洛谷还无从下手(主要是没有代码补全)。方法输出字符串 "Hello, World!的类(洛谷java运行好像只能用main)方法是Java程序的入口点。2.其中包含一个名为。

qq_62911742的博客 1150

【Bluetooth蓝牙开发】九、BLE协议之GATT

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 4760

洛谷 P1091 合唱队形 dp 最长升序列的升级版

//参考洛谷题解区第一个 //https://www.luogu.org/problemnew/solution/P1091 //考点核心步骤,dp求最长递增子序列,两数字可以不相邻 //思路是以每一位为升序列的结尾,求出以每一位为结尾的最长递增子序列 //状态转移方程为 //for(int i=1;i<=n;i++) { // for(int j=0;j<i;j++) {循...

aiwo1376301646的博客 254

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

洛谷P1091合唱队形

传送门:https://www.luogu.com.cn/problem/P1091 这道题的话主要是一道求最长子序列的问题,但是是从正序和倒序开始求的,对于正序列的最长子序列可以看看LeetCode上的300号问题。求最长子序列当然是用dp呢具体的看下面的代码: import java.util.Arrays; import java.util.Scanner; /** * @author 小黎 * @date 2020/10/19 16:58 * @description 对于这道义来说的.

qq_43209102的博客 214

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

洛谷 P1091 合唱队形

题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K,他们的身高分别为T_1,T_2,…,T_K, 则他们的身高满足T_1<...<T_i>T_{i+1}>…>T_K 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以...

anshuo0835的博客 251

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

洛谷P1091 合唱队形

题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1 < …Ti+1 > … > TK(1 <= i <= K)。 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。 输入 第一行是一个整数N(2 <= N <= 200),表示同学的总数。 第二

LOSER_LU的博客 281

P1091 合唱队形题解(洛谷,动态规划LIS,单调队列)

先上题目 P1091 合唱队形(点击打开题目) 题目解读: 1.由T1​<...<Ti​和Ti​>Ti+1​>…>TK​可以看出这题涉及最长上升子序列和最长下降子序列 2.注意点:当n=1时是允许的,就是说没有因为i=1,Ti=T1,所以最后全部人都要出列这种说法 初步思路: 建立两个函数,一个参数为l,r,判断l~r内最长上升子序列的最大长度,另外...

weixin_34321977的博客 159

蓝桥算法训练__普及组.Day13

P2858 [USACO06FEB]Treats for the Cows G/S - 洛谷 | 计算机科学教育新生态 P1470 [USACO2.3]最长前缀 Longest Prefix - 洛谷 | 计算机科学教育新生态 P1091 [NOIP2004 提高组] 合唱队形 - 洛谷 | 计算机科学教育新生态

hxw453的博客 331

Java洛谷刷题(入门1)

P1001 A+B Problem import java.util.*; public class Main { public static void main(String []args){ Scanner x=new Scanner(System.in); int a=x.nextInt(); int b=x.nextInt(); System.out.println(a+b);} } P1000 超级玛丽游戏 import java.util.*; publi

mingshengda的博客 2640

洛谷 P1219 八皇后

题目: 一个如下的 6×6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。 上面的布局可以用序列2\ 4\ 6\ 1\ 3\ 5246135来描述,第ii个数字表示在第ii行的相应位置有一个棋子,如下: 行号1\ 2\ 3\ 4\ 5\ 6123456 列号2\ 4\ 6...

xiaolan7777777的博客 714

洛谷 P1255 数楼梯 JAVA详解

楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶。对于 100% 的数据,1≤N≤5000。编一个程序,计算共有多少种不同的走法。对于 60%的数据,N≤50;

yangbo417的博客 390

【洛谷】P1226 快速幂(java)

编程改变世界 快速幂(ab):它基于二分法的思想,因此也常被称为二分幂,快速幂基于以下事实: 如果b是奇数,那么有ab = a * ab -1 如果b是偶数,那么有ab = a(b/2) * a(b/2)。 显然,b是奇数的情况总是可以在下一步转换为b是偶数的情况,而b是偶数的情况总可在下一步转换为b/2的情况。这样,在 log(b) 级别次数的转换后,就可以把b变成0,而任何正整数的0次方都是1. 所以时间复杂度为O(logb) 代码如下: public static long bin(lo

北海_南风 402

java 洛谷题单【入门6】函数与结构体

两个解法用到的判断质数的方法都是一样的,只是主函数的调用不同。设计一个学生类,包括需要输出的变量,调用类方法解决问题。通过对每个数据设定数组处理数据。

Hdejac的博客 674

洛谷[P1255数楼梯] Java解答

动态规划解决爬楼梯问题

zhangjiahao1125的博客 330
上一篇: 洛谷java实现(P2029跳舞)
下一篇: 蓝桥杯(测试次数)
Wchert
博客等级 码龄7年 7粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值