C

题目大意及模型转换

平面上有N个点,每个点选择上、下、左、右其中一个方向射出一条射线。求有多少种方案,使得没有射线穿过其余点且任意两条射线不相交。
N<=54。

DP

我们考虑将横坐标相同的所有点当作一层。
然后现在从左到右扫。
对于一个点,如果它想要向左射,显然当前所有处理过的点中,向上射的点的纵坐标的最小值要大于当前点的纵坐标,向下射的点的纵坐标的最大值要小于当前点的纵坐标。因此DP状态要保留这两个值。
对于同一层中的最高点,它可以向上射,显然当前所有处理过的点中,向右射的点的纵坐标的最大值要小于当前点的纵坐标。同一层中的最低点,它可以向下射,需要保留向右射的点的纵坐标的最小值。
所以定状态要保留这四个值,转移显然。

注意

一个状态若无用,就直接跳过。
应当采用顺推。
要注意考虑射线穿过点的情况,即往左和右射的时候。
滚动数组防止超时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值