AcWing 482. 合唱队形
482. 合唱队形
N 位同学站成一排,音乐老师要请其中的 (N−K) 位同学出列,使得剩下的 K 位同学排成合唱队形。
合唱队形是指这样的一种队形:设 K位同学从左到右依次编号为 1,2…,K,他们的身高分别为 T1,T2,…,TK, 则他们的身高满足 T1<…<Ti>Ti+1>…>TK(1≤i≤K)。
你的任务是,已知所有 N 位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。
输入格式
输入的第一行是一个整数 N,表示同学的总数。
第二行有 N 个整数,用空格分隔,第 i 个整数 Ti是第 i 位同学的身高(厘米)。
输出格式
输出包括一行,这一行只包含一个整数,就是最少需要几位同学出列。
数据范围
2≤N≤100
130≤Ti≤230
输入样例:
8
186 186 150 200 160 130 197 220输出样例:
4假设最优解的中心是第 i 个人,则 T1,T2,…,Ti 一定是以 Ti 结尾的最长上升子序列。同理,TK,TK−1,…,Ti也一定是以 Ti 结尾的最长上升子序列。因此可以先预处理出:
从前往后以每个点结尾的最长上升子序列长度 f[i];
从后往前以每个点结尾的最长上升子序列长度 g[i];
那么以 k 为中心的最大长度就是 f[k] + g[k] - 1,遍历 k = 1, 2, ..., n 取最大值即为答案。
求最长上升子序列问题(LIS)可以参考 AcWing 895. 最长上升子序列。
时间复杂度
本题数据范围只有 100,因此可以用朴素的LIS求解方式,时间复杂度是 O(n2),使用贪心 + 二分可以将时间复杂度优化到 O(nlogn),具体可以参考 AcWing 896. 最长上升子序列 II。
AC代码如下:
#include <bits/stdc++.h>
using namespace std;int n;
int bxj[101];//以第i位同学为终点的最长不下降序列的长度
int bss[101];//以第i位同学为起点的最长不上升序列的长度
int t[101];int main()
{int maxn = 0;scanf("%d", &n);for(int i = 1; i <= n; i++){scanf("%d", &t[i]);}
// memset(bss, 1, sizeof(bss));
// memset(bxj, 1, sizeof(bxj));bxj[1] = 1;bss[n] = 1;for(int i = 1; i <= n; i++){maxn = 0;for(int j = 1; j < i; j++){if(t[i] > t[j])if(bxj[j] > maxn)maxn = bxj[j]; }bxj[i] = maxn + 1;}for(int i = n - 1; i >= 1; i--){maxn = 0;for(int j = i + 1; j <= n; j++){if(t[i] > t[j])if(bss[j] > maxn)maxn = bss[j];}bss[i] = maxn + 1;}maxn = 0;for(int i = 1; i <= n; i++){if((bxj[i] + bss[i]) > maxn)maxn = bxj[i] + bss[i];}cout << n - maxn + 1 << endl;
// for(int i = 1; i <= n; i++)
// {
// cout << i << " " ;
// }
// cout << endl;
// for(int i = 1; i <= n; i++)
// {
// cout << bxj[i] << " " ;
// }
// cout << endl;
// for(int i = 1; i <= n; i++)
// {
// cout << bss[i] << " " ;
// }return 0;
}
相关文章:
AcWing 482. 合唱队形
482. 合唱队形N 位同学站成一排,音乐老师要请其中的 (N−K) 位同学出列,使得剩下的 K 位同学排成合唱队形。 合唱队形是指这样的一种队形:设 K位同学从左到右依次编号为 1,2…,K,他们的身高分别为…...
Pytorch深度学习实战3-4:通俗理解张量Tensor的爱因斯坦求和(附实例)
目录1 爱因斯坦求和由来2 爱因斯坦求和原理3 实例:字母表示法3.1 向量运算3.2 矩阵运算3.3 张量运算4 实例:常量表示法4.1 向量运算4.2 矩阵运算4.3 张量运算1 爱因斯坦求和由来 爱因斯坦求和约定(Einstein summation convention)是一种标记的约定&#…...
GEE学习笔记 五十六:GEE中如何把文件导出到Google Drive的子目录
今天在群里看到有人在问一个问题,如何使用GEE把文件导出到Google Drive的子目录中?这里我就简单的说一下这个问题。 首先,在GEE中我们都知道了如何将数据导出导出Google Drive的文件夹中,如下面的一个例子: var geome…...
【Go基础】数据库编程
文章目录1. SQL语法简介2. MySQL最佳实践3. Go SQL驱动接口解读4. 数据库增删改查5. stmt6. SQLBuilder6.1 Go-SQLBuilder6.2 Gendry6.3 自行实现SQLBuilder7. GORM8. Go操作MongoDB1. SQL语法简介 SQL(Structured Query Language)是一套语法标准&#…...
【颠覆软件开发】华为自研IDE!未来IDE将不可预测!
IDE是软件开发生态的入口,但目前我们所使用的IDE基本都是由国外巨头提供,比如Visual Studio、Eclipse、JetBrains。这些IDE具有很高的断供风险,与操作系统、芯片、编程语言一样,非常重要。 随着越来越多的软件开始采用云上开发模…...
怎样从零基础学黑客
可以说想学黑客技术,要求你首先是一个“T”字型人才,也就是说电脑的所有领域你都能做的来,而且有一项是精通的。因此作为一个零基础的黑客爱好者来说,没有良好的基础是绝对不行的,下面我就针对想真正学习黑客的零基础朋…...
burp小程序抓包
身为一名码农,抓包肯定是一项必备技能。工作中遇到很多次需要对小程序进行抓包排查问题。下面分享一下我的抓包方式,使用的是电脑版小程序抓包,跟手机的方式都差不多的。 一、环境 微信版本:3.6.0.18 Burpsuite版本:…...
文件上传攻击骚操作
允许直接上传shell 只要有文件上传功能,那么就可以尝试上传webshell直接执行恶意代码,获得服务器权限,这是最简单也是最直接的利用。 允许上传压缩包 如果可以上传压缩包,并且服务端会对压缩包解压,那么就可能存在Zip …...
Scala流程控制(第四章:分支控制、嵌套分支、switch分支、for循环控制全、while与do~while、多重与中断)
文章目录第 4 章 流程控制4.1 分支控制 if-else4.1.1 单分支4.1.2 双分支4.1.3 多分支4.2 嵌套分支4.3 Switch 分支结构4.4 For 循环控制4.4.1 范围数据循环(To)4.4.2 范围数据循环(Until)4.4.3 循环守卫4.4.4 循环步长4.4.5 嵌套…...
华为OD机试真题Python实现【整理扑克牌】真题+解题思路+代码(20222023)
整理扑克牌 题目 给定一组数字,表示扑克牌的牌面数字,忽略扑克牌的花色,请安如下规则对这一组扑克牌进行整理。 步骤一: 对扑克牌进行分组,规则如下 当牌面数字相同张数大于等于4时,组合牌为炸弹;三张相同牌面数字+两张相同牌面数字,且三张牌与两张牌不相同时,组合牌…...
【春秋云境】CVE-2022-28525
靶标介绍: ED01-CMS v20180505 存在任意文件上传漏洞 打开靶场: 盲猜一波弱密码admin:admin就进去了。登录后在图中位置点击进行图片更新,需要将密码等都写上 抓包将图片信息进行替换,并修改文件名: POST /admin…...
Android设置取消系统闹钟
系统闹钟包名:com.android.deskclock 调用系统闹钟,首先在清单文件AndroidManifest.xml中添加权限: <uses-permission android:name"com.android.alarm.permission.SET_ALARM" />设置系统闹钟: public static v…...
使用 Node.js 多进程提高任务执行效率
什么是 Node 多进程? Node 是在单个线程中运行,我们虽然没办法开启额外的线程,但是可以开启进程集群。这样可以让下载任务和上传任务同时进行。 使用多进程进行初步代码优化 const dl require(./download.js) const ul require(./upload…...
[Golang实战]github.io部署个人博客hugo[新手开箱可用][小白教程]
[Golang实战]github.io部署个人博客hugo[新手开箱可用][小白教程]1.新手教程(小白也能学会)2.开始准备2.1myBlog是hugo的项目1.安装Hugo2.创建hugo项目2.2 xxxx.github.io是github.io中规定的pages项目3.成功部署4.TODO自动化workflows部署github.io1.新手教程(小白也能学会) …...
50个 Pandas 高频操作技巧,建议收藏
在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。 下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序、数据的修改、数据迭代以及函数的使用 文章目录技术交流01、复杂查询1、逻辑运算2、逻辑筛选数据3、函数筛…...
pygraphviz安装教程
0x01. 背景 最近在做casual inference,做实验时候想因果图可视化,遂需要安装pygraphviz,整了一下午,终于捣鼓好了,真头大。 环境: win10操作系统python3.9环境 0x02. 安装Graphviz 传送门:…...
HarmonyOS Connect认证测试
在HarmonyOS Connect生态产品的认证测试过程中,你是否存在这些疑问:认证流程具体包括哪些操作环节?如何根据实际场景选择合适的认证方式?如何选择认证测试标准的版本…… 本期FAQ为大家带来HarmonyOS Connect认证测试的常见问题…...
Datawhale团队第九期录取名单!
Datawhale团队 公示:Datawhale团队成员Datawhale成立四年了,从一开始的12个人,学习互助,到提议成立开源组织,做更多开源的事情,帮助更多学习者,也促使我们更好地成长。于是有了我们的使命&#…...
ChatGPT 的原理与未来研究方向
1、原理: 架构:chatGPT是一种基于转移学习的大型语言模型,它使用GPT-3.2 (Generative PretrainedTransformer2)模型的技术,使用了transformer的架构,并进行了进一步的训练和优化。InstructGPT/…...
基于UIAutomation+Python+Unittest+Beautifulreport的WindowsGUI自动化测试框架主入口main解析
文章目录1 main.py主入口2 testcase目录2.1 实例:test\_test\_mymusic.py2.2 实例:test\_toolbar.py3 page目录3.1 page/mymusic.py3.2 page/toolbar.py注: 1、本文为本站首发,他用请联系作者并注明出处,谢谢ÿ…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
