1 条题解

  • 0
    @ 2025-11-30 2:28:20

    疑惑为何针对这段代码C++效率比C高,等找到原因回来更新

    推测

    • 循环部分有激进优化空间
    • bool类型C++有底层优化

    前缀和优化


    AC代码

    #define max(a, b) (a > b ? a : b)
    #define min(a, b) (a < b ? a : b)
    bool w[2000000];
    int  p[2000000];
    int main() {
      init();
      int n,m,q;
      read(n);read(m);read(q);
      for (int i = 0; i < m; i++) {
        int k;read(k);
        for (int j = max(1, k - 7); j <= min(n, k + 7); j++) {
          w[j] = 1;
        }
      }
      for (int i = 1; i <= n; i++) {
        p[i] = p[i - 1] + w[i];
      }
      while (q--) {
        int l,r;read(l);read(r);
        write(p[r] - p[l-1]);
        push('\n');
      }
      return 0;
    }
    

    信息

    ID
    140
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    100
    已通过
    8
    上传者