计蒜客 2018蓝桥杯省赛 B组模拟赛(一) D题 LIS(java)

Java 第十一届 蓝桥杯 省模拟赛 梅花桩 小明每天都要练功,练功中的重要一项是梅花桩。   小明练功的梅花桩排列成 n 行 m 列,相邻两行的距离为 1,相邻两列的距离也为 1。   小明站在第 1 行第 1 列上,他要走到第 n 行第 m 列上。小明已经练了一段时间,他现在可以一步移动不超过 d 的距离(直线距离)。   小明想知道,在不掉下梅花桩的情况下,自己最少要多少步可以移动到目标。 输入格式   输入的第一行包含两个整数 n, ... 阅读详情

LIS


LIS是最长上升子序列。什么是最长上升子序列? 就是给你一个序列,请你在其中求出一段最长严格上升的部分,它不一定要连续。

就像这样:2, 3, 4, 7 和 2, 3, 4, 6 就是序列 2 5 3 4 1 7 6 的两个上升子序列,最长的长度是 4。



结果:

f[i]=max(f[i], f[j]+1);


思路:

其实这是一道动态规划的问题,最长不降子序列。

这道题类似于:https://blog.youkuaiyun.com/xiaodingqq/article/details/79641671,可以把这两道题一起来看。解题思路差不多的。

简单来说,也是相当于“累加”的过程。可以想象一下。哈哈


过程:

2 5 3 4 1 7 6

(下面的过程,箭头左边为序列,右边f[i]对应的下标赋值)

第一步:2 5 → 0 1

第二步:2 5 3 → 0 1 1 (因为2<3,所以3的f[2] + (2的f[0]+1)),加1是表示把“3”这个数加进去了

第三步:2 5 3 4 → 0 1 1 2 ( ……   因为3<3,所以4的f[3] + (3的f[2]+1)),加1是表示把“4”这个数加进去了

第四步:2 5 3 4 1 → 0 1 1 2 0 (…… 因为在1之前的序列中,没有比1再小了,所以只能保持默认的值0)

第五步:2 5 3 4 1 7 → 0 1 1 2 0 3

第六步:2 5 3 4 1 7 6 → 0 1 1 2 0 3 3

所以有两个上升子序列:2 3 4 7 和 2 3 4 6


代码如下:

import java.util.*;
import java.math.*;

public class Main {
    public static final int N = 1000;
    public static int[] f = new int[N];
    public static int[] b = new int[N];

    public static int max(int a, int b) {//返回最大值
        if (a > b) {
            return a;
        }
        return b;
    }

    public static int lis(int n) {
        int res = 0;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < i; ++j) {
                if (b[j] < b[i]) {//i 与 i前面的数j 进行比较
                	//+1:代表已经把i算进去了
                    f[i]=max(f[i], f[j]+1);//填空,动态规划
                    System.out.println(f[i]);
                }
            }
            System.out.println();
            res = max(res, f[i]);
        }
        return res+1;//最长的长度
    }

    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);

        int n = cin.nextInt();
        for (int i = 0; i < n; ++i) {
        	b[i] = cin.nextInt() ;
        }
        System.out.println("result:"+lis(n));
    }
}

蓝桥杯备赛避坑指南:从校赛落选到国三逆袭的实战经验分享 本文分享了从蓝桥杯校赛落选到国三逆袭的实战经验,详细解析了备赛初期的三大认知误区、高效刷题路线图设计、关键算法专题突破技巧以及参赛实战中的隐藏要点。通过精准策略和系统训练,帮助参赛者避免常见陷阱,提升竞赛成绩。 阅读详情

相关推荐

蓝桥杯通关指南 | 备赛规划 | 避坑要点

本文详细介绍了蓝桥杯备赛的全流程规划,包括语言选择、算法学习路线、刷题平台评测及考场实战避坑要点。通过科学的备赛策略和实用的学习技巧,帮助参赛者高效提升竞赛能力,避免常见错误,从而在蓝桥杯竞赛中取得优异成绩。

weixin_30631587的博客 300

