记录编号 612506 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 收益 最终得分 100
用户昵称 Gravatarhsl_beat 是否通过 通过
代码语言 C++ 运行时间 4.608 s
提交时间 2026-02-13 12:37:47 内存使用 63.63 MiB
显示代码纯文本
// 茹逸可爱喵
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
    freopen("x.in", "r", stdin);
    freopen("x.out", "w", stdout);
    int n, k, seed;
    cin >> n >> k >> seed;
    vector<int> a(n + 1), fa(n + 1);
    a[1] = seed;
    for (int i = 2; i <= n; i++) {
        a[i] = (a[i - 1] * 23333333 + 6666666) % 1000000007;
        fa[i] = (a[i] ^ 23333333) % (i - 1) + 1;
    }
    vector<int> len = a, v; 
    for (int i = n; i >= 2; i--) {
        if (len[i] > len[fa[i]] - a[fa[i]]) {
            if (len[fa[i]] - a[fa[i]]) {
                v.push_back(len[fa[i]] - a[fa[i]]);
            }
            len[fa[i]] = a[fa[i]] + len[i];
        } else {
            v.push_back(len[i]);
        }
    }
    v.push_back(len[1]);
    sort(v.rbegin(), v.rend());
    int ans = 0, cnt = 0;
    for (int i = 0; i < v.size(); i++) {
        if (cnt >= k) {
            break;
        }
        ans += v[i];
        cnt++;
    }
    cout << ans;
    return 0;
}