牛客ACM刷题记录——开篇

OJ在线编程----常见输入输出练习场 1、计算a+b 输入描述:输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组。 输出描述:输出a+b的结果 示例1: 输入:1 5 10 20 输出:6 30 ============================================================================= #include <iostream> using namespace std; int main() { i 阅读详情
AI摘要

博主分享了在ACM模式下解决最长上升子序列问题的心得,初次尝试因超时未通过,后借助GPT4优化代码,采用二分查找与动态规划结合的策略,成功提高了代码效率。

写在前面,打算好好锻炼一下手撕的能力,之前 leetcode 也刷了挺多的,但是笔试基本都是 ACM 模式,有时候测试样例过了,但是通过率 0%很是头疼。于是希望通过ACM 模式,看是否能改善一点。

在这里插入图片描述

这里附上代码联系地址:牛客 ACM 刷题地址

牛客的 ACM 模式很多都没看到 python 的题解,所以自己打算边写边思索下。

Day 1:6 月 6 日

最长上升子序列

题目地址

在这里插入图片描述

第一版提交,没过:

n = int(input())
nums = list(map(int, input().split()))

max_ = 1
cur = 1
dp = [1] * n

for i in range(1, n):
    for j in range(i):
        if nums[i] > nums[j]:
            dp[i] = max(dp[i], dp[j] + 1)
    max_ = max(max_, dp[i])
    
print(max_)

(PS: 有一说一,提交一次挺久的,几十秒了)

中午或者下班再看看吧,不知道哪里错了😭

超时了估计

在这里插入图片描述


吃完晚饭,在跑代码的时候抽空想想……

不知道哪里有问题,交给 gpt 了,a 了……(这让人无语😅)

下面是 chtgpt4o 生成的,可以直接提交,看看人工智能的思路:

def length_of_lis(nums):
    from bisect import bisect_left
    
    if not nums:
        return 0
    
    dp = []
    for num in nums:
        pos = bisect_left(dp, num)
        if pos < len(dp):
            dp[pos] = num
        else:
            dp.append(num)
    
    return len(dp)

# 读取输入
n = int(input().strip())
nums = list(map(int, input().strip().split()))

# 输出结果
print(length_of_lis(nums))

~~思路是这样的🤔

在这里插入图片描述
思路是来看就是遍历,维护一个严格递增的子序列;

按递增顺序添加末尾好理解,比较难 get 的是用二分查找去替换;
其实用小的把 dp 数组里面的大的去替换,可以理解为将 dp 数组做了一个 压紧操作(想象是一个弹簧)

比如序列是 1,2,7,5,6
那么一开始按顺序添加会得到【1、2、 7】

这个时候查找 5,对应做替换的是 7,因为 2 和 7 之间有太多空气,所以让 5 替换 7,做了压紧;
这样给了我们更多机会去把相对较大的数字给放进来(指的是 5<n<7的这些数字),所以能够保证数字是尽可能按规则往里面放的
-> 最后放入 6,返回长度 4

个人感觉那一步有点贪心的意思,动态规划没太感觉到。🤔


另外顺便学一下二分查找的懒人用法 bisect_left

这个是需要导入包的,bisect_left返回大于等于x的第一个下标

from bisect import bisect_left
index1 = bisect(List, x)   #第1个参数是列表,第2个参数是要查找的数,返回值为索引

当然,我们真正手撕其实不太可能用这么偷懒的,毕竟一个二分操作的难度都可以手撕了,怎么可能放过你,下面附上那么精简的代码:

"""20240606 第二版"""    

# 二分查找 Index
def Bisect(arr, n):
    left, right = 0, len(arr) - 1
    while left <= right:
        mid = (left + right) // 2

        if arr[mid] == n:
            return mid
        elif arr[mid] < n:
            left = mid + 1
        else:
            right = mid - 1
        
    return left

n = int(input())
nums = list(map(int, input().split()))
if len(nums) == 0:
    print(0)

else:
    dp = []
    for i in range(n):
        pos = Bisect(dp, nums[i])
        if pos < len(dp):
            dp[pos] = nums[i]
        else:
            dp.append(nums[i])
#         print(dp)
    print(len(dp))
LeetCode刷题(ACM模式)-01数组 阅读详情

相关推荐

