11 条题解

  • -3
    @ 2024-7-15 7:44:57

    P10781 【MX-J1-T1】『FLA - III』Spectral 题解

    大致思路:

    这道题目最直接的方法就是暴力找最大值,显然会超时,接着就是进行打表,我们会发现,这道题的函数,是一个单峰函数,只会在一开始持续上升,在一定的位置持续下降,所以我们只需要找到那个转折点,直接退出即可。

    代码实现:

    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    const int MOD = 1e9 + 7;
    const int N = 5e5 + 10;
    inline int read()
    {
        int x = 0, f = 1; char ch = getchar();
        while (!isdigit(ch)) { if (ch == '-') f = -1; ch = getchar(); }
        while (isdigit(ch)) { x = x * 10 + ch - '0'; ch = getchar(); }
        return x * f;
    }
    int T;
    signed main() {
    	T = read();
        while (T--) {
            double k, res = 0;
            int n;
            n = read();
            cin >> k;
            if(n == 1) cout << fixed << setprecision(1) << k << "\n";
            else{
    			for (int i = 1;i <= n; ++ i)
    			{
    				if(k + res / i < res) break;
    				else res = k + res / i;
    			}
    			cout << fixed << setprecision(1) << res << "\n";
            }
        }
        return 0;
    }
    

    这样这道题目就完成啦!!!

    信息

    ID
    13
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    1259
    已通过
    336
    上传者