题目大意
给出三个数
n0
(
n0
>0且为整数)、
p0
和
k
。
第一问:
满足
第二问:
满足
(
n1
和
n2
均为正整数)
输入格式
一行,三个数, n0 、 p0 和 k 。
输出格式
一行两个小数,中间用空格隔开,各保留三位小数。
样例输入
样例1
4 1 1
样例2
4 0 1
样例输出
样例1
2.000 3.000
样例2
4.000 5.000
数据范围
第一问
第一问,很简单。
对于一个值固定的
现在讲一下
O(1)
的算法。
数形结合。
化成一次函数图像大概是这个样子。
横轴是
n
,纵轴是
不难发现,棕色阴影部分的面积就等于(
n0−nk
-
p0
)*
n
。
所以现在问题变成了,选一个
易证,要使面积最大,
E
点肯定是选在线段
此时点
E′
即为线段
C
求
E′
点对应横坐标
n
即可,
第一个问就解决了。
第二问
第二问,在枚举
n1
的基础上,可以发现
n2
*(
n0−n2k
-
p
)的值呈一个单峰二次函数图像,可以用三分枚举最优的
接下来我们还是讲一下
O(1)
的算法。
依旧是数形结合。
依然是一个函数图像。
呵呵。
估计你会晕。
第二问的答案为(
n0−n1k
-
p0
)*
n1
+(
n0−n2k
-
p0
)*
n2
,也就是黄色的面积加上紫色的面积。
如何让面积和最大化呢?
一个的时候取线段
C
如图,点
E′
和点
E′′
为线段
C
这时我们只需找到对应的
n1
和
n2
,将
n1
和
n2
化成整数,就可以直接求出最佳答案了。