CSU月赛1974

本文详细介绍了使用C++中的set容器实现特定功能的方法,包括插入、查询和删除元素等关键操作。通过一个具体的示例程序,展示了如何利用set容器处理小数数据,并实现了根据条件判断元素是否存在于集合中的功能。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cstdlib>
#include<set> 
#define maxl 100010
#define eps 1e-6

using namespace std;

int n;
set <double> s;
set <double> :: iterator it,r;

void mainwork()
{
	int d;
	double x,y;
	for(int i=1;i<=n;i++)
	{
		scanf("%d%lf%lf",&d,&x,&y);
		if(d==1)
			s.insert(x);
		if(d==0)
		{
			if(s.empty())
				printf("No\n");
			else
			{
				it=s.end();--it;
				if(*s.begin()<=x && *(it)>=x)
					printf("Yes\n");
				else
					printf("No\n");
			}		
		}	
		if(d==-1)
		{
			s.erase(x);
			/*if(s.empty())
				continue;
			if(s.size()==1)
			{
				it=s.begin();
				if((*it)>x-eps && (*it)<x+eps);
					s.erase(it);
			}
			else
			{
				it=s.lower_bound(x);
				r=s.upper_bound(x);
				if(r==s.end())
					--r; 
				if(it!=s.begin())
					it--;
				for(;it!=r;it++)
				if((*it)>x-eps && (*it)<x+eps);
					s.erase(it);
			}*/
		}
	}
}

int main()
{
	while(~scanf("%d",&n))
	{
		s.clear();
		mainwork();
	} 
	return 0;
}

题目本身简单,然而,我们要知道一些问题。

小数输入用lf   ,小数输出用f

set是按顺序排的。set.end()是末尾的后面一个it=set.end(),   it- -;

set中不进行运算,是可以存double  x,之后直接erase(x)的




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值