题目链接:

E. Anonymity Is Important

题意

给出n个人和q次操作。

0 l r x

1 x

当操作类型为0的时候,x=1表示[l,r]内至少有一个病人,x=0表示[l,r]内没有病人

当询问类型为1的时候,给出当前人x有病/无病/不确定的判断。

思路

一开始将1-n插入set中,当某区间内病人个数为0时,从set中将这段区间内的编号都删除。

(二分查找s中第一个大于等于l的值,然后顺序删除直至值大于r)

用map保存至少有一个病人的区间,mp[l]=r表明[l,r]内至少有一个病人。

对每次要新插入的[l,r],如果map中之前已经存在[l',r'],而[l,r]包含[l',r'],则[l,r]为无效信息,因为[l',r']内至少有一个病人了,[l,r]除[l',r']的部分依旧不能确定有没有病人,这个信息等价于没有。

同样地,如果而[l',r']包含[l,r],则要删除map中所有的[l',r']区间。

对于查询,若x不在set中说明x肯定没有病,否则的话,在set中找到x的位置,并得到其前一个和后一个不能确定是否有病的人的编号记为lp和rp,在map中查询第一个左端点大于lp的区间(不会说有某个区间[l,r]满足l>lp并且r<rp,因为set中这段区间里的人都被删掉了,不可能说这段区间至少有一个病人,否则矛盾,所以r是一定大于x的),如果x在这个区间内而rp不在这个区间内,说明x肯定患病,否则的话不能确定x是否有病,输出'N/A'。

样例

代码

#include <bits/stdc++.h> using namespace std;set<int> s;
map<int,int> mp;int n,q;
int main(){scanf("%d%d",&n,&q);for(int i=0;i<=n+1;i++)s.insert(i);int op,l,r,x;while(q--){scanf("%d",&op);if(op==0){scanf("%d%d%d",&l,&r,&x);if(x==0){while(1){auto iter=s.lower_bound(l);if(iter==s.end()||*iter>r)break;elses.erase(iter);}           }else{auto iter=mp.lower_bound(l);//新给的区间[l,r]如果覆盖map里之间存的某个区间//这个区间就没有意义 if(iter!=mp.end()&&iter->second<=r){continue;}mp[l]=r;iter=mp.find(l);while(iter!=mp.begin()&&prev(iter)->second>=r)mp.erase(prev(iter));}}else{scanf("%d",&x);if(!s.count(x)){printf("NO\n"); }else{auto iter=s.find(x);int l=*prev(iter),r=*next(iter);//0和n+1为什么要插入就在这里体现//当set中x为第一个元素时,*prev(iter)就为0,大于0的区间就可以auto it=mp.upper_bound(l);if(it!=mp.end()&&it->first<=x&&it->second<r){printf("YES\n");}else{printf("N/A\n");}}}}}

E. Anonymity Is Important相关推荐

  1. codeforces E. Anonymity Is Important 【推断题(线段树|STL)】

    E. Anonymity Is Important [推断题(线段树|STL)] 题目 题意 给出若干次询问,当询问类型为1的时候,给出当前病人有病/无病/不确定的判断. 首先可以想到用set存储[不 ...

  2. CF773 E - Anonymity Is Important(stl迭代器的各种用法)

    E - Anonymity Is Important 分析: 区间覆盖,set去重,剔除无效信息 输出有三种情况: NO:最好处理,在之前被删除过 YES:对于当前x,它前面一个,后面一个不与它共有一 ...

  3. CF 1642 E. Anonymity Is Important 线段树 + 离线

    文章目录 题意 思路 传送门 题意 有nnn个人,给你qqq个请求,分以下三种: [l,r,x][l,r,x][l,r,x] 如果x=0x=0x=0,代表[l,r][l,r][l,r]这个区间内的人都 ...

  4. codeforces 1641C Anonymity Is Important (思维好题,STL)

    题意: 有 n 个人和 q 个信息, 0 l r x,如果 x = 0,表示编号 l 到 r 的人没有病:否则,表示编号 l 到 r 的人至少有一个得病. 1 x,询问编号为 x 的人健康情况. 思路 ...

  5. 【CF1641C】Anonymity Is Important(STL,模拟(?))

    题面

  6. Modifying Firefox for Anonymity

    原文地址:http://schoolofprivacy.eu/post/23787421556/modifying-firefox-for-anonymity Firefox is one of th ...

  7. Why Sleeping May Be More Important Than Studying

    Why Sleeping May Be More Important Than Studying 转载于:https://www.cnblogs.com/Lamfai/p/10441451.html

  8. Webinar: An introduction to PacBio’s long-read sequencing how it has been used to make important s

    Webinar: An introduction to PacBio's long-read sequencing & how it has been used to make importa ...

  9. 用!important解决IE和Mozilla的布局差别(转)

    http://www.w3cn.org/article/tips/2004/91.html 在设计<网页设计师>页面的时候,有一个问题一直困扰着我,主菜单在IE和其他(Mozilla.Op ...

最新文章

  1. %求余数 rand随机数
  2. 树(5)-----判断两颗树一样或者一棵树是否是另外一颗的子树
  3. Django模型和数据库操作
  4. 新东方私有化背后的秘密
  5. IIS 发布的FTP提供下载时的转码问题
  6. 中标麒麟操作系统离线安装nginx
  7. 网络端口和端口扫描简介
  8. HTML5期末大作业:爱宠之家网站设计——蓝色版爱宠之家(5页) 致热爱动物网页设计作品 大学生爱宠专题网页设计作业模板 动物静态HTML网页模板下载
  9. css折叠样式(4)——div+css布局
  10. 成功必须靠自己去争取。
  11. DataV-数据-csv文件
  12. Flink On K8s
  13. 和小朋友分享一些Scratch学习的心得一
  14. android发送电子邮件,Android发送电子邮件
  15. 25-30K ☀️|网络工程师职业技巧与经典面试题✨
  16. 《Python编程从入门到实践 第二版》第十八章练习
  17. 文件上传,服务器文件名中文乱码
  18. 智慧大厅综合管理平台 解决方案
  19. Ancient Berland Circus
  20. 【MATLAB】读取序列图像raw文件并求序列均值

热门文章

  1. 类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。
  2. 数据湖(十七):Flink与Iceberg整合DataStream API操作
  3. matlab从excel读取数据,使用Matlab从Excel中读取数据并实现回归统计计算
  4. 2021年压力容器作业(R)移动式压力容器充装(R2)考试题库
  5. PHP 单选 多选的统计,使用单选按钮和多选按钮,制作带自动统计功能的调查问卷(一)...
  6. UGUI深度学习(二)-- 浅谈特效穿层问题
  7. 《王者荣耀》西施调整 9月7日体验服停机更新公告
  8. 学web前端开发和学习其他编程语言一样吗?
  9. 如何基于10米等高线生成TIN
  10. php v9 sql,PHPCMS v9 SQL注入