本文转自: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. 三个人对同一个房间竞价。这种情况比较好解决,我们直接让出价最少的人出局。然后出价最高的人得到这间房间,其价格是前两个价位的平均值。 接下来的问题就回到了两个人选两个房间的问题了。

  2. 有两个人对同一个房间竞价,另一个人选了别的房间。这种情况也好解决,直接让选相同房间的两人中价高者得,价格是两者平均值。

  3. 三个人各选了不同的房间。这种情况不太好处理,下面仔细分析。

假设 甲 选了 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 低于总价的情况发生时,往往是后一种情形。(否则,多数人会出高于均价的价格)

当所有人都出低价的时,出最低价的人应该承担略高的价位,这是你在出很低价格的时候要考虑的后果。也就是恶意出不合理的价格,伤害的是自己而不是别人。

<转>房租分配问题的更多相关文章

  1. 分配问题与Hungarian算法

    分配问题与Hungarian算法 分配问题 指派问题 匈牙利算法 匈牙利方法是一种能够在多项式时间内解决分配问题(assignment problem)的组合优化算法.它由Harold Kuhn 与1 ...

  2. 关于const和define的内存分配问题的总结

    关于const和define的内存分配问题 const与#define宏定义的区别----C语言深度剖析 1,  const定义的只读变量在程序运行过程中只有一份拷贝(因为它是全局的只读变量,存放在静 ...

  3. 【Uvalive 2531】 The K-League (最大流-类似公平分配问题)

    [题意] 有n个队伍进行比赛,每场比赛,恰好有一支队伍取胜.一支队伍败.每个队伍需要打的比赛场数相同,给你每个队伍目前已经赢得场数和输得场数,再给你一个矩阵,第 i 行第 j 列 表示队伍 i 和队伍 ...

  4. mmc生产任务分配问题

    mmc生产任务分配问题,本题目简单.

  5. dp资源分配问题

    noip考试中dp中的资源分配问题是一大重点(不定时更新) 以下是一些例题 1.乘积最大 //Gang #include<iostream> #include<cstring> ...

  6. 洛谷P4014 分配问题【最小/大费用流】题解+AC代码

    洛谷P4014 分配问题[最小/大费用流]题解+AC代码 题目描述 有 n 件工作要分配给 n 个人做.第 i 个人做第 j 件工作产生的效益为c ij. 试设计一个将 n 件工作分配给 n 个人做的 ...

  7. [20181229]关于字符串的分配问题.txt

    [20181229]关于字符串的分配问题.txt --//链接:http://www.itpub.net/thread-2107534-1-1.html提到的问题,里面一段英文读起来很绕口:--//百 ...

  8. 记一次ElasticSearch重启之后shard未分配问题的解决

    记一次ElasticSearch重启之后shard未分配问题的解决 环境 ElasticSearch6.3.2,三节点集群 Ubuntu16.04 一个名为user的索引,索引配置为:3 primar ...

  9. Libre 6012 「网络流 24 题」分配问题 (网络流,费用流)

    Libre 6012 「网络流 24 题」分配问题 (网络流,费用流) Description 有n件工作要分配给n个人做.第i个人做第j件工作产生的效益为\(c_{ij}\).试设计一个将n件工作分 ...

随机推荐

  1. hdu 1385 Floyd 输出路径

    Floyd 输出路径 Sample Input50 3 22 -1 43 0 5 -1 -122 5 0 9 20-1 -1 9 0 44 -1 20 4 05 17 8 3 1 //收费1 3 // ...

  2. poj 1631 最多能有多少条不交叉的线 最大非降子序列 (LIS)

    左边的数字是1 2 3 4 5.... 右边的数字 第一个输入的和1连 第2个输入的和2连 右边再按从小到大排序 要求连线不能交叉 问最多能有多少条不交叉的线 假如右边有5个1 那么答案会是5 所以是 ...

  3. Linux 内核编译问题

    linux0.12 编译过程 https://www.bbsmax.com/A/GBJrMb0Kz0/ http://www.cnblogs.com/strugglesometimes/p/42313 ...

  4. C#并行编程(3):并行循环

    初识并行循环 并行循环主要用来处理数据并行的,如,同时对数组或列表中的多个数据执行相同的操作. 在C#编程中,我们使用并行类System.Threading.Tasks.Parallel提供的静态方法 ...

  5. java代码审计文章集合

    0x00 前言 java代码审计相关文章整理,持续更新. 0x01 java环境基础 搭建Java Web开发环境   配置IDEA编辑器开发java web,从0创建项目   IDEA动态调试   ...

  6. 如何成为java高手

    成为Java高手是每个Java学习者的梦想,但目前Java知识分支众多,我们该如何学习?本文介绍成为Java高手需要注意的25个学习目标,希望对正在成为Java高手的您有所帮助. 1.你需要精通面向对 ...

  7. Unity3D 入门 游戏开发 Unity3D portal game development

    Unity3D 入门 游戏开发 Unity3D portal game development 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com ...

  8. Java 之递归遍历目录

    Java 之递归遍历目录 一.内容 输出指定目录(文件夹)下的所有文件(包括目录)的绝对路径 二.源代码:RecursiveListDirectory.java package cn.com.zfc. ...

  9. BZOJ.1430.小猴打架(Prufer)

    题目链接 猴子之间的打架是棵无根树,有\(n^{n-2}\)种可能:同时n-1个过程的排列是\((n-1)!\) //820kb 104ms #include <cstdio> const ...

  10. 初试Django的缓存系统

    初试Django的缓存系统 现在我网页的逻辑是,响应请求,查找数据库相关信息,渲染模版生成最终页面,最后返回.使用缓存后就是将这个页面保存一段时间,在有响应请求相同页面的时候,可以直接返回,不用再做那 ...