nyoj 214-单调递增子序列(二) (演算法,PS:普通的动态规划要超时)

214-单调递增子序列(二)


内存限制:64MB 时间限制:1000ms Special Judge: No
accepted:11 submit:35

题目描述:

给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长子序列,并求出其长度。

如:1 9 10 5 11 2 13的最长单调递增子序列是1 9 10 11 13,长度为5。

输入描述:

有多组测试数据(<=7)
每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的下一行里有n个整数,表示数列中的所有元素.每个整形数中间用空格间隔开(0<n<=100000)。
数据以EOF结束 。
输入数据保证合法(全为int型整数)!

输出描述:

对于每组测试数据输出整形数列的最长递增子序列的长度,每个输出占一行。

样例输入:

复制
7
1 9 10 5 11 2 13
2
2 -1

样例输出:

5
1

分析:
  1、如果给的串本身是升序的,就直接加入进来temp[]串中
  2、否则的话我们要找到第一个大于等于该值的位置,并改变该位置的值(使最终组成的temp[]串ASCⅡ码之和最小)

核心代码:

 1 while(m --)
 2 {
 3     scanf("%d", &v);
 4     if(temp[cnt] < v)
 5     {
 6         temp[++cnt] = v;
 7         continue;
 8     }
 9     for(int i = 0; i <= cnt; ++ i)
10     {
11         if(temp[i] >= v)
12         {
13             temp[i] = v;
14             break;
15         }
16     }
17 }

C/C++代码实现(AC):

 
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <stack>
 7 #include <map>
 8 #include <queue>
 9 #include <set>
10 
11 using namespace std;
12 const int MAXN = 100010;
13 
14 int main()
15 {
16 
17     int t, A[MAXN], temp[MAXN], cnt;
18     while(~scanf("%d", &t))
19     {
20         cnt = 0;
21         memset(A, 0, sizeof(A));
22         memset(temp, 0, sizeof(temp));
23         scanf("%d", &A[0]);
24         temp[cnt] = A[0];
25         for(int i = 1; i < t; ++ i)
26         {
27             scanf("%d", &A[i]);
28             if(temp[cnt] < A[i])
29             {
30                 temp[++cnt] = A[i];
31                 continue;
32             }
33             for(int j = 0; j <= cnt; ++ j)
34                 if(A[i] <= temp[j])
35                 {
36                     temp[j] = A[i];
37                     break;
38                 }
39 
40         }
41         printf("%d\n", cnt + 1);
42     }
43     return 0;
44 }

 

C/C++代码(TLE)<动态规划>:


 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <stack>
 7 #include <map>
 8 #include <queue>
 9 #include <set>
10 
11 using namespace std;
12 const int MAXN = 100010;
13 
14 int main()
15 {
16 
17     int t, A[MAXN], dp[MAXN], cnt;
18     while(~scanf("%d", &t))
19     {
20         cnt = 0;
21         memset(A, 0, sizeof(A));
22         memset(dp, 0, sizeof(dp));
23         for(int i = 0; i < t; ++ i)
24         {
25             scanf("%d", &A[i]);
26             dp[i] = 1;
27             for(int j = 0; j < i; ++ j)
28                 if(A[i] > A[j])
29                     dp[i] = max(dp[i], dp[j] + 1);
30             cnt = max(cnt, dp[i]);
31         }
32         printf("%d\n", cnt);
33     }
34     return 0;
35 }

 

 

转载于:https://www.cnblogs.com/GetcharZp/p/9102649.html

基于扣子3.0复刻MIT“AI股神团队版”:实时股票数据API接入与策略选股复盘系统 基于扣子3.0的AI量化投资系统摘要 本文提出了一种基于扣子(Coze)3.0平台的AI量化投资解决方案,整合实时股票数据与策略选股功能。系统采用三层架构: 数据层:通过AKShare等开源工具获取A股实时行情和历史K线数据,支持批量数据抓取和清洗 策略层:内置多因子选股模型和技术指标分析模块,实现自动化标的筛选 应用层:利用扣子3.0的插件和工作流功能,构建从数据采集到投资建议的完整流程 系统特点包括:完全开源的数据接入方案、Python实现的策略计算模块、以及扣子平台提供的可视化编排能力~~~~~~~~ 阅读详情

