1
treblex 2021-06-17 15:52:03 +08:00
只够一组,50 个,其他的 3 位老师拼团失败😂
|
2
superJava 2021-06-17 15:57:59 +08:00 2
500/7 = 71
|
3
murmur 2021-06-17 16:01:00 +08:00
这要看工时和工钱了,评审一个团队多少天不知道,多复杂不知道,给多少钱不知道
给钱多了并发可以高,钱少了一个团队没几天评不完 |
4
goodboy95 2021-06-17 16:13:26 +08:00
简单做除法就好,就是上面说的 500/7
可以考虑将所有老师的评审权排成一排:1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10……这样循环 50 次,每次需要评审一个团队时,就从这一排评审权中取出 7 个,比如说第一次取出 1-7 这 7 名老师,第二次取出 8-10 和 1-4 这 7 名老师。 |
5
RyuZheng 2021-06-17 16:17:37 +08:00
```python
import itertools from collections import defaultdict ls = itertools.combinations("ABCDEFGHIJ", 7) count_dict = defaultdict(int) count = 0 for l in ls: print('Analyze No. {} {}'.format(count + 1, l)) if any(count_dict[i] >= 50 for i in l): print('commbination skip...') continue for i in l: count_dict[i] += 1 count += 1 print(count) ``` 我怎么算出来是 58 |
6
GuuJiang 2021-06-17 16:21:22 +08:00
71
“每位老师最多评审 50 支团队”这个条件可以等价为每个老师手底下有 50 个苦逼研究生,当需要老师去评审的时候其实是派一个研究生去当枪手,且每个枪手只能用一次,为了结果最大化,采用贪心策略,每当需要一轮评审的时候从剩余研究生数最多的老师里选 7 个成团,于是问题进一步简化为了在一个 10*50 的矩阵里从左到右依次取 7 个元素,不够 7 个时折行,最多能取几次,最终简化成了 500/7 |
7
hxsf 2021-06-17 16:41:08 +08:00
老师尽可能平均的参与。那就每 10 场里参与 7 场轮空 3 场。单人最多参与 50 次。
50 地板除 7 * 10 = 70 ? |
8
thunderw 2021-06-17 16:45:18 +08:00
[10*50/7]=71
每次调剩余次数最多的人组团就行了。 |
9
dovahkiinQAQ 2021-06-17 17:58:21 +08:00
老师评审名额为 50*10=500
一个团队消耗 7 次 所以能评审的团队数=500/7=71 |
10
Vegetable 2021-06-17 19:03:27 +08:00
不限制时间的情况下,「同时」就失去了意义。
相当于每个老师有一个耐久 50/50, 来一个团队,选出有耐久的 7 个老师评,总耐久度-7 。你问题可能描述的不准确,不然这根本不算数学题啊 |
11
shpkng 2021-06-17 19:13:59 +08:00
这不是经典小学数学题吗.. 我四五年级的时候做的就这种
总人次除以每次需要的人次就行 50*10/7 |
12
oneisall8955 2021-06-17 20:19:00 +08:00
@GuuJiang #6 正解,10*50 的矩阵从左到右,每次拿 7 个元素,最多拿几次
|