冰汽时代的救护站,也包括所有两班制的工作建筑,实际上是把工人分成两个班次来工作的。例如救护站满人5个人,日班3个人,夜班2个人,人手的分配和工作效率都与此有关。先列出一些概念:
日班:6点到18点工作
夜班:18点到明天6点工作
换班:6点和18点换一拨人工作
班次人数上限:该班次最多安排几人

如果工作场所总人数是偶数,那么每个班次人数上限都是总人数的一半。总人数是奇数的话,那么日班比夜班人数多1人。例如救护站日班3人,夜班2人。医务所日班夜班都是5人。
当前班次:游戏时间为6点到18点表示日班,否则表示夜班
工作效率:当前班次正在工作的人数/当前班次人数上限
班次平衡:两个班次的人数相差
班次不平衡:两个班次的人数相差>1
班次平衡调整:如果班次不平衡,那么从人数多的班次转移一个人到人数少的班次。重复这个过程,直到班次平衡。

排班流程(如何处理工作场所的人数变动)
往工作场所里面放人,一次只能放一个。一次放多个的情况下就按照一个一个放来考虑。往工作场所放人(1个人)遵循的流程:
第一步:考虑当前班次,如果当前班次人数已满,那么排进另一班次
第二步:(平衡性原则)如果两个班次人数不相等。排进人数少的那个班次
第三步:(当前班次优先原则)如果两个班次人数相等,那么排进当前班次
从工作场所抽人可以一次抽多个,因为可以用shift点你想要抽出的人,然后点解散。如果点面板中的人数-1的话,会抽出列表中的第一个人,按照先进先出的规则。从工作场所抽人(任意数量)遵循的流程:
第一步:如果班次不平衡,且当前游戏没有暂停,那么进行班次平衡调整(暂停时不调整)
无论是放人还是抽人,有一个结论,时间正在流动的时候,工作场所的班次永远是平衡的。暂停时不一定。
怎么样,是不是有一种二叉搜索树的感觉。那我们用这个理论解释一些技巧。