相关推荐

Unity适配Nintendo Switch平台开发

查看文档、下载SDK,都需要账号登录。

凝遥的笔记本 2101

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 298

学术版GPT安装教程——保姆版(附带原生GPT注册教程)

学术版GPT图文安装教程

DBenD的博客 2万+

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 365

手把手教你用DLP4500投影仪玩转结构光3D扫描(附固件烧录与序列设置避坑指南)

本文详细解析了如何使用DLP4500投影仪搭建结构光3D扫描系统,涵盖硬件组装、固件烧录、图案生成与优化等全流程。重点解决了固件烧录失败、图像格式错误等常见问题,并提供了实用的避坑指南和进阶技巧,帮助读者快速掌握DLP4500在3D扫描中的应用。

weixin_42662293的博客 301

《双剑合璧:双 IMU 驱动的高精度 AHRS 实战宝典(基于 ROS2)》

本文系统阐述了基于双IMU的高精度姿态与航向参考系统(AHRS)设计与实现方法。文章首先分析了传统单IMU系统的局限性,提出通过双IMU冗余配置实现性能互补的方案。从硬件设计要点(包括IMU选型策略、电路降噪方法、PCB布局规范),到算法实现方案(互补滤波、卡尔曼滤波等融合算法),再到ROS2软件架构与调优策略,全方位展示了双IMU系统的技术实现路径。特别强调快速性与高精度平衡的方法,包括动态参数调整、双IMU权重优化等核心技巧。最后总结了硬件降噪、算法调优等实用心法。

bother3000的博客 2024

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 561

[Godot][入门] 安装与版本选择:3.x 还是 4.x?(按项目类型一键决策)

摘要: Godot引擎版本选择需根据项目需求权衡3.x与4.x。Godot4.x(如4.2)适合3D开发和新项目,支持Vulkan和GDScript2.0,但生态尚不成熟;Godot3.x(如3.5.3)则更适合稳定2D开发、Web导出及依赖现有插件/教程的场景。安装方式极简,官网下载解压即可运行。新手建议:短期高效选3.x,长期探索选4.x,旧项目勿盲目迁移。附版本对比表及决策树,助开发者快速匹配需求。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 910

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20

Android11车机系统海外项目资源包RRO方案优化

本文介绍了汽车设置应用如何通过Android RRO(运行时资源叠加)方案实现多车型差异化资源管理。针对不同车型(国内/海外、轿车/SUV)和配置(方向盘、轮毂等),采用产品变体(productFlavors)构建不同APK版本,并通过JSON配置文件动态启用对应资源包。系统根据车辆下线配置自动匹配适用的资源叠加包,解决了硬编码判断带来的维护问题。该方案实现了资源的高效复用,同时支持灵活配置多种车型组合,为汽车行业多车型共平台开发提供了可扩展的技术实现。

shusuanly的博客 469

【第一章】基于Simulink的控制器开发教程——目录

摘要:本文系统介绍了基于Simulink的控制器开发方法,涵盖PID、状态反馈、模型预测(MPC)、模糊控制、自适应控制等8类主流控制器。针对每种控制器,详细阐述了其基本原理、适用场景,并通过Simulink建模与仿真测试进行实践验证。文章采用"理论+实践"的结构,从算法设计到硬件实现全流程展开,为汽车、航空航天、工业控制等领域的控制器开发提供完整解决方案,最后通过应用对比与学习总结帮助读者掌握不同控制器的核心特性和应用场景。(149字)

熟悉MATLAB/fpga/RK3588/LABVIEW/protus/单片机/dsp/Multisim 387

26-下载中心按哈希分目录存文件

为解决大导出文件存储的扩展性与一致性问题,采用哈希分目录策略:以任务 key 前四位划分为两级子目录,结合安全文件名构建路径(如 a3/f9/a3f9c2e1..._orders.xlsx),实现文件分散存储。业务库仅保存任务状态与 key,下载中心通过内网接口接收文件流并管理持久化,支持无状态扩容。配合内存索引与定期清理作业,确保元数据与文件一致。该方案有效避免单目录膨胀、提升性能,并通过共享令牌控制访问,保障安全性。

