AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

AcWing 3263. 买菜    原题链接    简单

作者: 作者的头像   lxq1 ,  2025-05-09 20:30:17 · 北京 ,  所有人可见 ,  阅读 2


0


一个奇怪但是简单的做法

思路就是强行用数组表示数轴。
比如数组下标本来是i = 0、1、2、3…
现在用i=0表示数轴上的x=1点(因为本题时间从1开始),用i=2表示数轴上的x=2点,而i=1就自然表示0-1这一个区间。
这个题本质上就是看二者时间区间重合的数量(整数设定),所以最后只需要匹配i=奇数的位置。


代码

#include<iostream>
using namespace std;

const int M = 2e6 + 10;
int H[M];

int main(){
    int n;
    cin >> n;
    int time = 0;
    for(int i=0; i<n; i++){
        int a, b;
        cin >> a >> b;
        for(int j=2*a-1; j<=2*b-3; j += 2) H[j] = 1;
    }
    for(int i=0; i<n; i++){
        int c, d;
        cin >> c >> d;
        for(int j=2*c-1; j<=2*d-3; j += 2){
            if(H[j] == 1) time++;
        }
    }
    cout << time << endl;
    return 0;
}

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息