魯的智力 題解

_zqh發表於2024-10-06

題意

\(n\) 個人,\(m\) 個學科,你第 \(i\) 門學科排在第 \(a_i\) 名,且每個人在每個學科得到的分數是一個 \(0\)\(1\) 之間的一個實數,求你總分排名的最大、小值。

題解

先考慮排名最高的情況。

我們可以每一科都這樣構造:

\[b_1 = 1 \]

\[b_2 = 1 - \Delta x \]

\[b_3 = 1 - 2\Delta x \]

\[\dots \]

\[b_k = 1 - (k - 1)\Delta x \]

\[b_{k + 1} = 0 + (n - k)\Delta x \]

\[b_{k + 2} = 0 + (n - k - 1)\Delta x \]

\[\dots \]

\[b_n = 0 \]

其中 \(k\) 為你的排名、\(b_i\) 為第 \(i\) 名的分數、\(\Delta x\) 是一個極小值。

這樣可以使得有任意一科在你下面的都會被你超越,此時你排名最高。

最低同理。

namespace zqh {
int n, m;

void init() {
    cin >> n >> m;
    int x = 0, y = 0;
    for (int i = 1; i <= n; i++) {
        int s;
        cin >> s;
        x += s - 1;
        y += m - s;
    }
    cout << max(1LL, m - y) << "\n" << min(m, x + 1);
}

void solve() {}

void main() {
    init();
    solve();
}
}  // namespace zqh

相關文章