前缀和,蓝桥 国赛2023 抓娃娃

一、题目

1、题目描述

2、输入输出

2.1输入
2.2输出

3、原题链接

0抓娃娃 - 蓝桥云课 (lanqiao.cn)


二、解题报告

1、思路分析

考虑每个线段如果被框住一半,那么其中点一定在区间内

所以我们前缀和前缀区间中点的数目

但是如果直接求中点(l + r) / 2会有精度问题,我们将[1, n] 映射到 [n + 1, n]就能避免精度问题

那么每次查询[L, R]内的中点数目就等价于查询[L * 2 - 1, R * 2]内的中点数目

2、复杂度

时间复杂度: O(n)空间复杂度:O(n)

3、代码详解

复制代码
cpp 复制代码
#include <bits/stdc++.h>
using i64 = long long;
const int N = 2e6 + 10;

void solve() {
    int n, m;
    std::cin >> n >> m;
    std::vector<int> pre(N);
    for (int i = 0, l, r; i < n; i ++ )
        std::cin >> l >> r, ++ pre[l + r];
    for (int i = 1, ed = pre.size(); i < ed; i ++ )
        pre[i] += pre[i - 1];
    for (int i = 0, l, r; i < m; i ++ ) {
        std::cin >> l >> r;
        std::cout << pre[r << 1] - pre[(l << 1) - 1] << '\n';
    }
}

int main () {
    std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);
    int _ = 1;
    // std::cin >> _;
    while (_ --)
        solve();
    return 0;
}
相关推荐
地平线开发者2 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮3 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者3 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考3 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx7 小时前
CART决策树基本原理
算法·机器学习
Wect7 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱8 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法
Gorway14 小时前
解析残差网络 (ResNet)
算法
拖拉斯旋风14 小时前
LeetCode 经典算法题解析:优先队列与广度优先搜索的巧妙应用
算法
Wect14 小时前
LeetCode 207. 课程表:两种解法(BFS+DFS)详细解析
前端·算法·typescript