网格DP收敛优化:从状态递推到迭代稳定的完整指南
你收到这样一行标题网格dp|收敛优化。从形式上看它像某个学习笔记里的标签组合前面说的是动态规划中的网格场景后面说的是优化迭代算法的收敛行为。我第一次看到这类词时心里其实有个疑问动态规划不是从前往后推一遍就有结果吗怎么还要收敛后来在不少算法题和更复杂的模型里踩过几次坑才理解其中区别当网格结构只允许向下或向右移动时递推确实一遍就能结束但一旦状态图里出现环dp值会互相依赖必须反复更新直到结果稳定。这个“反复更新直到稳定”的过程就是收敛想方设法让它更快、更稳、更省资源就是收敛优化。这篇文章就从最基础的网格递推讲起把收敛问题拆开并给出三种不同场景的实操方案适合正在学动态规划但被网格类题目搞晕的读者。1. 网格DP到底在算什么从一遍递推说到状态图1.1 一条只能向右向下走的网格DP先回到基础。网格动态规划最常见的模型是一个二维网格机器人从左上角出发每次移动到相邻格子求不同路径数、最小代价或某个统计量。比如路径计数类经典题状态和转移非常固定状态dp[i][j] 表示从起点到 (i,j) 的方案数转移dp[i][j] dp[i-1][j] dp[i][j-1]初始化dp[0][0]1边界外一律当成0扫描顺序i 从小到大、j 从小到大。这为什么一眼就能算完因为每个状态只依赖“左上方”已经算好的状态递归图是单向无环图。只要按拓扑序把所有格子扫一遍dp表里的值就是最终答案不需要再来一轮。严格说这也是一种收敛如果重复执行同样的转移公式dp表里的值不会再变化只是它第一轮就已经抵达这个稳定状态。这个场景是网格DP的地基大部分人入门时都写过。它的优化点主要在两个地方空间上使用滚动数组把二维表压成一维时间上利用障碍物直接跳过不可达状态。不要小看这一步很多进阶题都是在这个基础上一层层加条件最后才长成“需要收敛优化”的样子。1.2 允许上下左右来回走的网格DP但现实中的网格问题不会一直这么温柔。很多题目允许你上下左右四个方向移动甚至允许重复进入同一个格子。比如在一个 m×n 的网格中每个格子有收益你可以从左上角出发朝四个方向走任意步每一步会消耗体力求最终能留下的最大净收益。这时候转移式会变成dp[i][j] max(dp[i][j], dp[i1][j] 收益, dp[i-1][j] 收益, dp[i][j1] 收益, dp[i][j-1] 收益)问题来了dp[i][j] 依赖右边的格子右边那个格子又可能依赖 dp[i][j]两个状态互为原因怎么从前到后推这种情况下一次扫描解决不了问题。里面甚至有环存在自引用。若要算出有价值的结果只能用迭代松弛的方法先把所有状态初始化成一个上界或下界然后反复扫描更新直到某轮所有状态都不再变化。这个“直到不再变化”恰恰说明 dp 值序列在收敛到某个不动点。网格动态规划和收敛优化就在这种带环的场景里正式相遇了。很多动规教材不会专门描述这种状态但它才是真实世界里大量网格问题要面对的情况。1.3 为什么常规迭代这么容易膨胀容易踩的坑是以为多几次扫描就能收工。理论上确实可以等它自然稳定但最坏情况下一个环会让信息反复绕圈子。以四方向移动的收益模型为例如果每轮都老老实实扫一遍整个网格一个比较远的信息要想传遍全图可能需要 O(mn) 轮每轮要扫 O(mn) 个格子整体开销非常恐怖。更糟的是如果收益函数没有递减机制例如每次进入都能拿到相同正收益你会希望无限绕着某个正收益环转圈dp值根本不会有一个有限的上界这时提“收敛”就是空话。所以网格DP里的收敛优化不仅是加速手段更是一种建模约束要么加步数限制要么加入折现因子让收益衰减要么规定收益为非递增才能让最终答案存在。这也是做这类题目时模型设计上最容易被忽略的地方。2. 收敛优化到底优化什么先判断类型再决定手段2.1 拿到网格题先做三分类拿到一道题别急着写公式先想清楚状态依赖方向固定吗能不能通过行列顺序形成拓扑序可以把状态之间的依赖看成一张有向图如果图里面存在环就是收敛型如果无环就是普通一轮 DP。这里给出一个简单实用的三分类方法无环型路径计数、最小路径和、最大正方形等。用普通递推即可不涉及收敛优化注意边界和空间压缩就容易过。有环但步数有限带体力限制、可重复访问但总步数上界的题。可以额外加一维表示步数让状态图变成分层无环图依然可能需要层层递推但至少能保证不无限循环。有环且要无限期迭代长期收益、稳定策略价值这类问题。核心就是反复迭代到收敛这时候收敛优化的作用最大。这种区分非常关键因为不少题解会把它们混在一起讲。如果你能清楚地说出自己写的是哪一类就知道该不该担心超时该用什么标准来判断算法什么时候该停下来。2.2 网格DP里最常用的几种收敛优化手段收敛优化不是某个玄学算法它是一套很朴素的工程手段目标是减少重复计算、让信息更快传播、在结果稳定后立刻收手。我在网格DP里最常用的有五个减少更新范围。不要每轮都把整张网格扫一遍。用队列记录“值发生变化且可能影响邻居”的格子某个状态被更新后才入队没更新的格子不会产生新信息。这样每轮开销不再和整个网格面积绑定而是和实际变化量绑定。提前终止。迭代式DP不要写死循环次数比如固定跑500轮。正确做法是维护一个 changed 标志或 delta 变量某轮没有任何状态被更新就马上退出。这样可以避免单纯为了“保险”而白白算几百轮空转。优化信息传播顺序。网格越大传播顺序越关键。优先对更可能产生新解的状态进行更新往往能让收敛快很多。整表扫描虽然也能收敛但轮数更多尤其在有环的地图上会显得非常迟钝。压缩动态规划维度。二维网格 dp 表能压成滚动一维如果加了步数维度也要想想能不能滚动。空间缩小后缓存命中率提升时间性能也会跟着改善这在真实大矩阵上尤其明显。剪枝。如果当前累计值加上剩余所有可能的收益都小于已知最优解这个状态就直接丢掉如果是求可行解的问题则剪掉不可能到达终点的状态。剪枝写得好能直接让指数级搜索降到可接受范围。2.3 怎么估算自己是否真的需要做收敛优化有一个实用指标看状态规模 S m × n × 附加状态数。这个数值能帮你快速判断风险。如果 S 小于 10^5普通遍历法完全够用如果 S 在 10^6 到 10^7 之间要考虑滚动数组、剪枝甚至队列优化如果 S 超过 10^7再配合 O(S^2) 级别的迭代大概率要仔细做收敛优化否则很容易超时。内存方面也要提前算一个 int 格子占 4 字节long 占 8 字节。1000×1000 的二维 long 数组约 8MB看起来不大但如果你再加一维步数、上一动作、剩余次数等维度容量会一路飙升。很多题不是算法难而是状态多到内存直接爆炸。所以动手写代码前先用状态数估算时间和空间上限这是最稳的第一步。3. 实操三种典型网格DP的收敛优化实战3.1 场景一障碍物路径计数——一轮收敛的基础写法问题模型m×n 的网格0 表示空地1 表示障碍物机器人只允许向下或向右移动从 (0,0) 到 (m-1,n-1)求不同路径数。这是典型无环 DP一轮扫描就收敛。用滚动数组实现空间 O(n)写起来非常短def unique_paths_with_obstacles(grid): m, n len(grid), len(grid[0]) dp [0] * n dp[0] 0 if grid[0][0] 1 else 1 for i in range(m): for j in range(n): if grid[i][j] 1: dp[j] 0 elif j 0: dp[j] dp[j - 1] return dp[-1]这里有一个很多人第一次都会搞错的细节内层循环从 j0 开始但 dp[0] 的处理要小心。如果第一列存在障碍物dp[0] 应该被清成 0而且因为后续行的 dp[0] 只能通过上一行的 dp[0] 传来代码里的elif j 0只处理列方向恰好能保证第一列的逻辑正确。这个例子看起来并不涉及收敛优化但它是最好的对照组。你掌握了一轮收敛的写法再遇到队列迭代版本时就能明显感觉到差别前者是图没有环时的天然优势后者是为了处理有环而不得不付出的代价。3.2 场景二四方向带体力限制的最短路径——队列松弛实战问题模型网格中允许上下左右移动每次进入新格子消耗一定体力求从左上到右下的最小累计消耗。因为可以走回头路状态图里有环不能一遍算完。设 dp[i][j] 为从起点到当前格的最小体力消耗更新式是dp[i][j] min(dp[i][j], dp[ni][nj] cost[i][j])如果用整表扫描信息传播非常慢。更好的做法是维护一个队列只让“值发生变化的格子”继续参与更新。参考实现如下from collections import deque def min_energy(grid): m, n len(grid), len(grid[0]) INF 10 ** 18 cost [[INF] * n for _ in range(m)] cost[0][0] grid[0][0] q deque([(0, 0)]) in_queue [[False] * n for _ in range(m)] in_queue[0][0] True dirs [(1, 0), (-1, 0), (0, 1), (0, -1)] while q: x, y q.popleft() in_queue[x][y] False for dx, dy in dirs: nx, ny x dx, y dy if 0 nx m and 0 ny n: new_cost cost[x][y] grid[nx][ny] if new_cost cost[nx][ny]: cost[nx][ny] new_cost if not in_queue[nx][ny]: in_queue[nx][ny] True q.append((nx, ny)) return cost[m - 1][n - 1]这段代码有几个关键点值得注意。第一起点体力成本怎么算。题面如果写“进入格子消耗体力”起点也要算如果写“移动一步消耗体力”起点就不算。不同题的语义不同必须用题目给的例子验证不能直接照搬模板。第二队列里的格子可能被反复入队这是正常的。只要它被更新出更小值就可能影响四个邻居。不要为了减少入队次数而漏更新否则会得到错误答案。第三如果格子权重差异很大队列松弛效果虽然好但最坏情况下仍可能慢。更稳定的做法是使用优先队列按当前 dp 值从小到大取出状态去更新邻居。这种思路就是最短路径算法的网格版本它的收敛速度通常比普通队列更快也更稳定。3.3 场景三网格长期收益迭代——写迭代必须用收敛判断问题模型在一个 m×n 网格中每个格子有即时收益 reward[i][j]任意格子可以向四个方向移动可以重复进入问在带折现因子 gamma 的情况下长期收益是多少。这个场景里价值函数 V[i][j] 需要满足下面的自洽方程V_new[i][j] reward[i][j] gamma * max(V[邻居])如果 gamma 取 0.9可以写出一个很小的迭代器gamma 0.9 V [[0.0] * n for _ in range(m)] dirs [(1, 0), (-1, 0), (0, 1), (0, -1)] for _ in range(500): delta 0.0 V_new [[0.0] * n for _ in range(m)] for i in range(m): for j in range(n): best_next 0.0 for dx, dy in dirs: ni, nj i dx, j dy if 0 ni m and 0 nj n: best_next max(best_next, V[ni][nj]) V_new[i][j] reward[i][j] gamma * best_next delta max(delta, abs(V_new[i][j] - V[i][j])) V V_new if delta 1e-9: break这个例子是网格DP与收敛优化结合最典型的地方。如果 reward 全为正且没有折现价值会无限增长不可能收敛。所以必须在更新式中加入 gamma并且 gamma 要小于 1保证离得远的信息权重衰减到可忽略。另一个容易踩的坑是 reward 全为负这时候模型必须提供一个“停止动作”让状态可以选择不再前进否则最优策略永远无法定义。给 V 初始化为 0 其实就是一个隐式的停止价值在这类迭代里很常用。收敛判断需要看 delta不能写死迭代次数。gamma 越接近 1收敛越慢gamma 很小的时候可能 20 轮就稳定。写死 500 轮要么浪费时间要么精度不足。这种动态终止的思路就是网格DP里收敛优化最核心的一课。3.4 三种场景的收敛优化要点对比模式典型问题依赖图收敛方式主要优化点无环路径障碍物路径计数、最小路径和无环一遍扫描到达稳定滚动数组、边界处理带环最短路径四方向移动最小体力消耗有环队列松弛直到队列空活跃格子入队、优先队列优化传播顺序长期收益迭代带折现的网格回报模型自洽方程值迭代直到 delta 小于阈值动态终止、折现因子、终止动作建模表格看懂以后你会发现网格DP的所谓“收敛优化”本质就是针对状态依赖结构选择正确的算法骨架。无环就无脑扫描有环就控制传播顺序自洽方程就盯住变化量。4. 常见问题与排查技巧实录4.1 我的DP为什么反复超时最经典的原因是每轮都全表扫描。网格 500×500状态数 25 万一次全表更新看似不贵但迭代几百轮就是几千万次甚至更多瞬间从“能跑”变成“超时”。改进办法就是队列优化只把值发生变化的格子重新入队。开局只有起点被初始化成有效值随后一连串更新会把邻居入队当所有状态不再变化时队列自然清空。这也意味着你不需要手动设定迭代次数队列空就是收敛。有时候超时不是轮数多而是状态维度过高。1000×1000 的 long 表约 8MB还能接受但如果加一维步数 1000内存直接变成 8GB这在任何环境中都不可接受。遇到这种场景要优先考虑滚动数组把步数维按循环使用。4.2 答案不对但递推式“看上去”正确先检查边界。网格题有大量幽灵边界问题从 [-1][0] 取值、邻居越界、第一行第一列特殊处理错都会导致结果差一点。再检查状态定义和实际更新是否一致。比如最小体力消耗问题起点体力算不算终点体力算不算如果题意说“进入格子消耗体力”起点也消耗如果题意说“每次移动消耗体力”起点可能不消耗。不同题规矩不同必须用题目自带的样例验证。第三要检查迭代是不是静默停止了。如果用队列优化必须保证“某状态被更新后就立即入队”不能只更新不入队否则队列空了不代表收敛而是代表提前放弃。通常我调这类代码时会先在小样例上打印每一轮有哪些格子被更新看到更新数量逐渐减少到最后为 0才放心。4.3 迭代很多次还是不能收敛怎么办出现这种问题第一反应要查收益函数是否会导致无穷增长。如果网格中可以无限重复进入并一直获得正收益最优价值会发散不可能收敛。解决办法是加入折现因子或规定收益递减或者直接限制总步数。第二要检查有没有漏 gamma。长期收益更新式里如果丢掉了 gamma状态价值会不断累加看起来每轮都在涨实际根本没有稳定点。我见过很多人改了半天边界条件结果只是漏了一个折现系数。第三如果 reward 全为负要确认是否给“停止”留了退路。模型中如果不允许停止必然被迫不停移动价值会跌到负无穷。加入“终点也能停下且价值为 0”的选项问题立刻可解。4.4 调试网格DP的几条实战经验小数据手算。拿一个 3×3 的地图自己用方格纸推一遍 dp 表再对比程序输出。很多初始化错误一眼就暴露。打印每轮变化量。如果第一轮更新 30 个格子第二轮还更新 30 个第三轮还在更新 30 个说明有环在反复传递如果数量逐步下降说明收敛正常。打印 max_delta 的变化曲线。迭代收敛速度呈指数下降是正常情况如果下降很慢要么阈值设得太小要么模型结构本身有问题。用完全不可达的地图测试。比如起点四面都是墙看程序会不会把不可达状态算成有限值。如果出现有限路径大概率是初始化或边界越界问题。5. 从网格DP到通用收敛优化几个扩展思路5.1 “DP优化”和“收敛优化”的分工动态规划优化的传统含义是降低复杂度比如斜率优化、四边形不等式、单调队列优化、滚动数组等。收敛优化更像是在这个基础上的工程策略第一步用建模把循环依赖和正环消掉第二步用队列、优先队列、剪枝、提前终止让迭代尽快达到不动点。这两步加在一起才是完整意义上的收敛优化。以后遇到网格DP题如果发现它不能一遍算完就可以套这条思路先判断状态依赖图有没有环再判断环上收益是否可能导致发散最后决定是用队列还是优先队列来传播信息。只要顺序对了大部分网格收敛问题都能找到可复现的解法。5.2 推荐的自测路线给准备系统学习的朋友一个顺序不一定需要刻意找某个平台任何在线题库按标签刷就可以第一步普通路径计数、最小路径和简单写一遍普通二维 DP第二步把同一题改成滚动数组空间压缩版本体会一维数组覆盖逻辑第三步做一道允许四方向走但带体力成本的最短路径题练习队列松弛第四步做有步数限制、可重复移动的收益题练习加时间维第五步做带折现因子的长期收益迭代题练习用 delta 判断收敛。完成这五步后网格DP这块基本就打通了。建议每做完一题都强迫自己写清楚四件事状态定义、转移公式、更新顺序、收敛判断。很多人只写前两样省略后两样结果看题解时觉得懂自己实现时却一次次翻车。这些内容里我最想强调的还是队列和动态终止。最开始我也把迭代次数写死成 1000跑一个小地图都要好几秒一度怀疑是自己的实现有问题。后来改成动态判断收敛几毫秒就出结果。这种对“收敛”的敏感才是网格DP进阶的分水岭。希望这篇拆解能让你少走一点我走过的弯路。

