<转>房租分配问题
本文转自:https://blog.codingnow.com/2012/12/share_rent.html
今天读到策划同学的周报中提到的一个关于合租房子的分摊房租问题。
引用周报中的一节如下:
周在搬家,和喵、刘阳一起租房子住,遇到一个问题,就是分摊房租。中式的解决方法一般都是商量一下,但具体怎么商量,没有手段,总之就是大家估摸一下,觉得大略上说的过去就OK了。很少有拉下面子认真谈价格的,即使心里其实觉得并不认可。
在这方面,美国人还真能想一些办法,这是一个旅美的留学生在博客上写的,他和老美同学的商议方式: 两个人A,B合租一个二居的房子,比如每个月是1500美元,因为主卧和次卧有大有小,价格肯定是不均的,那么两个人分别写两个价格,也就是对主卧和次卧的心理价格。可以很极端,比如1400:100,但总额必须是1500,因为这是A,B必须接受的大条件,然后公开,除掉开价完全相当的情况,两间卧室必然各有一个出价最高的人,价高者入住,而月租则是A,B对这个卧室开价的均值。例如A出价是900:600,B出价是1000:500,那么A住次卧,价格为550,B住主卧,价格为950。两个人都得到了自己认可的房子,而价格还低于自己的预期。
这一方案还有一个优势,就是双方都无法通过恶意的叫价来损害对方,获得利益。相信很多同学会提出一个更直接的解决方案:一个人提价格方案,另一个人选择。但是这一方案也有点问题,提价格的人相对是吃亏的,对吧?
遗憾的是,这种做法,似乎无法推广到三个人的情况。
我觉得这个问题很有趣,晚上想了一下,其实是可以推广到三人甚至更多人的。
先说这个原始策略为什么让双方都感觉合理:
从经济学角度看,每个人都希望别人多分摊一些房租。你对一个房间了价值有一个评估,如果别人高于这个价格租下这个房间,对你就是有利的。原始方案正是如此,让双方都觉得最终方案对自己有利。我们基于这个基础来推广这个方案就可以了。
首先, 两个人对两间房间的分配策略,原始策略已经做的很好了。我们要做的仅仅是把三个人分三间房划简到两个人分两间房的问题。(其中不考虑竞价相同的问题。原始方案也没给出解决方案,可以重新来一次,也可以投骰子等。)
对三人策略,我的方案是: 三个人分别写下自己想要哪一间房间,并想对这个房间出多少价。
结果有三种 :
三个人对同一个房间竞价。这种情况比较好解决,我们直接让出价最少的人出局。然后出价最高的人得到这间房间,其价格是前两个价位的平均值。 接下来的问题就回到了两个人选两个房间的问题了。
有两个人对同一个房间竞价,另一个人选了别的房间。这种情况也好解决,直接让选相同房间的两人中价高者得,价格是两者平均值。
三个人各选了不同的房间。这种情况不太好处理,下面仔细分析。
假设 甲 选了 1 号房间,给出了价格 A ;乙选了 2 号房间,给出了价格 B ; 丙选了 3 号房间,给出了价格 C 。
我们先去掉 A B C 中绝对值最小值, 比如是 C 。 保留 1 号房间的 A 报价和 2 号房间的 B 报价。
其实可以这样看:甲和乙一起倾向于用 A+B 的价格租 1 2 号房间。那么他们集体对 3 号房间的估价是总价 - A - B 。
有很少的情况, 这个估价会变成负数。如果碰到了, 我认为可以简单的认为是甲和乙对 3 号房间的估价为 0 。
之后,就可以按均价原则定出 3 号房间的价格为 C 与 (总价 - A -B) 的平均值,并以这个价格租给 C 。
剩下的又变成了两个人分配两间房的问题了。 :)
补充:有同学认为,如果 A+B+C 低于总价的时候,case 3 会使得 C 最终价格超过他的预期,不太合理。
我认为这是合理的。因为大家可能都想用高价得到好的房间;也可能由于经济原因,希望尽量少分摊房租而倾向住不那么好的房间。
当 A+B+C 低于总价的情况发生时,往往是后一种情形。(否则,多数人会出高于均价的价格)
当所有人都出低价的时,出最低价的人应该承担略高的价位,这是你在出很低价格的时候要考虑的后果。也就是恶意出不合理的价格,伤害的是自己而不是别人。
<转>房租分配问题的更多相关文章
- 分配问题与Hungarian算法
分配问题与Hungarian算法 分配问题 指派问题 匈牙利算法 匈牙利方法是一种能够在多项式时间内解决分配问题(assignment problem)的组合优化算法.它由Harold Kuhn 与1 ...
- 关于const和define的内存分配问题的总结
关于const和define的内存分配问题 const与#define宏定义的区别----C语言深度剖析 1, const定义的只读变量在程序运行过程中只有一份拷贝(因为它是全局的只读变量,存放在静 ...
- 【Uvalive 2531】 The K-League (最大流-类似公平分配问题)
[题意] 有n个队伍进行比赛,每场比赛,恰好有一支队伍取胜.一支队伍败.每个队伍需要打的比赛场数相同,给你每个队伍目前已经赢得场数和输得场数,再给你一个矩阵,第 i 行第 j 列 表示队伍 i 和队伍 ...
- mmc生产任务分配问题
mmc生产任务分配问题,本题目简单.
- dp资源分配问题
noip考试中dp中的资源分配问题是一大重点(不定时更新) 以下是一些例题 1.乘积最大 //Gang #include<iostream> #include<cstring> ...
- 洛谷P4014 分配问题【最小/大费用流】题解+AC代码
洛谷P4014 分配问题[最小/大费用流]题解+AC代码 题目描述 有 n 件工作要分配给 n 个人做.第 i 个人做第 j 件工作产生的效益为c ij. 试设计一个将 n 件工作分配给 n 个人做的 ...
- [20181229]关于字符串的分配问题.txt
[20181229]关于字符串的分配问题.txt --//链接:http://www.itpub.net/thread-2107534-1-1.html提到的问题,里面一段英文读起来很绕口:--//百 ...
- 记一次ElasticSearch重启之后shard未分配问题的解决
记一次ElasticSearch重启之后shard未分配问题的解决 环境 ElasticSearch6.3.2,三节点集群 Ubuntu16.04 一个名为user的索引,索引配置为:3 primar ...
- Libre 6012 「网络流 24 题」分配问题 (网络流,费用流)
Libre 6012 「网络流 24 题」分配问题 (网络流,费用流) Description 有n件工作要分配给n个人做.第i个人做第j件工作产生的效益为\(c_{ij}\).试设计一个将n件工作分 ...
随机推荐
- jqgrid 表格中筛选条件的多选下拉,树形下拉 ;文本框清除插件;高级查询多条件动态筛选插件[自主开发]
/** * @@desc 文本框清除按钮,如果isAutoWrap为false当前文本框父级必须是relative定位,boostrap参考input-group * @@author Bear.Ti ...
- Codeforces 788C The Great Mixing
The Great Mixing 化简一下公式后发现, 问题变成了, 取最少多少数能使其和为1, bitset优化一下背包就好啦. 题解中介绍了一种bfs的方法没, 感觉比较巧妙. #include& ...
- Flume+Kafka整合
脚本生产数据---->flume采集数据----->kafka消费数据------->storm集群处理数据 日志文件使用log4j生成,滚动生成! 当前正在写入的文件在满足一定的数 ...
- PHP Excel导入日期单元格处理
PHPExcel导入Excel文件,对Excel中日期单元格处理 /** * 判断字符串是否是日期格式 * @param $date * @param $format * @return bool * ...
- echarts 折线统计笔记
效果案例图 需要引入的js文件可以直接去官网下载 下面是代码 <!--第一步: 引入 ECharts 文件 --> <script src="static/js/myjs/ ...
- Unity 精灵物体的创建 Sprite.create
参考链接:http://www.cnblogs.com/BuladMian/p/6226744.html 创建预制体精灵 优点:创建大量相同精灵,只用调用一个预制体精灵,避免了 计算机大量重复创建会导 ...
- 设置cookie,获取cookie,删除cookie,修改cookie
怎么设置cookie,怎么设置cookie以及删除cookie和cookie详解 在操作cookie之前,先来看一下cookie长什么样. 可以看到,cookie是一个个键值对(“键=值”的形式)加上 ...
- git 详细教程和常用操作指令
git 内部工作原理图 如上图,git 一般可以分为三个区:工作区.暂存区.版本库,通常类似 git add等命令都是与index 暂存区的交互,git commit指令则是 index 与版本库的交 ...
- Unity3D 入门 游戏开发 Unity3D portal game development
Unity3D 入门 游戏开发 Unity3D portal game development 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com ...
- HDU.1536.S-Nim(博弈论 Nim)
题目链接 \(Description\) 给定一个集合S,每次只能拿S中某个元素个数的石子.每组数据有多组询问,询问给出m堆石子个数,问先手是否必胜.有多组数据. 1. 首先对操作数组排个序,再预处理 ...