首页 / 客观题库

80141 - 2026挑战赛提高组41·45

题目(材料题)

分配人员  把n个人分配到3个部分,其中第i个人对第j个部门的满意度为$a_{i,j}$。最终每个部门的人数均不得超过$\frac{n}{2}$ 。求这n个人最大总满意度。

试使用贪心算法补全程序:

 

#include<bits/stdc++.h>

using namespace std;

struct sat {

    int index;

    int val;

};

bool cmp(sat g1, sat g2) {

    return     ①    ;

}

int main()

{

    int n, sum = 0;

    int dep[4][100001];

    int cnt[4];

    sat dl[4];

    cin >> n;

        ②    ;

    for (int i = 1; i <= n; i++) {

       for (int j = 1; j <= 3; j++) {

           cin >> dl[j].val;

           dl[j].index =     ③    ;

       }

       sort(dl + 1, dl + 4, cmp);

       cnt[dl[3].index]++;

       sum += dl[3].val;

       dep[dl[3].index][cnt[dl[3].index]] =     ④    ;

    }

    for (int j = 1; j <= 3; j++)

       if (cnt[j] > n / 2) {

           sort(dep[j] + 1, dep[j] + cnt[j] + 1);

           for (    ⑤    ) sum -= dep[j][i];

       }

    cout << sum;

    return 0;

}
||
( 单选 )

① 处应填

A g1.index < g2.index

B g1.index > g2.index

C g1.val < g2.val

D g1.val > g2.val

( 单选 )

② 处应填

A memset(dep, 0, sizeof dep)

B memset(cnt, 0, sizeof cnt)

C memset(dl, 0, sizeof dl)

D memset(dep[0], 0, sizeof dep[0])

( 单选 )

③ 处应填

A i

B j

C n

D sum

( 单选 )

④ 处应填

A dl[2].val

B dl[1].val

C dl[3].val - dl[2].val

D dl[3].val - dl[1].val

( 单选 )

⑤ 处应填

A int i = 1; i <= n / 2; i++

B int i = 1; i <= cnt[j] - n / 2; i++

C int i = cnt[j]; i > n / 2; i--

D int i = 1; i > cnt[j] - n / 2; i--

意见反馈

    最多上传3张图片,格式为JPG、PNG、JPEG,单张不超过5MB

    注册

    发送验证码

    密码必须包含数字、字母和特殊字符

    找回密码

    发送验证码

    密码必须包含数字、字母和特殊字符

    运行 ID:67149

    • 测试点1:Accepted
    • 用时:0 ms
    • 内存:288 kb
    • 测试点2:Accepted
    • 用时:0 ms
    • 内存:288 kb
    输入
    203
    输出
    203

    test

    测评信息

    错误.in文件下载

    错误.out文件下载

    运行 ID:67149

    2019-01-24 15:06:36