题解:P9426 [蓝桥杯 2023 国 B] 抓娃娃

思路

1.其实题目保证了 max ⁡ r i − l i ≤ min ⁡ R i − L i \max{r_i − l_i} \le \min{R_i − L_i} maxriliminRiLi,那么如果占了一半的话,那么肯定包含了中点,做一个前缀和就好了。

2.因为涉及了小数,给每个数字都乘以 2 2 2 再继续操作。

代码(不能抄!!!):

#include <bits/stdc++.h>  // 引入几乎所有STL库
#define int long long  // 定义'int'关键字为长整型(64位),便于处理大整数
using namespace std;  // 使用标准命名空间,避免std::

int n, m, arr[2000010], a, b;  // 声明全局变量,n和m是输入的整数,arr是长达2000010的数组,a和b用来临时存储读入的值

signed main() {  // 主函数,使用'signed'关键词限定main返回的是带符号的整数
    ios::sync_with_stdio(false);// 关闭C++和C的输入输出同步,加快cin和cout的速度
  while(1){}
    cin >> n >> m;  // 读入两个整数n和m
    for (int i = 1; i <= n; i++) {  // 从1循环到n
        cin >> a >> b;  // 读入每对a和b的值
        arr[(a + b)]++;  // 对数组的a+b索引处的值加一,统计出现的次数
    }
    for (int i = 1; i < 2000010; i++) arr[i] += arr[i - 1];  // 对数组进行前缀和处理,每个元素的值都加上它之前所有元素的和
    for (int i = 1; i <= m; i++) {  // 从1循环到m
        cin >> a >> b;  // 读入每对a和b的值
        a *= 2, b *= 2;  // a和b都乘以2,这有可能是为了避免小数或其他算法上的原因
        cout << arr[b] - arr[a - 1] << endl;  // 输出区间[a, b]的累加和,等于arr[b]减去arr[a - 1]
    }
    return 0;  // 返回0,正常退出程序
}

相关推荐

  1. 题解P9426 [ 2023 B] 娃娃

    2024-04-22 14:04:03       65 阅读
  2. P8736 [ 2020 B] 游园安排

    2024-04-22 14:04:03       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 14:04:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 14:04:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 14:04:03       82 阅读
  4. Python语言-面向对象

    2024-04-22 14:04:03       91 阅读

热门阅读

  1. 读《零基础学PYthon》有感

    2024-04-22 14:04:03       150 阅读
  2. GitLab存储空间满了

    2024-04-22 14:04:03       32 阅读
  3. CV 面试指南—深度学习知识点总结(5)

    2024-04-22 14:04:03       35 阅读
  4. Gitlab相关,【推送项目】

    2024-04-22 14:04:03       38 阅读
  5. 11-3.Vue2.x基本列表—列表排序—sort

    2024-04-22 14:04:03       40 阅读
  6. spring注解整理

    2024-04-22 14:04:03       31 阅读
  7. Qt 实战(1)Qt 概述

    2024-04-22 14:04:03       192 阅读
  8. Qt——选中所有的RadioButton

    2024-04-22 14:04:03       76 阅读