跳房子——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个结果,记录左边的终点和金币数,记录右边的起点和金币数

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

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

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

猜你喜欢

转载自www.cnblogs.com/by-w/p/9612552.html