编辑城镇与模拟币3¶
参考时限:0.5秒;内存限制:64 MiB. 目标平台按正式文件最慢中位数的两倍、向上取整到0.5秒校准,见评测环境。
背景故事¶
《模拟人生》中的“编辑城镇”允许玩家不投入自己的模拟币就改变城镇的样貌,当然,装修自己家仍然需要花钱。除了建筑和内设,这个模式还可以编辑家庭成员。成员离开时,会带走原家庭按人数等分的一份模拟币。
发现这一机制后,小A又开始研究家庭的财富。这一次,城镇只保留两个家庭位置。居民可以在两个位置之间搬家,空家庭的位置也会保留。小A希望让最初属于1号家庭的成员最终重新组成一个家庭,并使他们拥有的模拟币尽可能多。
小A准备了多份互不相关的城镇存档,请分别计算答案。
形式化问题描述¶
每份存档始终只有两个家庭位置,记为A、B。初始A位置的家庭有 \(p_1\) 人、\(m_1\) 单位模拟币;B位置的家庭有 \(p_2\) 人、\(m_2\) 单位模拟币。初始属于A的所有居民称为目标成员,他们的身份始终不变。目标成员至少有一人,B可以为空。
一次编辑选择一名居民,将其从当前家庭搬到另一个位置的家庭。若搬出前其家庭有 \(p\) 人、\(m\) 单位模拟币,该居民带走 \(m/p\) ;原家庭减少一人和 \(m/p\) 单位模拟币,另一个家庭增加一人和同样多的模拟币。加入后的模拟币由新家庭全体成员共同拥有,之后搬出的居民按新的人均财富带走模拟币。
允许搬入空家庭。家庭变空后,其位置仍然保留,模拟币为0;不能建立第三个家庭位置。编辑期间及最终的家庭人数没有上限。模拟币按精确有理数计算,不能凭空增减。
可以进行任意有限次编辑,也可以不编辑。最终,全部目标成员必须共同组成一个家庭,且该家庭不含其他居民。这个家庭可以位于A,也可以位于B。求其模拟币总数的最大值 \(W\) .
应先在精确有理数意义下最大化,再输出 \(W\) 对 \(P=1000000007\) 取模的结果。若约分后 \(W=u/v\) ,其模值为 \(u\cdot v^{-1}\bmod P\) ,输出 \([0,P-1]\) 内的代表元。在给定范围内,最大值可以用有限次编辑达到,且分母与 \(P\) 互素。
图中 \(T_1,T_2\) 是目标成员,\(O_1,O_2\) 是其他居民,\(M\) 表示该家庭的模拟币总数。每一步只搬一人,始终只有A、B两个位置。
输入格式¶
第一行一个整数 \(T\) ,表示存档数量。
每份存档占两行。第一行为 \(p_1,m_1\) ,第二行为 \(p_2,m_2\) .
输出格式¶
对每份存档输出一行一个整数,表示最大模拟币总数的模值。
样例 1¶
输入¶
1
2 2
2 18
输出¶
888888906
图中四次搬家依次为 \(T_1\) 从A到B、\(O_1\) 从B到A、\(T_2\) 从A到B、\(O_2\) 从B到A。最终B恰好包含两名目标成员,财富为 \(98/9\) ,其模值为888888906。这是最优值。
样例 2¶
输入¶
1
3 12
2 4
输出¶
12
目标家庭初始人均财富较高,不编辑即可达到最优值12。
样例 3¶
输入¶
1
2 2
1 9
输出¶
8
目标成员可以暂时分开,最终在B组成财富为8的家庭。
样例 4¶
输入¶
1
1 0
1 1
输出¶
500000004
先合并两人,再让目标成员搬到空位置,目标财富为 \(1/2\) .
样例 5¶
输入¶
1
7 25
0 0
输出¶
25
另一个家庭为空,全部模拟币都属于目标成员,答案为25。
样例 6¶
输入¶
3
2 6
3 9
3 1
2 1
1000000 1000000000
1 1000000000
输出¶
6
930041160
286420940
三份存档独立处理。第一份存档中两户人均财富相等;第二份的最大财富为 \(298/243\) .
数据范围与保证¶
\(1\le T\le100000\) ,\(1\le p_1\le1000000\) ,\(0\le p_2\le1000000\) ,\(0\le m_1,m_2\le10^9\) .若 \(p_2=0\) ,则 \(m_2=0\) .
本题由 Codex(GPT-6)重新设计:家庭位置固定为两个,允许空家庭及多名目标成员,只求目标成员重新组成家庭后的最大财富,最终可以使用任一位置;输入包含多份独立存档。
| 分值比例 | 额外条件 |
|---|---|
| 100% | 无额外条件 |