找到 375 道单选题
EXY-SC-0295
第 81 题

给定 n 根木头,第 i 根长度为 a[i]。要切成不少于 m 段等长木段,求最大可能长度,则横线上应填写( )。

const int MAXN = 100005;
long long a[MAXN]
int n, m;

bool check(long long x){
    long long cnt = 0;
    for(int i = 1; i <= n; i++){
        if(x == 0) return true;
        cnt += a[i] / x;
        if(cnt >= m) return true;
    }
    return false;
}

int main(){
    cin >> n >> m;
    long long mx = 0;
    for(int i = 1; i <= n; i++){
        cin >> a[i];
        mx = max(mx, a[i]);
    }

    long long l = 1, r = mx;
    long long ans = 0;

    while(l <= r){
        long long mid = l + (r - l) / 2;

        if(check(mid)){
            ans = mid;
            ______________________
        }else{
            ______________________
        }
    }

    cout << ans << endl;
    return 0;
}
A
l = mid + 1;
r = mid - 1;
B
l = mid - 1;
r = mid + 1;
C
l = mid + 1;
r = mid;
D
l = mid;
r = mid + 1;
语言: C++
GESP真题 五级
2026.3
单选题号: 10
EXY-SC-0294
第 82 题

关于递归函数调用,下列说法错误的是( )。

A

递归调用层次过深时,可能会耗尽栈空间导致栈溢出

B

尾递归函数可以通过编译器优化来避免栈溢出

C

所有递归函数都可以通过循环结构来改写,从而避免栈溢出

D

栈溢出发生时,程序会抛出异常并可以继续执行后续代码

语言: C++
GESP真题 五级
2026.3
单选题号: 9
EXY-SC-0293
第 83 题

在升序数组中查找第一个大于等于 x 的位置,下面循环中横线应填( )。

int lowerBound(const vector<int>& a, int x){
    int l = 0, r = a.size();
    while(l < r){
        int mid = l + (r - l) / 2;
        if(a[mid] >= x) ________
        else l = mid + 1;
    }
    return l;
}
A

r = mid

B

r = mid - 1

C

l = mid

D

l = mid + 1

语言: C++
GESP真题 五级
2026.3
单选题号: 8
EXY-SC-0292
第 84 题

下面程序的运行结果为( )。

bool check(int n, int a[], int k, int dist) {
    int cnt = 1;
    int last = a[0];

    for (int i = 1; i < n; i++) {
        if (a[i] - last >= dist) {
            cnt++;
            last = a[i];
        }
    }

    return cnt >= k;
}

int solve(int n, int a[], int k) {
    std::sort(a, a + n);

    int l = 0;
    int r = a[n - 1] - a[0];

    while (l < r) {
        int mid = (l + r + 1) / 2;

        if (check(n, a, k, mid))
            l = mid;
        else
            r = mid - 1;
    }

    return l;
}
int main() {
    int a[] = {1, 2, 8, 4, 9};
    int n = 5;
    int k = 3;

    std::cout << solve(n, a, k) << std::endl;

    return 0;
}
A

2

B

3

C

4

D

5

语言: C++
GESP真题 五级
2026.3
单选题号: 7
EXY-SC-0291
第 85 题

埃氏筛中将内层循环从 j=i∗i 开始而不是 j=2∗i 的主要原因是( )。

vector<int> eratosthenes_sieve(int n) {
    vector<bool> is_composite(n + 1, false);
    vector<int> primes;

    for (int i = 2; i <= n; i++) {
        if (is_composite[i]) continue;

        primes.push_back(i);

        for (long long j = (long long)i * i; j <= n; j += i)
            is_composite[j] = true;
    }
    return primes;
}
A

因为 2∗i 一定不是合数

B

i∗i 一定是质数

C

小于 i∗i 的 i 的倍数已被更小质因子筛过

D

这样可以把时间复杂度降为 $O(n)$

语言: C++
GESP真题 五级
2026.3
单选题号: 6
当前页显示 81 - 85 ,共 375 道单选题