CF1840F

原题

翻译

首先先说一个我想的错误的做法

因为从(0,0)(i,j)肯定是时间越短越好,因为如果时间长了不妨在(i,j)等一会,这样答案肯定不劣于走的慢的

于是直接设dpi,j表示从(0,0)(i,j)的最短时间

然后你就被骗到了

因为第一句话的显然是完全错误的,因为你只能向右和向下走,假如你当前在(i,j)想走到(i,j+1),但这时突然在第i行放炮,你就会发现你无路可走,只能受到炮击

下面开始说正解:


先考虑一个比较暴力的状态:dpi,j,t表示从(0,0)(i,j),在(i,j)时时间为t是否可行

容易得到递推式:

dpi,j,t=dpi1,j,t1|dpi,j1,t1|dpi,j,t1

但这个做法时间和空间复杂度都为O(n2m2),是很难卡过去的

于是我们考虑优化一下状态,我们容易发现i+jti+j+r

所以我们可以设dpi,j,t表示从(0,0)(i,j),在(i,j)时时间为i+j+t是否可行

容易得到递推式:

dpi,j,t=dpi1,j,t|dpi,j1,t|dpi,j,t

最终复杂度O(nmr)

posted @   FOX_konata  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示