前缀和,蓝桥 国赛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;
}
相关推荐
木子.李34714 分钟前
排序算法总结(C++)
c++·算法·排序算法
闪电麦坤951 小时前
数据结构:递归的种类(Types of Recursion)
数据结构·算法
Gyoku Mint2 小时前
机器学习×第二卷:概念下篇——她不再只是模仿,而是开始决定怎么靠近你
人工智能·python·算法·机器学习·pandas·ai编程·matplotlib
纪元A梦2 小时前
分布式拜占庭容错算法——PBFT算法深度解析
java·分布式·算法
px不是xp3 小时前
山东大学算法设计与分析复习笔记
笔记·算法·贪心算法·动态规划·图搜索算法
枫景Maple3 小时前
LeetCode 2297. 跳跃游戏 VIII(中等)
算法·leetcode
鑫鑫向栄3 小时前
[蓝桥杯]修改数组
数据结构·c++·算法·蓝桥杯·动态规划
鑫鑫向栄3 小时前
[蓝桥杯]带分数
数据结构·c++·算法·职场和发展·蓝桥杯
小wanga4 小时前
【递归、搜索与回溯】专题三 穷举vs暴搜vs回溯vs剪枝
c++·算法·机器学习·剪枝