首页 > 其他分享 >#yyds干货盘点# 动态规划专题:合唱队形

#yyds干货盘点# 动态规划专题:合唱队形

时间:2022-10-28 18:31:31浏览次数:71  
标签:同学 yyds num nums int max 合唱队 干货 dp

1.简述:

描述

N位同学站成一排,音乐老师要请其中的 (N-K) 位同学出列,使得剩下的K位同学排成合唱队形。

合唱队形是指这样的一种队形:设K位同学从左到右依次编号为 1,2…,K,他们的身高分别为 T1,T2,…,TK,  则他们的身高满足 #yyds干货盘点# 动态规划专题:合唱队形_初始化

你的任务是,已知所有 n 位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。

数据范围: #yyds干货盘点# 动态规划专题:合唱队形_数据_02 ,身高满足 #yyds干货盘点# 动态规划专题:合唱队形_初始化_03

输入描述:

第一行输入一个正整数 n 表示同学的总数。

第二行有 n 个整数,用空格分隔,第 i 个整数 ti 是第 i 位同学的身高(厘米)。

输出描述:

输出仅有一个整数,即最少需要几个同学出列

示例1

输入:

8
186 186 150 200 160 130 197 220

输出:

4

2.代码实现:

import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int num = in.nextInt();
int[] nums = new int[num];
for(int i=0;i<num;i++){
nums[i] = in.nextInt();
}
// 连自己 左边 满足条件的最大值
// nums[i] > nums[k] dp[i] = max(dp[i], dp[k] +1);
int[] dp_l = new int[num];
// 右边满足条件的最大值
int[] dp_r = new int[num];
//初始化 左边包括自己 全部设成1
for(int i=0;i<num;i++){
dp_l[i] =1;
}
// 求值
for(int i=1;i<num;i++){
for(int k=0;k<i;k++){
if(nums[i]>nums[k]) dp_l[i] = Math.max(dp_l[i],dp_l[k]+1);
}
}
for(int i=num-2;i>=0;i--){
for(int k=num-1;k>i;k--){
if(nums[i]>nums[k]) dp_r[i] = Math.max(dp_r[i],dp_r[k]+1);
}
}
int max=1;
for(int i=0;i<num;i++){
max = Math.max(max, dp_l[i] + dp_r[i]);
}
System.out.println(num-max);
}
}
}

标签:同学,yyds,num,nums,int,max,合唱队,干货,dp
From: https://blog.51cto.com/u_15488507/5805246

相关文章

  • #yyds干货盘点# 动态规划专题:信封嵌套
    1.简述:描述给n 个信封的长度和宽度。如果信封a 的长和宽都小于信封b ,那么信封a 可以放到信封b 里,请求出信封最多可以嵌套多少层。数据范围:  , 要求:空间复杂度 ......
  • #yyds干货盘点# 前端歌谣的刷题之路-第一百四十二题-单列布局
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了......
  • #yyds干货盘点# 前端歌谣的刷题之路-第一百四十题-flex-grid
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了......
  • #yyds干货盘点#vue的防抖
    在监听频繁触发的事件时,一定要多加小心,比如用户在输入框打字、窗口大小调整、滚动、IntersectionObserver事件。这些事件总是被频繁触发,可能几秒一次。如果针对每次事件......
  • #yyds干货盘点# 动态规划专题:拦截导弹
    1.简述:描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发......
  • #yyds干货盘点# LeetCode 腾讯精选练习 50 题:全排列
    题目:给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。 示例1:输入:nums=[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2]......
  • #yyds干货盘点# LeetCode 腾讯精选练习 50 题:最大子数组和
    题目:给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。 示例1:输入:nums=[-2,1,-3,4,-1,......
  • #yyds干货盘点#前端迪米特法则
    迪米特法则(LawofDemeter)又叫做最少知识原则,也就是说,一个对象应当对其他对象尽可能少的了解。不和陌生人说话。英文简写为:LoD。迪米特法则的目的在于降低类之间的耦合......
  • #yyds干货盘点#【愚公系列】2022年10月 微信小程序-数据绑定
    前言1.小程序页面结构微信小程序的页面结构主要是分别由四个文件组成:js(逻辑处理文件):负责页面逻辑内容的处理,遵循js语言框架。json(配置文件):用来设置页面的窗口内容,......
  • #yyds干货盘点# leetcode-136 只出现一次的数字
    本题可以用异或运算,规则是同0,最后剩下的数字就是只出现一次的数字/**<p>给定一个<strong>非空</strong>整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出......