q*****9 发帖数: 85 | 1 有两种角色,公司和求职者,公司和求职者都有三个指标,智商,情商和经验,对个人
来说,这三个指标就是个人的指标,公司的这三个指标是对求职者的期望,match的程度
取决于个人与公司三个指标的乘积的和,假设有1000家公司和20000个求职者,必须要
保证把这20000个求职者平均的分配到1000家公司,即,每家公司20个人,求职者还有
一个dream companies 的列表,假设每个人后面有10个公司,这个是从感兴趣的程度
排序好的,即,最想去的公司,排在最前面,分配时要考虑雇佣match程度高的求职者,
要保证没有这种情况发生:一个求职者相较于现在被分配到的公司更喜欢另一个公司,
然而,那个公司却存在着比自己match程度低的人。设计出具体的数据结构和算法。
我觉得tricky的地方在于:
1. 原来可能在20个人范围以外的人,由于20个人中有人去了其他更想去的
公司而得到机会去这个公司。
2. 通过dream companies,去找是否公司可接受,如果公司不available,则要继续查看
第二想去的公司,以此类推,如果公司available,但是由于match程度去不了,只有等
待,但是由于求职者之间的相对的关系,一个人去了另外公司就可能空出职位,还需要重新
遍历。
3.如果dream companies都不available,或者一个company没有想去它的人available了
,如果有这种可能的话,该怎么分配,按最高match分数分配还是怎样,题目并没有说明。
4.不知道是否和input数据有关系,是否存在无解的情况
这题一定有解吗? 总感觉存在着悖论,满足一个就不满足另一个,对于某些input来说。
感觉总是找不出一个清晰高效的方法,大家有什么方法吗,是否可以证明一定有解(无论
何种input)? |
d*******d 发帖数: 2050 | 2 这题不容易,同求解.
dream company list貌似没什么用阿. 貌似只能用在match分数相同时取更想去的. |
q*****9 发帖数: 85 | 3 有用, 如果你只按match分数最大的录取的话,那么有可能被录取的更想去其他
公司,而且他也有资格去其他公司。就是违反了那个重要的规定。 所以,我是
从求职者的dream companylist 列表开始读取,让他们最先去看是否能进
最想去的company,然后次之,以此类推。
dinohound (dino) 的大作中提到: 】 |
n*******r 发帖数: 12 | |
q*****9 发帖数: 85 | 5 搞定了,谢谢
【在 n*******r 的大作中提到】 : 没那么复杂 : 改动一下stable marriage的算法,把一对一改成一对20。 : http://en.wikipedia.org/wiki/Stable_marriage_problem
|