状态压缩dp cover题解

 

平面上有个点i个点的坐标是(x[i], y[i]). 给你M种正方形i种正方形的边长是sides[i] ,费用是cost[i]. 现在要你用这些正方形,把所有的点都套在正方形内(点在正方形边框上也可以), 至少要花费多少钱?同一种类型的正方形有无穷多个,随便你用,用一个就要给一个的钱.

输入格式:

    多组测试数据.

    第一行: 一个整数t,表示有t组测试数据. 1 <= t <=5.

        每组测试数据格式如下: 

           第一行:一个整数N.  1 <= N <= 16.

           接下来有行,每行两个整数:x[i]、y[i]。

0<= x[i]、y[i]<=10^9

           接下来一行,一个整数M.  1 <= M <= 50.

           接下来有M行,每行两个整数:cost[i] 和sides[i].

           1 <= sides[i]<=10^9;  1 <= cost[i] <= 10^8.

 输出格式:

        共t,每行一个整数,表示最少花费。

输入样例:  cover.in

输出样例:cover.out

3

2

1  1

100  100

2

3  100

1  1

2

1  1

100  100

2

1  100

1  1

4

0  0

100  0  

201  1

300  0

3

6  1

100  100

10   99

2

1

22

 

完整的题解ppt已经放到网上了:

http://cid-32b8c60c3f37cbe8.office.live.com/self.aspx/OI%E8%B5%84%E6%96%99/2010.7.23%5E_NOIP%5E_1[%E6%B1%9F%E6%B6%9B%5E_%E6%A8%A1%E6%8B%9F1].zip

 

下面贴我写的代码:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值