CAthlete的博客 179

9篇1章1节:中国居民健康与营养调查(CHNS)数据库的官网解析和数据下载(2026年版)

在探讨中国社会经济转型与人口健康变迁的学术领域中,中国健康与营养调查(CHNS) 是一个无法绕过的权威数据库。本文将带你深入了解CHNS的项目背景、庞大的数据体系,以及如何通过这两个核心网站获取关键的家庭、个人及社区层面的研究数据。

MD Code 1696

Vue3 低代码移动表单设计器实战(二):缩放画布下的拖拽系统与树状级联数据结构

本文深入剖析Vue3低代码表单设计器在缩放画布下的拖拽失效问题,揭示SortableJS在CSS Transform下坐标崩溃的数学根源。通过自研独立视觉克隆壳层与逆向几何补偿算法,实现精准拖拽;采用扁平数据存储+运行时树状计算结构,解决级联依赖与深克隆难题,确保逻辑一致性与性能优化,为复杂低代码系统提供可复用的工程范式。

NanChen的博客 340

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

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

Linux epoll 一篇讲透:从 select/poll 到红黑树、LT/ET,再到完整 TCP 服务器

一万个客户端已经连上服务器,眼下只有十个客户端发来了数据。服务器怎样把时间花在这十个连接上?理解这个问题,就抓住了 epoll 的主线。接下来,我们沿着“为什么需要它 → 接口怎么用 → 内核如何实现 → LT/ET 怎么写 → 完整服务器怎么运行”的顺序,把知识连起来。**阅读基础:**了解socketbindlistenaccept的基本用途即可。本文示例面向 Linux,服务器使用 C++17,实验脚本使用 Python 3。

2601_94861874的博客 157

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

模拟实现 map 和 set —— 基于红黑树的复用设计

/ 三叉链,便于迭代器 -- / ++ 向上回溯T _data;Color _col;, _data(data), _col(RED) // 新结点默认红色{}设计决策目的收益模板参数T而非K, V让同一棵树同时容纳K和pair<K,V>一次实现,两处复用KeyOfT仿函数从T中抽出真正的 key 进行比较map 只以 key 排序,符合语义迭代器用nullptr表示 end结合"向祖先回溯"的++逻辑无需额外标记位,天然对齐Insert返回同时告知位置与是否新插。

2603_95728536的博客 501

【数据结构-2】顺序表的实现

线性表是一种数据结构,它分为逻辑结构和物理结构,在逻辑结构上线性表是呈线性的,数据是是连续存储的;在物理结构(物理空间)上,线性表不一定是连续存储的。线性表的实现,主要分为数组和链式结构。顺序表是线性表的一种实现方式,顺序表在逻辑结构和物理结构上都是连续的。顺序表的底层实现是数组。

weixin_44218929的博客 207

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 177

C 语言 malloc() 详解与实战 Demo

本文详解C语言malloc()函数,涵盖其语法、内存原理及实战应用。通过动态整数、数组、结构体与链表的Demo,演示如何安全申请、使用与释放内存,强调避免内存泄漏与空指针检查的重要性,帮助开发者掌握动态内存管理核心技能。

tangPHP的博客 366

教育代码部队第196轮(A–G)题解合集

反过来,若能找到 k+1 个不同的原始数字,其和恰好为 S,那么保留其中一个作为 x、删去其余 k 个数字,就能使剩余数字总和等于 x。对当前 i,把所有满足 first[j]>r_i 的顶点位置加入树状数组,然后查询 [l_i,r_i] 的已加入数量。对每个 i≥2,给出区间 [l_i,r_i],从区间内每个 j 向 i 连边,即 j→i。反过来,若 j→i 存在替代路径,替代路径的第一步只能到某个 k,满足 j<k≤r_i(所有路径都严格向较大编号移动,最后必须从 [l_i,r_i] 进入 i)。

2301_79475922的博客 194

Lehmer Code(莱默码):离散化 + 树状数组求右侧严格小于元素个数

