首页 > 其他分享 >P2161 [SHOI2009] 会场预约

P2161 [SHOI2009] 会场预约

时间:2024-04-17 21:33:05浏览次数:19  
标签:end 端点 预约 P2161 int SHOI2009 区间

原题链接

题解

找出右端点大于等于当前区间的左端点左端点小于等于当前区间的右端点的所有区间,由于查询前这样的区间具有单调性,所以可以用二分,但是怎么快速删除呢?
欸stl大法来了,用set存储区间,查找和删除和添加都是 \(logn\) 级的

code

#include<bits/stdc++.h>
using namespace std;

struct plan
{
    int l,r;
    bool operator<(const plan &b)const
    {
        if(b.r!=r) return r<b.r;
        //按右端点排序,为什么?我们用Lower bound是为了找出第一个大于等于当前区间的区间,按右端点排序后,一直到第一个it.l大于r之前的区间都是冲突区间,这样每个区间只会判断一次
        else return l<b.l;//这样使得右端点与当前区间左端点重合的区间一定小于查询区间,见下文
    }
};
set<plan> q;
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        char op;
        cin>>op;
        if(op=='A')
        {
            int l,r;
            cin>>l>>r;
            auto it=q.lower_bound({0,l});//太核心了这里,查找第一个右端点大于等于当前区间左端点的区间
            int sum=0;
            if(it!=q.end())
            {
                while(it!=q.end()&&it->l<=r)//set里原本存着的区间一定不重合
                {
                    q.erase(it);
                    sum++;
                    it=q.lower_bound({0,l});
                }
            }
            q.insert({l,r});
            cout<<sum<<endl;
        }
        else cout<<q.size()<<endl;
    }
    return 0;
}

标签:end,端点,预约,P2161,int,SHOI2009,区间
From: https://www.cnblogs.com/pure4knowledge/p/18141821

相关文章

  • 毕业设计3020微信小程序-图书馆图书借阅预览预约管理软件【源代码+文档+调试+讲解视频
    摘要本文详细介绍了基于服务器与客户端模式的图书馆图书借阅预览预约管理软件的设计与实现过程。服务器端具备学生管理、图书管理、自习室管理、自习室预约管理、图书借阅管理以及系统管理等功能,而客户端则为用户提供注册登录、首页浏览、图书借阅、自习室预约以及个人信息......
  • 智慧外贸系统的设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行源码+数据库+LW)买
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读300套最新项目持续更新中.....最新ssm+java项目文档+视频演示+可运行源码分享最新jsp+java项目文档+视频演示+可运行源码分享最新SpringBoot项目文档+视频演示+可运行源码分享2024年56套包含java,ssm......
  • 倒计时1天 | 袋鼠云春季发布会完整议程出炉!快快预约直播
    在日新月异的数字化经济时代,企业和组织不断寻求利用先进技术构建自身的核心竞争力。其中,大数据与AI的深度融合正在成为推动企业实现新质生产力的关键路径。在此背景下,袋鼠云举办春季发布会,以“Data+AI,构建新质生产力”为主题,旨在深度探讨如何将数据与AI紧密结合,以期打破传统的生......
  • 校园台球厅人员与设备管理系统的设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读300套最新项目持续更新中.....最新ssm+java项目文档+视频演示+可运行源码分享最新jsp+java项目文档+视频演示+可运行源码分享最新SpringBoot项目文档+视频演示+可运行源码分享2024年56套包含java,ssm......
  • 基于SpringBoot+微信小程序的智慧医疗线上预约小程序
    一、项目背景介绍:近年来,随着互联网技术的不断发展,人们的生活和工作方式也在逐渐改变。其中,医疗行业也受到了极大的影响。由于传统医疗行业存在着很多问题,例如就医难、看病贵等,因此出现了许多新型医疗模式。线上预约挂号是其中一种新型医疗模式,它通过互联网技术与现代医学......
  • 使用微信小程序开发制作一个简易的在线预约应用
    微信小程序在线预约应用的开发可以分为以下几个步骤:项目初始化首先,我们需要在微信开发者工具中创建一个新的小程序项目。在创建项目时,可以选择使用小程序官方提供的模板,也可以选择自己从零开始开发。创建完成后,可以在项目目录下看到一些默认的文件和目录,如app.json、app.js......
  • Springboot计算机毕业设计博物馆预约小程序【附源码】开题+论文+mysql+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在信息化、数字化日益发展的今天,博物馆作为传承历史文化的重要场所,其管理和服务方式也在不断革新。传统的博物馆参观方式往往受限于开放时间、参观人......
  • 【包远程安装运行】:SpringBoot+Mysql健身房在线预约管理系统源码+运行视频+开发文档(参
    今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的健身房在线预约管理系统,系统分四个角色,管理员,职工、教练、前台用户,各角色功能如下:管理员:系统管理(角色、权限、菜单等)、职工管理、健身会员管理、会员充值管理、健身项目管理、健身百科管理、健身......
  • 高校听课讲座预约座位系统uniapp+vue微信小程序
    讲座预约管理系统的用户是系统最根本使用者,按需要分析系统包括用户:学生、管理员。管理员通过后台的登录页面,选择管理员权限后进行登录,管理员的权限包括学生信息管理和文章公告管理。讲座公告管理,添加讲座公告信息,给学生发布一些学校的公告内容,为学习提前做准备,管理员管理后点......
  • 最新同城上门家政按摩H5小程序源码/上门预约系统搭建
    2024最新同城上门家政按摩H5小程序源码|上门预约系统后端thinkphp框架开发。前端采用uni-app开发,适配多端(小程序+公众号H5+APP)程序开发:PHP+MySQL程序演示:http://jz1.yetukeji.top,账户13112215717,密码qq2607788043程序开源:代码全部开源,支持任意二开功能介绍:1、数据概况(新......