相关新闻

编译原理课程设计:从词法分析到小型编译器实现指南

编译原理课程设计:从词法分析到小型编译器实现指南

简介:面向编译原理课程设计与实验报告撰写的完整资料包,适合计算机专业本科生完成词法分析、语法分析及小型编译器的课程实践,也可用于自顶向下与自底向下分析方法的对比学习。资源以C/C实现为主,覆盖词法分析器、基于LL(1)方法的…

2026/10/10 18:56:41 阅读更多 →
前端转AI第16天:用SQLite为Agent构建可检索记忆库

前端转AI第16天:用SQLite为Agent构建可检索记忆库

1. 项目概述:为什么一个前端开发者要在第16天突然“钻进数据库”?“前端转 AI 100 天”这个标题本身就很说明问题——它不是一份学院派学习路线图,而是一个真实从业者用日志体记录的转型切片。Day 16 这个时间点特别值得琢磨:前15…

2026/10/10 18:56:41 阅读更多 →
塞曼效应三种理论解释:经典、旧量子论与新量子力学的范式演进

塞曼效应三种理论解释:经典、旧量子论与新量子力学的范式演进

简介:本资源是一份面向物理学专业本科生及研究生的理论物理学习资料,聚焦塞曼效应这一核心量子现象,系统对比经典理论、量子力学与相对论三种解释路径的物理图像、数学推导逻辑与适用边界。资料以PDF形式呈现,全文1.31MB&#xff…

