COCI 2012 Germ

题目大意

一棵n层的满二叉树,叶子从左到右编号为 0 2n 1 ( n < <script type="math/tex" id="MathJax-Element-6"><</script> = 9)
现在你可以选择任意个非叶子节点,交换它们的左右儿子。
这样的序列的代价为相邻两个叶子节点的权值。
权值是给定的 ( 2n 1 ) ( 2n 1 ) 的矩阵。

其实这道题的话,挺难的。我们可以设f i , j 表示已经放了i个位置,第 i 个位置放的是j的最小代价。
那么易得

f i + 1 , k = f i , j +a j , k

其中,j, k 必须满足题目条件。
如果我们暴力枚举,时间复杂度是O ( n3 ) 的,显然是过不了的。那么我们就可以缩减一些无效的k值的枚举。
我可以发现,当 i j 确定时,k也是确定的,而且 k 的取值是连续的一段,k的个数就等于 lowbit ( i )
我就初始化出,在i j下, k <script type="math/tex" id="MathJax-Element-62">k</script>的取值。然后动态规划就行了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值