前言
回光返照
题目相关
题目大意
有
K
K
K天,第
I
I
I天的A券价值为
A
I
A_I
AI,B券价值为
B
I
B_I
BI,买券的获得A券B券比例为
R
a
t
e
I
Rate_I
RateI,还也可以百分比卖券
必然存在一种最优的买卖方案满足:
每次买进操作使用完所有的人民币;
每次卖出操作卖出所有的金券。
题解
我们发现,所有操作由于给出的保证变成了某天买入然后某天卖出
然后现在发现一种非常方便的大复杂度做法
我们设
f
i
f_{i}
fi表示
1
1
1这天拥有
1
1
1单位钱,到第
i
i
i天时的最大所有价值
我们发现最后答案就是
f
K
f_{K}
fK
考虑转移:
f
1
=
1
f_{1}=1
f1=1
f
i
=
m
a
x
(
f
i
−
1
,
R
a
t
e
j
∗
A
i
+
B
i
R
a
t
e
j
∗
A
j
+
B
j
∗
f
j
)
f_{i}=max(f_{i-1},\frac{Rate_j*A_i+B_i}{Rate_j*A_j+B_j}*f_{j})
fi=max(fi−1,Ratej∗Aj+BjRatej∗Ai+Bi∗fj)
f
i
/
A
i
=
m
a
x
(
f
i
−
1
,
R
a
t
e
j
+
B
i
/
A
i
R
a
t
e
j
∗
A
j
+
B
j
∗
f
j
)
f_{i}/A_i=max(f_{i-1},\frac{Rate_j+B_i/A_i}{Rate_j*A_j+B_j}*f_{j})
fi/Ai=max(fi−1,Ratej∗Aj+BjRatej+Bi/Ai∗fj)
我们发现现在要支持的是给若干三元组
(
a
,
b
,
c
)
(a,b,c)
(a,b,c)每次给出
X
X
X,求
(
X
∗
a
+
b
)
∗
c
(X*a+b)*c
(X∗a+b)∗c最大值,并加入一个新的三元组
(
a
,
b
,
c
)
(a,b,c)
(a,b,c)
再化简:支持的是给若干二元组
(
a
,
b
)
(a,b)
(a,b)每次给出
X
X
X,求
X
∗
a
+
b
X*a+b
X∗a+b最大值,并加入一个新的二元组
(
a
,
b
)
(a,b)
(a,b)
使用李超线段树即可
总结
鸽了,原本想用cdq分治的