2026/10/10 18:56:41 阅读更多 →

最新新闻

数据可用性与代码仓库声明也要双版本烟测:三列表 + A/B 验收表

数据可用性与代码仓库声明也要双版本烟测:三列表 + A/B 验收表

千笔-AIWritePaper https://www.aiwritepaper.com 「数据可应要求提供」「代码见附件」在抽查时经常落空。本文用三列表把声明钉到可打开的产物,并做 A/B 与伪 B 烟测。示例全部使用本地假仓库路径,不放公网 URL(_w/data-avail-ab/fake_repo…

2026/10/11 3:06:23 阅读更多 →
MySQL驱动配置与连接池调优指南:从超时风暴到生产级排查

MySQL驱动配置与连接池调优指南:从超时风暴到生产级排查

最近在维护一个订单系统的时候,半夜被监控告警吵醒——数据库连接池突然被打满,业务接口大面积超时。重启应用后恢复了十几分钟,又被打满。翻了一宿日志和监控之后,发现根子不在SQL,也不在数据库负载,而是出…

2026/10/11 3:06:22 阅读更多 →
RAG 在 Agent 中的作用:从向量检索到 Coding Agent 的代码理解

RAG 在 Agent 中的作用:从向量检索到 Coding Agent 的代码理解

RAG 在 Agent 中的作用:从向量检索到 Coding Agent 的代码理解 1. 前言 前面几篇分别学习了: Agent Harness:Agent 为什么需要外围控制机制?Agent Loop:Agent 如何不断执行任务?Tool Calling:LL…

