『FLA - III』Spectral

· · 题解

模拟、数学

测试点 1 \sim 2

容易得到在 n=1 时答案为 k,在 n=2 时答案为 1.5k

测试点 3 \sim 4

暴力计算 T_1 \sim T_n 后取最大值。

测试点 5

i 0 1 2 3 4 5 \cdots
T_i 0 k 1.5k 1.5k 1.375k 1.275k \cdots

序列 T 的最大值是 T_2T_3,读者可以自行查看题解结尾处的证明。

n=1 时答案为 k,否则答案为 1.5k

单组数据时间复杂度 O(1)

#include<bits/stdc++.h>
using namespace std;
int T,n,k;
int main(){
    scanf("%d",&T);
    while(T--){
        scanf("%d%d",&n,&k);
        if(n==1) printf("%d.0\n",k);
        else if(k%2==0) printf("%d.0\n",k+k/2);
        else printf("%d.5\n",k+k/2);
    }
    return 0;
}

证明:若 T_i > T_{i+1},由于 T_{i+1}=k+ \dfrac{T_i}{i+1}T_{i+2}=k+ \dfrac{T_{i+1}}{i+2},那么 T_{i+2}-T_{i+1}=\dfrac{T_{i+1}}{i+2}- \dfrac{T_i}{i+1}<0,因为 \dfrac{T_{i+1}}{i+2} 的分母更大,分子更小。

因为 T_{i+2}-T_{i+1}<0,所以 T_{i+1}>T_{i+2},又因为 T_{i+1}>T_{i+2} 所以 T_{i+2}>T_{i+3}。以此类推,只要存在 T_i > T_{i+1},那么对于所有大于 i 的整数 j 都有 T_i > T_j,又因为 T_3 > T_4,所以序列 T 的最大值只可能在 T_1,T_2,T_3 中取到,可知序列 T 的最大值为 T_2=T_3=1.5k