跳房子——meet in the middle

题目大意如下:

有n栋房子,每个房子都有一个高度,我们只能跳到右边任意一个高度不小于当前房子的房子上,同时我们可以获得上面的金币

现在告诉你有n栋房子的高度和对应的金币数量,给出要求m,求出在这些房子上跳跃的方案中金钱数超过m的方案数(n<=40,hi,ci<=10^9)

这种恶心的数据,一看到我就直接交上暴力(数据真心水,某些暴力跑的比标算还快)

emmm,这考的是一个经典思想——meet in the middle(某位dalao考场自己居然发明了)

我们把n分成两部分,1~n/2.n/2~n,暴力处理两部分

我们会得到2*2^20个结果,记录左边的终点和金币数,记录右边的起点和金币数

对于左边的每一个结果在右边的每一个可以到达的点上二分出它的位置,记录答案

好像就这么点了吧....

(请耐心等待作者上传代码)

转载于:https://www.cnblogs.com/by-w/p/9612552.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值