P3847 [TJOI2007]调整队形 题解

这是一篇关于[TJOI2007]调整队形的题解,主要讨论如何通过动态规划算法求解让数组变为回文数组的最小步数。博客指出,当考虑到回文串的性质,可以采用区间动态规划的方法,定义状态fi,j表示将ai到aj变成回文的最小步数,并给出了状态转移方程。虽然添加操作看似没用,但实际上是等效于在对应位置删除一个数,维持了回文性质。最终,该算法的时间复杂度为O(n^2),在比赛中得到了满分。" 114089658,10553439,JavaWeb WebSocket 实现网页聊天室,"['JavaWeb开发', 'WebSocket应用', '前端框架', '富文本编辑器', '即时通讯']
摘要由CSDN通过智能技术生成

博客园同步

原题链接

简要题意:

每次可以在数组中插入一个数(可以在两端)或删除一个数,改变一个数;求让数组成为回文数组的最小步数。

这题的蓝太假了,水 dp \text{dp} dp,想到算法就可以做出。

关键还是要想到用 动态规划 啊,要是想不到这题就做不出来了。

(考场上可以先用搜索,然后记忆化推导也行,但是这里就不推了)

显然考虑区间 dp \text{dp} dp.

f i , j f_{i,j} fi,j 表示将 a i a_i ai a j a_j aj 变成回文的最小步数。

那么有:

f i , j = { f i + 1 , j − 1 , s i = s j min ⁡ ( f i + 1 , j , f i , j − 1 , f i + 1 , j − 1 ) , s i ≠ s

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值