首页 / 客观题库

80523 - CSP-S2022完善程序1

基础算法

题目(材料题)

(归并第 k 小) 已知两个长度均为 n 的有序数组 a1 和 a2(均为递增序,但不保证严 格单调递增),并且给定正整数 k(1≤k≤2n),求数组 a1 和 a2 归并排序后的数组里 第 k 小的数值。

 

#include <bits/stdc++.h>
using namespace std;

int solve(int* a1, int* a2, int n, int k) {
    int left1 = 0, right1 = n - 1;
    int left2 = 0, right2 = n - 1;
    while (left1 <= right1 && left2 <= right2) {
        int m1 = (left1 + right1) >> 1;
        int m2 = (left2 + right2) >> 1;
        int cnt = ①;
        if (②) {
            if (cnt < k) left1 = m1 + 1;
            else right2 = m2 - 1;
        }
        else {
            if (cnt < k) left2 = m2 + 1;
            else right1 = m1 - 1;
        }
    }
    if (③) {
        if (left1 == 0) {
            return a2[k - 1];
        }
        else {
            int x = a1[left1 - 1], ④;
            return std::max(x, y);
        }
    }
    else {
        if (left2 == 0) {
            return a1[k - 1];
        }
        else {
            int x = a2[left2 - 1], ⑤;
            return std::max(x, y);
        }
    }
}

试补全程序。

||
( 单选 )

A (m1 + m2) * 2

B (m1 - 1) + (m2 - 1)

C m1 + m2

D (m1 + 1) + (m2 + 1)

( 单选 )

A a1[m1] == a2[m2]

B a1[m1] <= a2[m2]

C a1[m1] >= a2[m2]

D a1[m1] != a2[m2]

( 单选 )

A left1 == right1

B left1 < right1

C left1 > right1

D left1 != right1

( 单选 )

A y = a1[k - left2 - 1]

B y = a1[k - left2]

C y = a2[k - left1 - 1]

D y = a2[k - left1]

( 单选 )

A y = a1[k - left2 - 1]

B y = a1[k - left2]

C y = a2[k - left1 - 1]

D y = a2[k - left1]

意见反馈

    最多上传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