滴滴餐厅题思路

单纯听同学讲的题目,自己写了些但是没有OJ让我测试能不能AC;
就只说说思路,求大神指导。

动态规划+状态压缩
n个桌子,m个人;
dp定义为dp[m][2^n]
dp[i][j]中;
i表示第i个人
j表示的是一个压缩的状态,
展开成二进制,如
例题中3个桌子,5个人;
m = 2^5 = 32;
j取0~31, j = 31 表示 11111这个状态,
既每个位子都可以坐;
递推关系为:
dp[i][j] = max(dp[i-1][j - 2^index] + money[i],dp[i-1][j])
index表示选择的座位,减去2^index相当于从j中删除了2进制该位置的1;
桌子状态压缩成二进制后解决。
全部评论
这道题严重体现了C++刷题的优越性,multimap真好用
点赞 回复 分享
发布于 2016-09-08 13:14
楼主你想多了,根据客人的消费金额排序就行了,不需要这么复杂的
点赞 回复 分享
发布于 2016-09-08 12:57
把客人排序不就好了。。。首先按照金额排序,金额相同的按照人数排序,然后依次判断能不能坐下。当然桌子要先按照升序排序
点赞 回复 分享
发布于 2016-09-08 12:54
就是贪心,优先选择金额最大并且能够坐下的
点赞 回复 分享
发布于 2016-09-08 12:31
桌子范围10000
点赞 回复 分享
发布于 2016-09-06 21:20
内存不超?
点赞 回复 分享
发布于 2016-09-06 21:16

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
LuvSran:是人我吃。老师就是学校呆久了,就业方面啥都不懂,还自以为是为了我们就业好。我学校就一破双非,计科入行率10%都没有,某老师还天天点名,说是出勤率抬头率前排率高了,华为什么的大厂就会来,我们就是不好好上课才没有厂来招。太搞笑了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务