牛客C++笔试ACM模式输入输出练习

平时用力扣刷题,换成牛客这种需要打印输出结果对比判定的OJ不是很习惯,所以特别练习一下。尤其是对于8、9、10部分关于字符串的。”纸上得来终觉浅,绝知此事要躬行“

今天写代码了吗 5199

牛客ACM模式-自己写输入输出

牛客ACM模式-自己写输入输出练习

Coderwind的博客 5058

各大刷题OJ

简介: 这几个OJ平台自己都有在上面刷过题,觉得还不错,也顺便记录自己的刷题经历和网址上的登录信息。下面按个人看法分等级。 以竞赛为主导的OJ: PTAOJ(推荐指数****):PTA是浙大推出的一个教学平台。里面可以安排考试和程序设计练习,它的题主要为顶级,甲级,乙级三种层次。 乙级题是中文版的,考的大都是很基本的数据结构和逻辑思维题。甲级题是英文版的,题目主要也是基本的数据结构和算法,...

lfbcsdn博客 2917

牛客网的ACM输入输出模式

输入包括两个正整数a,b(1

lbjbs的博客 5622

ACM新手入门

不忘粗心,方得始终 你的水平决定你将拥有怎样的队友 天赋大于努力,努力决定成败 请在开始进入之前好好记住并品味这些话。接下来,让我们一起进入ACM的世界。 第一 打字速度 你的打字速度决定你切掉水题的时间,你是弱队,决定你是铜还是打铁;你是强队,决定你是否可以更从容的面对难题。 首先,推荐两个网站。 第一个 https://dazi.kukuw.com/ 用于自己练习指法(指法非常重要,直到我打...

神思love 1626

牛客ACM模式学习记录

提示:牛客OJACM模式练习记录,记录犯错的地方 文章目录前言HJ1、字符串最后一个单词的长度总结 前言 HJ1、字符串最后一个单词的长度 犯错点:题目要求的是输入一行,所以使用getline来获取一行字符串,而不是cin获取单个字符串;因为此cin使用==空白(空格、制表符、换行符)==来确定字符串的结束位置,所以在当前题意下只能得到一个单词 #include <iostream> #include <string> using namespace std; int main.

qq_42659654的博客 1345

LeetCode刷题误区以及python的ACM编程(对这段时间做公司笔试题的一个反思)

1. 写在前面 最近找实习的这段时间,做了好几家公司的笔试算法题,确实是给予了一定的打击,和我之前预想的有点不太一样,当然,我不是一个遭受点打击就立马放弃的人,所以这里不带负面情绪,有打击才能更加认识到不足嘛,这样我们才能成长,通过这几次打击,也希望能累积点经验,对于我来说, 这段时间的试错成本还应该扛得住。 这篇文章主要是通过这几次笔试记录下我平时刷LeetCode的一些误区(顺便写点自己的体会啦), 另外再整理一下python下的ACM编程(这几次笔试悟出来的比较合适的代码结构,不一定普适哈) , 下面

Miracle8070 9178

【刷题记录④】Java从0到1入门| 集合类

开始你的保姆级刷题之路吧!另外这里不仅仅可以刷题,你想要的这里都会有,十分适合小白和初学者入门学习~1、算法篇(398题)面试必刷100题、算法入门、面试高频榜单2、数据结构篇(300题)都是非常经典的链表、树、堆、栈、队列、动态规划等3、语言篇(500题)C/C++、java、python入门算法练习4、SQL篇(82题)快速入门、SQL必知必会、SQL进阶挑战、面试真题5、大厂笔试真题字节跳动、美团、百度、腾讯…掌握经验不在惧怕面试!https。.........

陈橘又青的博客 4570

C语言刷牛客竞赛语法入门——顺序结构

C语言刷牛客竞赛的新手语法入门

weixin_55511545的博客 2118

【刷题记录③】Java从0到1入门|综合练习

我几乎每天都会刷题训练来使自己对各种算法随时保持一个清晰的状态。要知道眼过千遍不如手过一遍,想成为一名合格的开发工程师,更要逼迫自己养成动手的好习惯。一、点击链接 进行跳转注册,开始你的保姆级刷题之路吧!.........

陈橘又青的博客 1976

【刷题记录①】Java从0到1入门|基础知识巩固练习

目录一、类型转换 二、简单运算 三、四舍五入 四、交换变量值 五、计算商场折扣 六、判断体重指数 总结我几乎每天都会刷题训练来使自己对各种算法随时保持一个清晰的状态。要知道眼过千遍不如手过一遍,想成为一名合格的开发工程师,更要逼迫自己养成动手的好习惯。设计一个方法,将一个小于2147483647的double类型变量以截断取整方式转化为int类型随机double类型变量转化后的int类型变量 二、简单运算 描述 输入两个正整数a和b,输出这两个正整数的和,差,积,商,模(若a>b则输出a

陈橘又青的博客 1905

【刷题记录⑩】Java工程师丨字节面试真题(四)

另外这里不仅仅可以刷题,你想要的这里都会有,十分适合小白和初学者入门学习~1、算法篇(398题):面试必刷100题、算法入门、面试高频榜单2、数据结构篇(300题):都是非常经典的链表、树、堆、栈、队列、动态规划等3、语言篇(500题):C/C++、java、python入门算法练习4、SQL篇(82题):快速入门、SQL必知必会、SQL进阶挑战、面试真题5、大厂笔试真题:字节跳动、美团、百度、腾讯…掌握经验不在惧怕面试!​。.........

陈橘又青的博客 8293

【车辆仿真】从0开始建立dSPACE RT Simulink工程:输出模拟电平

0基础建议先看下前面的博文,补充基础知识。原来的博文太长太复杂,后续我会逐步梳理改进,去除操作层面的内容,仅关注知识层面,提升系列博文的系统性。【工程环境信息】:上位机:惠普台式PC(Windows 11专业版)下位机(实时机):SCALEXIO RTPC板卡:DS2680。

winnizap的博客 2055

ACM刷题纪

洛谷85题、vj246题、牛客133题。

陈颜的博客 5152

日志异常检测详细整理,看这一篇就够了(附各项目代码链接)

对于不用的日志键,用它们的参数值向量训练一个参数值异常检测模型来检测有这些参数值反映的系统性能异常。与标准的GAN框架一样,D和G的参数是基于D的输出来更新的,因此鉴别器D可以被训练为尽可能敏感地将正确的标签分配给真实和虚假序列,而生成器将被训练为尽可能聪明地在经过足够多轮的迭代后欺骗鉴别器,即误导D将真实标签分配给虚假序列。LR:逻辑回归是有监督的模型,将处理后的特征矩阵以及标记作为模型的输入,得到训练后的模型,用此模型预测新出现的特征向量,以此判断特征向量是否为异常的,进而判断日志异常。

qq_20368489的博客 1万+

stc8g1k08硬件iic读取aht20温湿度及0.91寸oled显示

使用stc8g1k08读取aht20温湿度及0.91寸oled显示。

qq_61688416的博客 2770

【刷题记录⑦】Java工程师丨字节面试真题(一)

另外这里不仅仅可以刷题,你想要的这里都会有,十分适合小白和初学者入门学习~1、算法篇(398题)面试必刷100题、算法入门、面试高频榜单2、数据结构篇(300题)都是非常经典的链表、树、堆、栈、队列、动态规划等3、语言篇(500题)C/C++、java、python入门算法练习4、SQL篇(82题)快速入门、SQL必知必会、SQL进阶挑战、面试真题5、大厂笔试真题字节跳动、美团、百度、腾讯…掌握经验不在惧怕面试!​。...............

陈橘又青的博客 1703

手把手教你配置MAX96712解串器:从I2C地址分配到PWM帧同步

本文详细解析了MAX96712解串器在自动驾驶视觉链路中的核心配置流程。从I2C地址分配、GMSL2数据流映射到实现多摄像头精准同步的PWM帧同步触发,手把手指导工程师构建高可靠性的图像传输系统,并提供了实用的Linux调试技巧与问题排查思路。

weixin_29297127的博客 921

Java面试:ACM模式

本文介绍了Java中ACM模式的输入输出处理方法,重点讲解了Scanner类的常用方法及其应用场景,包括nextLine()、nextInt()、hasNext()等。针对不同输入格式(固定数据量、不确定行数、不确定每行元素数量等)提供了对应的代码模板,并举例说明了牛客网常见题目类型的解题思路。文章还提供了相关学习资源和参考文献,帮助读者快速掌握ACM模式下的编程技巧。适用于准备算法笔试和面试的Java程序员参考使用。

weixin_46559256的博客 1891

RK3288芯片MIPI-DSI显示疑难杂症大揭秘:从点不亮到花屏全攻克

本文针对RK3288芯片MIPI-DSI接口常见的显示异常问题进行系统性分析,提出了完整的排查解决方案。硬件方面,重点检查排线连接、电源供应和散热问题;软件方面,强调屏参配置、驱动版本及时序参数的精确调整。通过两个典型案例(点不亮与花屏)具体说明排查流程,并指出未来优化方向应包括提升芯片抗干扰能力、开发智能自适应驱动程序等。该手册为开发者提供了从基础原理到实际问题的全面指导,能有效缩短故障排查时间,确保显示系统稳定运行。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 659

[SV]SystemVerilog学习笔记之struct & union

SystemVerilog学习笔记(四) 一、结构体(struct) 1.1、结构体(struct) 结构体声明:结构体默认是变量,也可以声明为线网 var struct{ //通过var进行结构体变量声明 logic [31:0] a, b; logic [ 7:0] opcode; } Instruction_Word_var; wire struct{ //结构体线网声明,定义为线网类型时,结构体的所有成员必须...

元直的博客 1万+

【刷题记录⑤】Java从0到1入门| 常用API练习

你想要的这里都会有,十分适合小白和初学者入门学习~1、算法篇(398题)面试必刷100题、算法入门、面试高频榜单2、数据结构篇(300题)都是非常经典的链表、树、堆、栈、队列、动态规划等3、语言篇(500题)C/C++、java、python入门算法练习4、SQL篇(82题)快速入门、SQL必知必会、SQL进阶挑战、面试真题5、大厂笔试真题字节跳动、美团、百度、腾讯…掌握经验不在惧怕面试!​。.........

陈橘又青的博客 1036

基于STM32设计的水下水质检测装置(微信小程序)(205)

本项目设计了一款基于STM32微控制器为核心的水下水质检测设备,该设备具有高度集成化、智能化的特点,能够实时监测水深、温度、浊度及溶解性总固体(TDS)等关键水质参数,并通过4G网络将数据上传至腾讯云IOT物联网平台,实现远程监控和数据分析。同时,为了便于操作和移动观测,还配套开发了微信小程序,用户可通过微信小程序实时查看并控制设备的各项功能,如调整下潜深度等。

1250

C++刷题记录2

河南萌新联赛2024第(五)场:信息工程大学(重现赛)粗略看了题解文章,HKF题可以学习一下,其他的感觉都太难了,尤其是H题的,下次就不会超时了!!KF的这俩知识点可以去学习一下过了五个题,BDEGJ,剩下的题都无从下手。签到题J还错了,没开long long的下场。I题以为找的是平均数,水灵灵错了。H的算法没学。

l131_4520的博客 1031

Axure RP9.0 教程:左侧菜单列表导航 ( 点击父级菜单,子菜单自动收缩或展开)【响应式的菜单导航】

1. 设置目标原件时,选择切换,这样就可以实现,当原件展示时,点击自动隐藏,隐藏时自动显示; 2. 展开/收起原件(推动/拉动原件)设置为方向**向下**

专注于计算机研发知识和资讯分享 1380

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

程序员专门刷题的网站

从国内外分的话, 国内: 1. [九度OJ](题库-九度Online Judge,用代码记录你的成长之路!):王道论坛或者考计算机408的同学也许听过,目前已经收录了各高校上机复试真题,还有些名企笔试题,但好久没更新了。考研准备复试的同学可以参考下。 2. [牛客OJ](在线编程_C++Java前端经典笔试面试题库) 题目挺全的,包含《剑指Offer》66题,校招真题105题,leecode148题,ACM训练题7418题(变态),计算机考研复制233题,华为机试108题,还有一些其他js题。但支持语言不.

qq_40544338的博客 1336

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: Cross-Attention Makes Inference Cumbersome in Text-to-Image Diffusion Models
下一篇: 牛客刷题合集-动态规划系列(一)
Toyag
博客等级 码龄8年 190粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值