当前位置: 首页 > news >正文

关于最长上升子序列(LIS)

LIS已经有很多dalao讲过了,而我这个蒟蒻愣是连方程都没推出来(我好菜)


于是乎,我就用个记忆化来写。

思路

既然是搜索,那么就先找条件。
本题的条件是 \(a_{1} < a_{2} < …… < a_{n}\)
那么便可写出

if(a[i] < a[n]) ans = max(ans, dfs(i) + 1);

好了,说记忆化。

记忆化

记忆化就是把之前算过的东西存起来,要用的时候再拿出来。
只要加上这两行:

if(dp[n] > 1) return dp[n];
//其他东西
return dp[n] = ans;

代码

#include<bits/stdc++.h>
using namespace std;
int dp[210];
int out = 0, a[210];
int dfs(int n){int ans = 0;if(dp[n] > 1) return dp[n];for(int i = 1; i < n; i++)if(a[i] < a[n]) ans = max(ans, dfs(i) + 1);out = max(ans, out);return dp[n] = ans;
}
int main(){int i = 1;while(cin >> a[i]) i++;for(int j = 1; j <= i; j++) dfs(j), dp[j] = 1;cout << "max=" << out + 1;
}

完结撒花 \(\^_^/\)

http://www.rkmt.cn/news/1297654.html

相关文章:

  • FPGA开发实战:如何为不同应用场景选择通信协议与接口
  • Google Voice 虚拟号码:零门槛获取与全场景应用指南
  • 用树莓派4B打造你的第一台开源智能车机:AGL车载系统从编译到上电全记录
  • 如何在三分钟内找回Chrome浏览器保存的所有密码?
  • 从逻辑门到加法器:Verilog实现半加器与全加器的三种抽象层级
  • 洞察 | (二)视觉映射、感知优化与色彩工程
  • 硬件开发必知:如何正确获取与使用VID/PID标识符
  • 告别玄学调参:在i.MX8平台上手把手配置gPTP硬件时间戳(附Linux内核驱动分析)
  • 基于Circuit Playground Express的互动壁炉:NeoPixel火焰与伺服电机控制实战
  • 基于Raspberry Pi Pico W与CircuitPython的云端AI文本生成器实现
  • cliclick 安全实践:正确配置macOS辅助功能权限
  • Linux 下用火焰图进行性能分析
  • ssh 使用问题汇总
  • Git Commit Message 规范
  • 如何快速配置英雄联盟自动化工具:5个高效技巧指南
  • Reset-Windows-Update-Tool架构解析:Windows更新故障的深度修复方案
  • XCA证书管理器插件开发指南:如何扩展自定义证书功能
  • ME6206A 系列低压差线性稳压器
  • Allegro Route Keepout 的隐藏玩法:别急着删,教你一键开启‘布线许可’模式
  • Rust异步任务取消机制:从协作式取消到结构化并发实践
  • 为什么你的low-poly图总缺“设计感”?权威解析3种典型失败案例——基于Adobe Color Lab 2024色彩熵值实测数据
  • OCaml 技术突破:从云端到太空,开启卫星安全通信新时代!
  • 别再只会用@PreAuthorize了!SpringSecurity权限控制的5种实战姿势与避坑指南
  • Vue-Admin-Box数据可视化终极指南:基于ECharts的图表组件最佳实践
  • 用HSPICE玩转CMOS反相器:手把手教你分析尺寸、延迟与功耗的权衡
  • StarRocks BE启动失败?别急着查网络,先看看你的CPU是不是AVX2指令集
  • 用CircuitPython与NeoPixel打造可编程3D打印霓虹灯牌
  • 从零部署到实战:run_dbCAN4工具链的完整配置与高效使用指南
  • 如何用Python在5分钟内自动解析简历关键信息?PyResParser终极指南
  • Android虚拟摄像头安全使用指南:合法用途与风险防范的7个要点