#12218. 珅泽教育CSP-J第一轮模拟考第二十三套 第 33 题

珅泽教育CSP-J第一轮模拟考第二十三套 第 33 题

三、完善程序(共 10 题,每题 3 分,共 30 分)

完善程序(1):区间和

给定长度为 nn 的正数数列 aa,第 ii 个数为 aia_i。有 QQ 次询问,每次给定 ll,求最小的 rr,满足 al+al+1+cdots+ara_l+a_{l+1}+cdots+a_r 不小于 kk。保证有解。试补全倍增法程序。

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

const int MAXN = 200000 + 7;
int n, k, Q, l, a[MAXN], s[MAXN];

int main() {
    cin >> n >> k;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        s[i] = ①;
    }
    cin >> Q;
    int limit = ②;
    while (Q--) {
        cin >> l;
        int r = l;
        for (③) {
            int dist = ④;
            if (r + dist > n)
                continue;
            if (⑤)
                r += dist;
        }
        cout << r + 1 << endl;
    }
    return 0;
}
  1. ①处应填( )。

{{ select(1) }}

  • a[i]
  • s[i - 1]
  • s[i] + a[i]
  • s[i - 1] + a[i]