2026/10/11 3:06:22 阅读更多 →
基于PJ85718DM与STM32F405RG的远程温度采集方案设计与实现

基于PJ85718DM与STM32F405RG的远程温度采集方案设计与实现

1. 从一个温度采集需求说起:为什么选 PJ85718DM 加 STM32F405RG嵌入式温度监测这个方向,看起来简单,真做起来坑不少。我前后做过好几个环境监测类的项目,从最早的 NTC 热敏电阻加分压电阻直接进 ADC,到后来用专用温度传…

2026/10/11 3:06:22 阅读更多 →
MoE 遇上消费级显卡:动态路由专家权重,12GB 怎么装下 125B 不爆显存

MoE 遇上消费级显卡:动态路由专家权重,12GB 怎么装下 125B 不爆显存

MoE 遇上消费级显卡:动态路由专家权重,12GB 怎么装下 125B 不爆显存 【免费下载链接】Strata Qwen3.8-Flash-Next on any consumer hardware: one-click install for Windows / Linux. Strata inference engine, OpenAI/Anthropic API on localhost, opt…

2026/10/11 3:06:22 阅读更多 →
云智变AI问卷设计实测:你需要的不是一个“扩写器”,而是一台“翻译器”

云智变AI问卷设计实测:你需要的不是一个“扩写器”,而是一台“翻译器”

先说一个你可能经历过的场景 导师看完你的问卷,沉默了三秒,然后问了一句:“你确定受访者看得懂这道题在问什么?” 你当时点头了。等问卷收回来200份,发现有一半的答案全是“C”——不是受访者敷衍,是你那…

2026/10/11 3:05:22 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →