前缀和,蓝桥 国赛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;
}
相关推荐
Liu628886 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
AI科技星6 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘
条tiao条7 小时前
KMP 算法详解:告别暴力匹配,让字符串匹配 “永不回头”
开发语言·算法
干啥啥不行,秃头第一名7 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
zzh940777 小时前
Gemini 3.1 Pro 硬核推理优化剖析:思维织锦、动态计算与国内实测
算法
2301_807367198 小时前
C++中的解释器模式变体
开发语言·c++·算法
愣头不青8 小时前
617.合并二叉树
java·算法
MIUMIUKK9 小时前
双指针三大例题
算法
灵感__idea9 小时前
Hello 算法:复杂问题的应对策略
前端·javascript·算法
2301_8194143010 小时前
C++与区块链智能合约
开发语言·c++·算法