滴滴餐厅题思路

单纯听同学讲的题目,自己写了些但是没有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

相关推荐

07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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