Freestyle
题目描述
Takahashi 可以用 N 种不同的泳姿游泳。
当他使用第 i 种泳姿时,每秒消耗 Ai 体力并前进 Bi 米。
回答 Q 个查询。第 i 个查询如下:
判断是否有可能在总消耗体力不超过 Ci 的情况下前进 Di 米。如果可能,求所需的最少秒数。
在这里,他可以自由组合不同的泳姿,且切换泳姿的时间可以忽略不计。
具体地,他可以按以下步骤游泳:
选择正整数 m,长度为 m 的正实数序列 t=(t1,t2,…,tm),以及长度为 m 的整数序列 x=(x1,x2,…,xm),其中每个元素在 1 到 N 之间(含)。
然后,按顺序 i=1,2,…,m 在第 xi 种泳姿下游 ti 秒。
输入格式
输入按下述格式由标准输入给出:
N
A1 B1
A2 B2
⋮
AN BN
Q
C1 D1
C2 D2
⋮
CQ DQ
输出格式
共输出 Q 行。
对于第 i 个查询,在第 i 行输出答案如下:
如果在总消耗体力不超过 Ci 的情况下无法前进 Di 米,则输出 −1。
否则,输出所需的最少时间。当打印值与真实答案的绝对或相对误差不超过 10−9 时,视为正确。
4
1 2
2 3
3 3
4 4
5
4 7
7 7
49 100
1000 500
4 5
3.000000000000000000
1.750000000000000000
-1
125.000000000000000000
1.500000000000000000
提示
所有输入值均为整数。
1≤N≤2×105
1≤Ai,Bi≤109
1≤Q≤2×105
1≤Ci,Di≤109在此输入中,Takahashi 可以使用以下四种泳姿:
每秒消耗 1 体力并前进 2 米。
每秒消耗 2 体力并前进 3 米。
每秒消耗 3 体力并前进 3 米。
每秒消耗 4 体力并前进 4 米。
该输入包含五个查询。
对于第一个查询,C1=4,D1=7。
选择 t=(1,2) 和 x=(2,1)。Takahashi 的游泳过程如下:
在前 1 秒,他消耗 2 体力并前进 3 米。
在接下来的 2 秒,他消耗 2 体力并前进 4 米。
总共,他消耗 4 体力并前进 7 米。所需时间为 3 秒,这是最少的。
对于第二个查询,C2=7,D2=7。
选择 t=(7/4) 和 x=(4)。Takahashi 的游泳过程如下:
在前 7/4 秒,他消耗 7 体力并前进 7 米。
总共,他消耗 7 体力并前进 7 米。所需时间为 7/4 秒,这是最少的。
对于第三个查询,C3=49,D3=100。
无论 Takahashi 如何游泳,都无法在总消耗体力不超过 49 的情况下前进 100 米。
对于第四个查询,C4=1000,D4=500。
选择 t=(125) 和 x=(4)。Takahashi 的游泳过程如下:
在前 125 秒,他消耗 500 体力并前进 500 米。
总共,他消耗 500 体力并前进 500 米。所需时间为 125 秒,这是最少的。
对于第五个查询,C5=4,D5=5。
选择 t=(1/2,1) 和 x=(4,2)。Takahashi 的游泳过程如下:
在前 1/2 秒,他消耗 2 体力并前进 2 米。
在接下来的 1 秒,他消耗 2 体力并前进 3 米。
总共,他消耗 4 体力并前进 5 米。所需时间为 3/2 秒,这是最少的。
标签: AtCoder|abc356G
来源
AtCoder|abc356G