A. CSP-J 完善程序 1:批次记录器(选择题版)

    客观题

CSP-J 完善程序 1:批次记录器(选择题版)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目类型

CSP-J 初赛风格完善程序题。本题所有空均已改为单项选择,不需要手动输入代码。每空只有一个正确选项。

程序说明

输入 nk 和一个长度为 n 的正整数序列。程序会按照原有顺序把序列处理成若干连续批次,并输出一个整数。这个整数的实际意义没有直接给出,需要结合 check 函数与二分过程自行推断。

数据保证 1 <= k <= n <= 1000001 <= a[i] <= 10^9

程序

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

const int N = 100005;
int n, k;
long long a[N];

bool check(long long x) {
    int cnt = 1;
    long long sum = 0;

    for (int i = 1; i <= n; i++) {
        if (/* 空 3 */) {
            cnt++;
            sum = a[i];
        } else {
            sum += a[i];
        }
    }

    return /* 空 4 */;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> n >> k;

    long long L = 0, R = 0;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        /* 空 1 */;
        /* 空 2 */;
    }

    while (L < R) {
        long long mid = L + (R - L) / 2;
        if (check(mid))
            R = mid;
        else
            /* 空 5 */;
    }

    cout << L << '\n';
    return 0;
}

选择区

空 1(20 分)

为了使 L 成为一定成立的搜索下界,空 1 应填( )。

{{ select(1) }}

  • A. L = max(L, a[i])
  • B. L = min(L, a[i])
  • C. L += a[i]
  • D. L = max(L, (long long)i)

空 2(20 分)

为了使 R 成为一定可行的搜索上界,空 2 应填( )。

{{ select(2) }}

  • A. R = max(R, a[i])
  • B. R = min(R, a[i])
  • C. R = a[i]
  • D. R += a[i]

空 3(20 分)

当继续加入 a[i] 会使当前批次超过阈值 x 时,程序需要新开一个批次。空 3 应填( )。

{{ select(3) }}

  • A. sum + a[i] >= x
  • B. sum + a[i] > x
  • C. sum > x
  • D. a[i] > sum

空 4(20 分)

check(x) 应在阈值 x 可行时返回真。空 4 应填( )。

{{ select(4) }}

  • A. cnt == k
  • B. cnt >= k
  • C. cnt <= k
  • D. cnt < k

空 5(20 分)

check(mid) 为假时,空 5 应填( )。

{{ select(5) }}

  • A. L = mid + 1
  • B. L = mid
  • C. R = mid - 1
  • D. R = mid + 1

CSPJ-8.18任务

未参加
状态
已结束
规则
乐多
题目
6
开始于
2026-8-18 0:00
结束于
2026-8-19 0:00
持续时间
24 小时
主持人
参赛人数
1