luogu P2161 [SHOI2009]会场预约

原创 2018年04月17日 11:35:44

题目传送门:https://www.luogu.org/problemnew/show/P2161



题意:

有n个操作。

A操作有两个数x、y,询问x~y时间中与先前预约冲突的预约的个数,并拒绝这些预约;

B操作询问当前有效的预约个数。



思路:

然而不会(太弱~~~)。

怒翻题解:二分+set。

对于A操作:我们从0时间~x时间去二分寻找与当前预约冲突的预约,将其删除,记录一下即可。

对于B操作:直接输出当前set里的个数。

注意:要先按照右端点排序再按照左端点排序(降序),不然没法二分啊。



代码:

#include<cstdio>
#include<set>
#include<algorithm>
using namespace std;
struct node
{
	int x,y;
	node(int a=0,int b=0)
	{
		x=a,y=b;
	}
	friend bool operator <(node a,node b)
	{
		return a.y==b.y?a.x<b.x:a.y<b.y;
	}
};
set<node> a;
#define address set<node>::iterator
	int n;
int main()
{
	char s[5];
	int x,y;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%s",s+1);
		if(s[1]=='A')
		{
			int x,y,tot=0;
			scanf("%d %d",&x,&y);
			while(1)
			{
				address t=a.lower_bound(node(0,x));
				if(t->x<=y&&t!=a.end()) a.erase(t),tot++; else break;
			}
			a.insert(node(x,y));
			printf("%d\n",tot);
		}
		else printf("%d\n",a.size());
	}
}


P2161 [SHOI2009]Booking 会场预约

//P2161 [SHOI2009]Booking 会场预约 //https://www.luogu.org/record/lists?pid=P2161内存,时间效率极高的算法 Splay 伸展树...
  • mrcrack
  • mrcrack
  • 2017-07-23 09:55:17
  • 217

洛谷2161[Shoi2009]Booking 会场预约(set)

题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地。这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突。也就是说,前一...
  • kaqiur
  • kaqiur
  • 2015-10-02 20:48:03
  • 549

[BZOJ2028][SHOI2009]会场预约(Splay)

考虑以日期为关键字,把预约用Splay进行维护。 先考虑加入新的预约。设新的预约是从ll日到rr日。 很显然,一个从l0l_0日到r0r_0日的预约与这个新的预约不冲突的充分必要条件为:r0r。 ...
  • xyz32768
  • xyz32768
  • 2017-09-10 20:42:24
  • 137

洛谷P2161 [SHOI2009]Booking 会场预约

题目描述PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地。这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突。也就是说,前一个会...
  • LOI__DiJiang
  • LOI__DiJiang
  • 2016-10-30 20:01:08
  • 410

洛谷P2161 [SHOI2009]Booking 会场预约_Splay

题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地。这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突。也就是说,前一...
  • yangrui2002
  • yangrui2002
  • 2017-12-10 21:29:23
  • 83

bzoj2028 [SHOI2009]会场预约(set)

STL就是好之set 用set直接水过。。每次看看离自己最近的那个区间有没有重叠。。有就删了它。。注意一下iterator在有erase,insert的情况下不要乱++,–,乖乖循环。。还有< 的重...
  • Icefox_zhx
  • Icefox_zhx
  • 2017-08-11 20:38:50
  • 144

BZOJ 2028|SHOI 2009|会场预约|平衡树

【问题描述】A 大厦有一间空的礼堂,可以为企业或单位提供会议场所。这些会议中的大多 数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议 的时间申请不能冲突。也就是说,...
  • huanghongxun
  • huanghongxun
  • 2016-04-23 08:39:41
  • 574

【洛谷 2161】 [Shoi2009]Booking 会场预约

洛谷真良心 这是BZOJ的权限题..... 明明树状数组很好做 我偏偏用线段树 明明在线很好做 我偏偏离线 . . . . 简直作死 又调试了一下午 !! 线段树 最小值 区间标记时注意下!!! 宁可...
  • sxb_201
  • sxb_201
  • 2016-03-10 19:01:50
  • 143

[SHOI2009] 会场预约

luogu2161 省选 / NOI-题面: 设计一个数据结构,支持两种操作: 1. A i j 添加一个新的预约[i, j],并删除所有与其冲突的预约。返回此次操作删除的预约的个数。 2....
  • tata_d2
  • tata_d2
  • 2017-10-30 07:45:55
  • 69

[SHOI2009]Booking 会场预约 【Treap】

[SHOI2009]Booking 会场预约 写题半小时,调试一万年系列 Treap里面包含各种神奇的成分,然后在找重合区间的时候顺便删掉,要不会TLE 代码 #include #includ...
  • zerollt
  • zerollt
  • 2018-01-26 21:30:58
  • 33
收藏助手
不良信息举报
您举报文章:luogu P2161 [SHOI2009]会场预约
举报原因:
原因补充:

(最多只允许输入30个字)