本文介绍莱默码(Lehmer Code)的高效求解方法。针对排列中每个元素右侧严格小于它的个数,采用“离散化+树状数组”策略:先将数值映射到1~N的排名,再从右向左扫描,利用树状数组动态维护已处理元素,每次查询小于当前值的个数并插入当前元素。时间复杂度O(N log N),空间复杂度O(N),适用于N ≤ 10⁵的大规模数据,避免了暴力O(N²)的超时问题。

冻柠茶飞冰走茶 306

机器学习算法讲义——线性回归、逻辑回归、决策树

比喻:先给样本打出一个综合分数,再通过Sigmoid函数这个压缩器,把分数映射到0~1之间,输出结果代表是正样本的概率。损失函数用来衡量模型预测结果和真实标签之间的整体偏差,模型训练的目标就是不断调整参数,让MSE尽可能变小。比喻:专门针对概率设计的扣分规则,当真实标签和模型预判的概率相差很大时,会给予很重的惩罚。❌ 缺点:决策边界是线性的,面对交错分布的复杂样本效果有限,比较依赖前期的特征工程。比喻:相当于一套扣分标准,预测和真实值差距越大扣分越多,严重的错误会被加重惩罚。❌ 缺点:单树方差大、不稳定;

Michelle8023的博客 139

头歌 数据结构——C&C++线性表实训

本系列任务围绕线性表的链式实现,依次完成顺序构建、逆序构建、排序插入、查找、删除、求长度及栈、队列、集合等应用。通过动态内存分配与指针操作,掌握单链表的基本操作与实际应用,涵盖插入、删除、遍历、搜索等核心功能,最终实现数据结构在典型场景中的灵活运用。

一名敲代码的苦13程序员 236

MoE 剪掉 25% 专家:Qwen3 数学只掉 1.3 点

MoE模型部署成本主要来自显存,而非算力——尽管仅激活部分专家,但所有专家需常驻显存。传统按激活频率剪枝忽视了专家间的结构性冗余。本文通过熵有效秩、稳定秩与有效模态数三指标揭示:专家输出实际分布在低维子空间,分布模态远少于名义数量(如128专家仅27.2个有效模态)。据此提出结构保持剪枝方法PEEP与DCEP,基于函数子空间与分布几何贪心选集,显著提升剪枝效率:Qwen3-30B-A3B保留75%专家时数学得分仅降1.3点,优于SOTA;DeepSeek-V2-Lite砍至50%仍保关键性能。

Arborseek的博客 380

Map 接口 & HashMap & LinkedHashMap & TreeMap

称之为键值对(Entry)key 唯一,不能重复;value 可以重复一个 key 只能对应一个 value;如果 put 相同 key,后面的值会覆盖前面的值key 和 value 都可以是 null,但是HashMap 最多只能有一个 key 为 null,value 可以多个 nullMap 集合没有继承 Collection 接口,是独立的双列集合,遍历方式和 Collection 单列集合不一样//学生类,作为key,必须重写hashCode、equals。

Sarvartha的博客 204

LeetCode100+java面经+DDD领域驱动设计理解

结合测开、全栈与Agent方向,建议以“盛最多水的容器”和“两数之和”为切入点,掌握双指针与哈希思想,夯实算法基础。通过策略模式实现支付模块解耦,提升代码可维护性;运用DDD领域驱动设计重构业务逻辑,实现充血模型与事件驱动,降低系统耦合。最终构建一个融合算法、架构与设计模式的全栈项目,为测开、全栈及Agent开发岗位提供有力支撑。

记录大学学习学习成长过程,欢迎各位一起交流 879

字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)

本题核心思想是:最少移动步数 = 总长度 - 可保留的最长连续子串长度。未移动字母在T中必须为连续子串,在S中需保持相对顺序(即子序列)。通过枚举T的所有连续子串起点,贪心匹配S中的对应字符,求出最长可保留长度L,答案即为n−L。时间复杂度O(n²),空间复杂度O(n),适用于n≤1000。

冻柠茶飞冰走茶 579
上一篇: nyoj 47-过河问题 (贪心)
下一篇: nyoj 49-开心的小明(动态规划, 0-1背包问题)
devon2014
博客等级 码龄12年 3粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值