欧酷网

您的位置:主页>其它>

P1109 学生分组 贪心+概率论

题目


想了半天也没想出来,看了题解是记录调入小组的最小总人数和调出小组的最小总人数,取二者的最大值。
这道题真是触及了我的知识盲区,正解的思路和我的思路完全不在一个维度。

#include <iostream>#include <cstdio>#include <cmath>#include <iomanip>#include <queue>#include <map>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;int N;int stu_num[51];int L, R;int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    cin >> N;
    int total = 0;
    for (int i = 0; i < N; i++) {
        cin >> stu_num[i];
        total += stu_num[i];
    }
    cin >> L >> R;
    int in = 0, out = 0;
    for (int i = 0; i < N; i++) {
        if (stu_num[i] < L) {
            in += L - stu_num[i]; 
        }
        else if (stu_num[i] > R) {
            out += stu_num[i] - R;
        }
    }
    int ans = max(in, out);
    if (total < L * N || total > R * N) {
        cout << -1 << endl;
    }
    else {
        cout << ans << endl;
    }
    return 0; }

相关文章推荐