小记

1.LIS

有1...n这n个数的排列,一次移动可以把任一数放任一位置,问至少多少次移动,使成1...n的递增顺序
答案说n-LIS
将LIS外的数,移到LIS中合适的位置,一定为使LIS+1
因为移完,那个数的位置有三种可能
1.在LIS某两数之间,LIS+1
2.在LIS之前,或之后,LIS+1
3.与LIS某数位置重合,LIS不变;
因为此处数不相同,所有不会重合。所有LIS会+1

2.集合状态的表达

许多问题问的是从一堆东西里选几个出来,使得什么最优
乍一看很容易想到用集合来表示状态
最直接的是用二进制表示,但时间空间都消耗巨大。
还有种是排成一排,看做线性的,从前i个中选
能用于线性的,关系要松些。
比如,最优方案与选择的顺序无关,
或者能够排个序,使得任意i<j,j可以在i之后选,而不影响最优方案,或者说方案更优
恩,有序的感觉。
从最优子结构来理解,前i是前j的子问题,能够保证子问题最优时原问题也最优
上次优化多重背包时就跌这了,认为f[i][j]是f[i][k], k>j, 满足最优子结构的子问题, 实际上不是。

二进制的,经典例子是TSP问题,由于选择的点和其他点之间都有联系,不好排序,说不好谁先走就是好的(也不一定= =),每个点什么时候走,跟周围点都有关,不得不用二进制表示,完全的用集合来看待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值