bzoj 2028 [SHOI2009]会场预约 set

题面

题目传送门

解法

简单的STL应用

  • 考虑一下前面的线段 [l,r] [ l , r ] 会在什么时候与当前线段 [l,r] [ l ′ , r ′ ] 冲突,显然,只要满足 rl,lr r ′ ≥ l , l ′ ≤ r 的条件就可以说明这两条线段有交
  • 所以,我们可以开一个set来维护前面的若干条线段,每一次加入一条线段的时候先找到右端点大于 l l 的线段,然后一个一个扫过去,能删就删
  • 看起来这个程序挺暴力的,似乎是O(q2logq)??
  • 但是并非如此,因为每一条线段最多只会在set里出现一次,被删掉一次,所以均摊下来删除的复杂度是 O(logq) O ( log ⁡ q )
  • 时间复杂度: O(qlogq) O ( q log ⁡ q )
  • 当然,本题也可以使用线段树,平衡树之类的,但是码量较大不太建议

代码

#include <bits/stdc++.h>
using namespace std;
template <typename node> void chkmax(node &x, node y) {x = max(x, y);}
template <typename node> void chkmin(node &x, node y) {x = min(x, y);}
template <typename node> void read(node &x) {
    x = 0; int f = 1; char c = getchar();
    while (!isdigit(c)) {if (c == '-') f = -1; c = getchar();}
    while (isdigit(c)) x = x * 10 + c - '0', c = getchar(); x *= f;
}
struct Node {
    int l, r;
    bool operator < (const Node &a) const {
        if (r == a.r) return l < a.l;
        return r < a.r;
    }
};
int main() {
    int q; read(q);
    set <Node> s;
    while (q--) {
        char key = getchar();
        while (!isalpha(key)) key = getchar();
        if (key == 'A') {
            int l, r, ans = 0; read(l), read(r);
            while (1) {
                set <Node> :: iterator it = s.lower_bound((Node) {0, l});
                if (it != s.end() && it->l <= r) s.erase(it), ans++;
                    else break;
            }
            s.insert((Node) {l, r}); cout << ans << "\n";
        } else cout << s.size() <<"\n";
    }
    return 0;
}
MRBS 会议室预定管理系统简介 MRBS是一个基于PHP/MySQL/PostgreSQL开发的,使用浏览器访问的会议室预订管理系统。使用区域对会议室进行分组管理。 MRBS 会议室预定管理系统特点: •网络/内联网 - 可透过浏览器的任何工作站 •简单跟随,基于Web的选项和直观演示 •灵活的重复预订 •身份验证与您现有的用户数据库(如Netware的,NT域,NIS等) •确保冲突的项目不能进入 •报告选项 •可选的日/周/月视图 •多种身份验证级别(只读,用户,管理员) •支持按预订时间或时段 - 非常适合在学校使用 •房间管理员可以预订的通过电子邮件通知 •支持多国语言(翻译为加泰罗尼亚语,捷克语,中国,丹麦语,荷兰语,芬兰语,法语,德语,希腊语,意大利语,日语,韩语,挪威语,葡萄牙语,斯洛文尼亚语,西班牙语,瑞典语,土耳其语) •稳定和使用中的许多组织 •MySQL和Postgres的支持 演示的登录名密码都是admin MRBS更新日志: 修正了邮件调试输出 修复了升级17使用PostgreSQL时(日期时间数据类型) 新增产量的冲洗期间大型数据库的升级长期提供一些反馈 PostgreSQL中固定的问题升级25(日期时间数据类型) 修正各种问题与升级24[e4674a64d965] 要警惕的措辞小的改动,以支付超出1.4.6升级 增加了一个命名空间语句来避免冲突升级与24 在提交修正错字 MRBS 会议室预定管理系统页面展示  相关阅读 同类推荐:站长常用源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值