跳转至

编辑城镇与模拟币2

参考时限:2秒;内存限制:128 MiB. 目标平台按正式文件最慢中位数的两倍、向上取整到0.5秒校准,见评测环境。

背景故事

《模拟人生》中的“编辑城镇”允许玩家不投入自己的模拟币就改变城镇的样貌,当然,装修自己家仍然需要花钱。除了建筑和内设,这个模式还可以编辑家庭成员。成员离开时,会带走原家庭按人数等分的一份模拟币。

发现这一机制后,小A想到了一个问题:可以反复编辑城镇中的家庭,最后让1号家庭恢复初始的成员组成,并使它拥有的模拟币尽可能多。

这一次,1号家庭可以有多名成员。小A只想知道,它最终最多能拥有多少模拟币?

形式化问题描述

初始有 \(n\) 个家庭。家庭 \(i\) 有 \(p_i\) 名不同的居民和 \(m_i\) 单位模拟币。初始属于1号家庭的 \(p_1\) 名居民称为目标成员,他们的身份始终不变。

一次编辑选择一名居民,从其当前家庭搬出,再加入另一个非空家庭,或建立一个新的单人家庭。若搬出前家庭有 \(p\) 人、模拟币总数为 \(m\) ,该居民带走 \(m/p\) ;原家庭剩下 \(p-1\) 人和 \(m-m/p\) 单位模拟币。加入另一个家庭时,所带模拟币全部加入该家庭。空家庭立即删除。模拟币按精确有理数计算,居民和模拟币都不能凭空增减。

可以进行任意有限次编辑,也可以不编辑。家庭数量可以增加或减少,编辑期间及最终家庭的人数没有上限。最后必须将全部目标成员组成一个家庭,称为最终的1号家庭;该家庭不能包含其他居民。目标成员在编辑期间可以分开,其他居民的最终分组不限。

求最终1号家庭能够拥有的最大模拟币总数 \(A\) ,输出它对 \(P=1000000007\) 取模的结果。应先在精确有理数意义下最大化,再取模。若约分后 \(A=r/s\) ,其模值定义为 \(r\cdot s^{-1}\bmod P\) ,输出 \([0,P-1]\) 内的代表元。此最大值可以用有限次编辑达到,且分母与 \(P\) 互素。

两名目标成员依次与外部居民平均,最终得到7和5

图中 \(T_1,T_2\) 是目标成员,\(O_1,O_2\) 是外部居民。两组初始分别属于同一家庭。先让 \(O_1\) 依次与 \(T_1,T_2\) 两两合并再分开,再对 \(O_2\) 做同样的操作。最后将两名目标成员合为一家,得到 \(7+5=12\) 单位模拟币。

输入格式

第一行一个整数 \(n\) .

接下来 \(n\) 行,每行两个整数 \(p_i,m_i\) ,表示一个初始家庭的人数和模拟币总数。

输出格式

输出一行一个整数,表示最大模拟币总数 \(A\) 的模值。

样例 1

输入

1
3 7

输出

7

样例 2

输入

2
2 2
1 9

输出

8

目标两人先分别拥有5和3,合为一家得到8。若直接把三人合为一家再移走外部成员,只能得到 \(22/3\) .

样例 3

输入

2
2 2
2 18

输出

12

样例 4

输入

3
3 6
2 4
1 1

输出

6

样例 5

输入

2
2 1
2 3

输出

250000004

最大模拟币总数为 \(9/4\) .

样例 6

输入

2
20 1
1000000 1000000

输出

538776497

数据范围与保证

\(1\le n\le1000000\) ,\(1\le p_1\le20\) ,对 \(2\le i\le n\) 有 \(1\le p_i\le1000000\) ,且 \(1\le m_i\le1000000\) .

本题由 Codex(GPT-6)重新设计:只求目标家庭的最大模拟币总数,目标初始人数至多20,其他家庭初始人数至多100万;允许任意有限次家庭编辑,最终恢复目标成员组成。

分值比例 额外条件
100% 无额外条件

共10个正式文件,每个10%。数据生成与检验。另见编辑城镇与模拟币。