找质数((

一天蒜头君猜想,是不是所有的偶数(除了22),都可以用两个质数相加得到呢?于是聪明的蒜头君就找你来验证了。 输入格式 第一行输入一个整数tt表示测试组数。 接下来tt行,每行一个整数nn。 输出格式 输出两个整数,因为答案可能有多个,所有要求输出的这两个整数是所有答案中字典序最小的。 数据范围 对于30\%30%的数据1 \le t \le 10^31≤t≤103。 对于60\%60%的数据1 \le t \le 10^51≤t≤105。 对于100\%100%...

wwenddy的博客 202

蓝桥杯 笔记整理【JavaB组省赛真题、约数、全排列模板、排列组合、等差等比求和公式、eclipse快捷键、集合、快速求a^n、进制转换(Integer、BigInteger)、动态数组Vector】

蓝桥杯 Java B组——省赛国赛真题 约数、和数(合数)、质数(素数) Java实现——素数(质数)判断 Java实现——求两个数的最大公约数gcd(a, b) 01背包 日期类题目——高斯的日记 最大子段和 最长公共子串 最长公共子序列 最长上升子序列 全排列模板 排列组合、命名方式、等差等比求和公式 eclipse快捷键 字符串、集合 快速求a^n 进制转换 方法一:利用 Integer 实现进制转换 方法二:利用 BigInteger实现进制转换 vector

upward 2280

计蒜客2019 蓝桥杯省赛 B 组模拟赛(一)

A. 结果填空:钟表 直接手算即可 30:24:26 - 22:28:45 = 07:55:41 。 B. 结果填空:青蛙爬井 按题意模拟即可 代码如下: public class Main { public static void main(String[] args) { int high = 60405, up = 105, dow = 35; int...

A0_Han的博客 1031

2018蓝桥杯省赛 Java语言B组 试题

2018-04-01 蓝桥杯个人赛-省赛 Java语言B组全部试题(1-10)

素数查找程序

素数查找程序代码,描述了如何查找素数,简要的介绍了素数查找的方法

计蒜客 2018 蓝桥杯省赛 B 组模拟赛(一)-D. 代码填空:LIS

LIS是最长上升子序列。什么是最长上升子序列? 就是给你一个序列,请你在其中求出一段最长严格上升的部分,它不一定要连续。就像这样:22, 33, 44, 77 和 22, 33, 44, 66 就是序列 22 55 3344 11 77 66 的两个上升子序列,最长的长度是 44。题目链接:点击打开链接分析:本题错了三次,下面的代码我做标记的是需要填空的,真是太大意了,本题一定要仔细看题,不连续的...

别止的博客 459

41-dify案例分享-基于database插件实现Text2sql的数据库查询图表工作流

本文介绍基于 Text2SQL 的 Dify 工作流实现过程。先阐述 Text2SQL 概念、步骤及应用领域。接着说明工作流制作,包括用 chatflow 加开场白、获取系统时间,配置 LLM 生成 SQL,用 SQL Execute 工具查询,经 LLM 汇总结果,代码生成 ECharts 数据,条件分支判断图表类型输出。最后介绍验证测试、提供体验地址,还提及借助工具生成建表和初始化数据 SQL 语句。

个人技术 1万+

计蒜客2019蓝桥杯省赛B组模拟赛(一)题目及解析

蓝桥杯历年真题题目及题解目录汇总 A. 结果填空:钟表题库链接 分值:5 一天蒜头君 22:28:45 开始睡觉,06:24:26 醒来之后,蒜头君在想,今天我睡了多久? 请你告诉蒜头君睡了"h:m:s",如果h,m,sh,m,s不足两位时,前面补00。 例如:蒜头君睡了1010小时11分钟00秒,那么请输出"10:01:00"(不包含引号)。 慢慢算,这...

一叶之修的博客 1万+

【mip-NeRF】使用一组二维图像渲染3D场景视频(mip-NeRF论文复现)

本文对mip-NeRF模型的pytorch实现进行了复现

Ryan2k的博客 1852

CE 7.4中文版实战:如何用自动汇编功能快速生成游戏修改器(附CT表保存技巧)

本文详细介绍了CE 7.4中文版中自动汇编功能的使用方法,帮助用户快速生成游戏修改器。从环境配置、内存地址定位到自动汇编代码注入,再到CT表保存和独立EXE生成,提供全流程实战指南,适合逆向工程爱好者和游戏修改器开发者。

keras9composer的博客 358

找质数(计蒜客:2019 蓝桥杯省赛 B 组模拟赛(一))

一天蒜头君猜想,是不是所有的偶数(除了 2),都可以用两个质数相加得到呢?于是聪明的蒜头君就找你来验证了。 输入格式 第一行输入一个整数 t 表示测试组数。 接下来 t行,每行一个整数 n。 输出格式 输出两个整数,因为答案可能有多个,所有要求输出的这两个整数是所有答案中字典序最小的。 数据范围 对于30% 的数据 1&lt;= t &lt;=10^3。 对于60% 的数据 1&l...

bingongzi的博客 1142

Gazebo仿真UUV水下机器人:从环境搭建到避障算法实战

本文详细介绍了使用Gazebo仿真平台进行UUV水下机器人开发的全流程,涵盖从环境搭建、uuv_simulator配置、传感器集成到核心避障算法实战。通过搭建水下仿真实验室并实现基于激光雷达数据的反应式避障算法,为水下机器人算法验证与开发提供了高效、低成本的解决方案。

weixin_28840591的博客 265

计蒜客 2019 蓝桥杯省赛 B 组模拟赛(题解)

结果填空:马的管辖 题目链接:https://nanti.jisuanke.com/t/A2236 题解:官方给的是二进制枚举,但是我没有看明白^菜^,先贴在这,慢慢体会。 #include &lt;cstdio&gt; #include &lt;cstring&gt; using namespace std; int px[4] = {0, 0, 1, -1}; int py[4] =...

Lomiss的博客 931

PCL 建筑物点云立面和平面分割提取【2025最新版】

在建筑物点云中,立面点和平面点的法向量存在明显的差异,根据法向量在Z方向的分量设置相应得阈值即可实现立面点与平面点的分割。

点云侠的博客 1963

当C#遇见声音魔法:从麦克风到文字的0.1秒奇幻漂流

为什么选300Hz?因为人声基频通常在85-255Hz,但清脆的“啊”可能到2kHz,所以300Hz是安全区!(参考知识库[1])

墨夶的博客 366

(水)2019 蓝桥杯省赛 B 组模拟赛(一)

结果填空:钟表 一天蒜头君 22:28:45 开始睡觉,06:24:26 醒来之后,蒜头君在想,今天我睡了多久? 请你告诉蒜头君睡了&amp;quot;h : m : s&amp;quot;,如果 h,m,s不足两位时,前面补0。 例如:蒜头君睡了 10小时 1 分钟 0 秒,那么请输出&amp;quot;10:01:00&amp;quot;(不包含引号)。 题解 妥妥大水题,手推结果&amp;quot;07:55:41&amp;quot; 结果填

咖啡的博客 5239

MOS管驱动电路设计全攻略

MOS管驱动电路设计全攻略

让你爱上电路设计 3639

【模拟赛】2019 蓝桥杯省赛 B 组模拟赛(一)

A(填) 钟表 方法一:利用 23:59:60 B(填) 青蛙爬井 方法一:枚举 * 危,严重错误:算出来是 862,感觉心都凉了。day 竟然是从 1 开始的。 import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { i...

无敌兔0x01 557

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

2019 蓝桥杯省赛 B 组模拟赛(一)(Java)

结果填空:钟表 手动算一下 class Main { public static void main(String[] args) { System.out.println("07:55:41"); } } 结果填空:青蛙爬井 简单的模拟 class Main { public static void main(String[] args) {...

辞树 541

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

2020蓝桥杯模拟赛大学B组java组 摆动序列 DFS

2020蓝桥杯模拟赛大学B组java组 摆动序列 DFS 8.dp 8.问题描述   如果一个序列的奇数项都比前一项大,偶数项都比前一项小,则称为一个摆动序列。即 a[2i]<a[2i-1], a[2i+1]>a[2i]。   小明想知道,长度为 m,每个数都是 1 到 n 之间的正整数的摆动序列一共有多少个。 输入格式   输入一行包含两个整数 m,n。 输出格式   输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。 样例输入 3 4 样例输出 14 样例说明   以下是

AMAZZED的博客 320

假人有限元模型

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

蓝桥杯C++ B组竞赛:从算法原理到实战破局的五步拆题法

算法竞赛的核心在于将实际问题高效转化为计算机可执行的解决方案,这依赖于对算法原理的深刻理解和在恰当场景下的灵活应用。其技术价值在于培养系统性的计算思维和工程实现能力,是衡量编程水平的重要标尺。在诸如蓝桥杯等知名赛事中,动态规划和深度优先搜索(DFS)等经典算法频繁出现,参赛者需要掌握从问题抽象、模型构建到算法选型与代码实现的全流程。本文聚焦于一套结构化的“五步拆题法”,旨在帮助选手在面对复杂赛题时,能系统性地进行分析与决策,从而在时间有限的竞赛环境中,快速找到解题路径并实现稳健的代码。

weixin_33881140的博客 407

Java实现2020十一届蓝桥杯第二次模拟赛

进制转换 在计算机存储中,12.5MB是多少字节? 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 两次模拟题都出现了进制换算的,水题 1MB=1024KB 1KB=1024B(字节) 1B=8bit(位) 根据换算关系: 12.5*1024*1024=13107200 最多边数 最多边数 一个包含有2019个结点的有向图,最多包含多少条边?(不允许有重边) 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一

JohnnyLin 2483
上一篇: 计蒜客 2018蓝桥杯省赛 B组模拟赛(一) C题 U型数字(java)
下一篇: 2017第八届蓝桥杯 06 最大公共子串(java)
mainn
博客等级 码龄10年 865粉丝 447原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值