10.31[A]

3665

自解

在遇到镜子时,只会像右或向下,与遍历方向是一致的

依旧可以使用DP

对每个格子(i,j),考虑向右或向下

如果向右,右格子是镜子,那么下一步到达的是(i,j+1)->(i+1,j+1)

但要考虑下一步是否依然还是镜子

考虑定义一个函数get,用来求解经过镜子后,最终到达的目的地是哪里

参数为当前坐标i,j,和此时的方向,向右为0,向下为1

经过镜子时,就是把0变1,把1变0

结束,直到i,j超过界限,或者目标点不为镜子

那么dp过程就是,从00开始,不断向右和向下遍历,当某个方向是镜子时,那就是Get(镜子坐标)加上当前的dp值;

DEBUG

这个错误就是说,原dfs中注释掉的那部分,针对f造成了重复计算;

dfs语义应该是,r,c此处为镜子,然后是以方向f进入到此处的镜子当中

如果是以这个语义,那么在dfs内部算tar时,就不该是按f的方向计算,而应该是按反射后的方向去算

如果dfs语义是,当前r,c节点不为镜子,但是以f方向走的下一个格子是镜子,那么注释中的计算方向就是对的,表示的是起点,但是在调用的时候就不能传入镜子的坐标,而是当前位置的坐标

说白了就是dfs第一层和第二层的区别

DE完后

AI优化

方案一:记忆化 dfs(改动最小)

方案二:倒序预处理 nxt(推荐,无递归)

小Why的循环置换

就是置换环

就是给了一个长度为n的全排列a

然后组成了m个置换环,

假设一个环中有K个元素,最后一次交换能换2个元素归位,前x次交换只能使1个元素归位,x+2=k,最终使这k个元素归位,也就是说一个环有K个元素的环,要交换K-1次

总共有m个环,设每个环上的元素数量为mi

那么∑mi-1就是总的交换次数,然后∑mi为n,所以总的交换次数是n-m

相关推荐
zwc32104320551 小时前
Day 5:threshold与inRange阈值分割
c++·图像处理·人工智能·opencv·算法·计算机视觉
云-缩影1 小时前
实际项目中怎么选排序算法:从面试题到工程落地
java·算法·排序算法
Pniubi1 小时前
力扣46全排列(回溯(递归))
算法·leetcode·职场和发展
ZhengEnCi11 小时前
Agent 架构怎么选:从单 Agent 到多 Agent 编排的选型决策指南
算法·架构
秋天的怀念_David12 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Pniubi12 小时前
力扣283移动零(双指针法)
算法·leetcode·职场和发展
hhb_61812 小时前
大模型落地三重优化实战
人工智能·算法·机器学习
云和数据.ChenGuang12 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
2601_9707038314 小时前
工业除湿机租赁:把一份租金合同拆开看
大数据·数据结构·算法·数据库架构·推荐算法