题目

在一个数轴上一共有 NN 段闭区间,它们可能有交。

现在你需要对它们黑白染色。对于每个位置 xx ,假设覆盖它的黑色区间个数为 bxbx,覆盖它的白色区间个数为 wxwx,要求满足 |bx−wx|≤1|bx−wx|≤1。区间 [l,r][l,r] 覆盖位置 xx 当且仅当 l≤x≤rl≤x≤r。

给出任意一种方案即可。

输入格式
第一行两个整数 NN。

接下来 NN 行,每行两个整数 li,rili,ri,表示一个 [li,ri][li,ri] 的区间。

输出格式
一共 NN 个 0/10/1 数,其中第 ii 个数为 11 表示第 ii 个区间染黑,否则为染黑。

样例一
Input
2
1 3
3 5
Output
1 0
样例二
Input
5
1 5
3 9
4 8
5 9
6 8
Output
1 0 0 1 1
数据范围
30%的数据满足:N≤20N≤20
60%的数据满足:N≤500N≤500
对于100%的数据满足:N≤105,0≤li≤ri≤109N≤105,0≤li≤ri≤109,数据保证至少有一组解。

思路

我们把黑的看成 +1+1+1,白的看成 −1-1−1。对于区间 [l,r][l,r][l,r],做个差分,便可以看做是一条从 lll 到 r+1r+1r+1 的边。

我们想要的是每个位置是 0,±10, \pm 10,±1,这个对应到差分上值有 0,±1,±20, \pm 1, \pm 20,±1,±2,不太好处理。但是如果我们想要的是每个位置都是 000,那么差分后每个位置都是 000,也就是说如果建出来的图存在欧拉回路,那么我们按照欧拉回路上的边的方向就可以得到一组解。

对于原题,可以发现为 ±1\pm 1±1 的一定是被覆盖奇数次的位置,那么新增一些区间来覆盖它们,使得每个位置都为偶数次。这个时候建出来的图也一定是存在欧拉回路的,于是我们就得到了一组满足每个位置都是 0,±10, \pm 10,±1 的解。

代码

#include<bits/stdc++.h>
#define register
using namespace std;
const int N=2e5+77;
int fa[N],vl[N];
int gf(int a)
{if(a==fa[a])return a;int x=gf(fa[a]);vl[a]^=vl[fa[a]];fa[a]=x;return x;
}
pair<int,int>pp[N];
int main()
{int n,l,r;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d",&l,&r);pp[i*2-1]=std::make_pair(l,i);pp[i*2]=std::make_pair(r,i+n);fa[i]=fa[i+n]=i,vl[i+n]=1;}sort(pp+1,pp+2*n+1);int nw=0;for(int i=1;i<=2*n;i++){int no=pp[i].second;if(!nw)nw=no;else{if(gf(nw)!=gf(no)){vl[fa[no]]=vl[no]^vl[nw]^1;fa[fa[no]]=fa[nw];}nw=0;}}for(int i=1;i<=n;i++){gf(i);printf("%d ",vl[i]);}
}

【noi.ac #1779】D相关推荐

  1. 【noi.ac #596】road

    题目 小P和小R是一对非常好的朋友,今天他们在玩一个模拟建设类游戏. 游戏中共有nn个城市,通过mm条双向道路连接.第ii条道路连接了城市aiai和bibi. 不幸的是,在一次巨大的灾难以后,这mm条 ...

  2. 【noi.ac#1771】ball

    题目 Description 给出 n 条平行的纵向轨道 ,有 m 根横向的短棒支在一些相邻轨道上.如果在某个轨道顶端释放一个小球,它会沿着这个轨道一直下落,一旦碰到短棒就会沿着短棒滚到相邻轨道并继续 ...

  3. 【VC/AC论文】Any-to-Many Voice Conversion withLocation-Relative Sequence-to-Sequence Modeling

    文章目录 Abstract Introduction Related Work Attention mechanisms in seq2seq model | seq2seq模型中的注意机制 A se ...

  4. 【noi.ac】163.仰望星空

    题目 [问题描述] 每天晚上,LYC都会在市少年宫的操场上仰望星空.时间久了,他便开始觉得无聊. 于是LYC选择了第一颗星星,以它为圆心画了一个半径为RR的圆并将星星分为两类,其中圆外不包括边界上的点 ...

  5. 【noi 2.5_7834】分成互质组(dfs)

    有2种dfs的方法: 1.存下每个组的各个数和其质因数,每次对于新的一个数,与各组比对是否互质,再添加或不添加入该组. 2.不存质因数了,直接用gcd,更加快.P.S.然而我不知道为什么RE,若有好心 ...

  6. 【NOI题库】【NOIP2016PJ猜题】雇佣兵

    雇佣兵 [问题描述] 雇佣兵的体力最大值为M,初始体力值为0,战斗力为N,拥有X个能量元素.(0 < M, N, X ≤ 10,000) 当雇佣兵的体力值恰好为M时,才可以参加一个为期M天的战斗 ...

  7. 【noi 2.5_8465】马走日(dfs)

    最基本的dfs.这代码理应超时的,我也不知为何AC了......打表我都放弃了,因为最大的数据真的要跑很久...... 1 #include<cstdio> 2 #include<c ...

  8. 【华为 AC+AP】

    华为AC+AP项目配置 让每个 AP 拥有IP地址,但是AP的数量非常多,并且分布广泛,又不能挨个挨个去配置,所以,我们可以通过 DHCP 的方式,让每个 AP 自动获取IP地址. 一.配置DHCP服 ...

  9. 【noi 2.6_9284】盒子与小球之二(DP)

    题意:有N个有差别的盒子和分别为A个和B个的红球和蓝球,盒子内可空,问方案数. 解法:我自己打的直接用了求组合C的公式,把红球和蓝球分开看.对于红球,在N个盒子可放任意个数,便相当于除了A个红球还有N ...

  10. 【NOI online 2】游戏【二项式反演】【树上背包】

    题意:一棵n=2mn=2mn=2m个点的树,mmm个白点和mmm个黑点.对于k∈[0,n]k\in [0,n]k∈[0,n],求出 把点黑白两两配对使得恰好有kkk对点有祖孙关系 的方案数 模9982 ...

最新文章

  1. sonar:查询全部项目的bug和漏洞总数(只查询阻断/严重/主要级别)
  2. To Noob Json是什么鬼?
  3. java简易计算器考察什么_练习:用java写一个简易计算器
  4. leetcode 1723. 完成所有工作的最短时间(二分+剪枝+回溯)
  5. Hibernate 自动创建表
  6. Python学习入门基础:文件读写操作、模块和包、异常
  7. Oozie 3.3.1安装
  8. QMessageBox改变大小
  9. ubuntu16.04安装使用redis入门教程
  10. 安卓手机运行ios教程_英雄联盟手游日服怎么注册?安卓/ios注册下载教程! 18183手机游戏网...
  11. 提升大数据可视化的技巧有哪些
  12. 信号处理-基于希尔伯特解调(包络谱)的轴承故障诊断实战,通过python代码实现超详细讲解
  13. HDU 2037 今年暑假不AC
  14. (二)流(Stream)
  15. 计算机网络上有个红叉没无线,无线网络连接显示红叉不能上网怎么办?
  16. Pixi.js文档笔记-起步
  17. php中怎么批量修改图片大小,怎么批量修改图片大小 光影魔术手批量处理图片...
  18. python实现数的逆序_python怎么逆序
  19. STM32单片机串口发送ASCII码
  20. 怎样在PLSQL Developer14(64bit)当中找到汉化版本?

热门文章

  1. RS485/RS422接线图
  2. 计算机应用技术信息管理方向,计算机应用技术专业(信息管理方向).docx
  3. opencms整合到java项目里_java-将标签云添加到OpenCMS网站
  4. 蝶形算法 matlab,FFT快速傅里叶变换(蝶形算法)详解
  5. 高中信息怎样用计算机求和,高中信息技术excel数据求和课件.ppt
  6. 公司内部搭建git服务器
  7. google linux桌面快捷方式,centos7 rhel7 linux下怎么安装google chrome 设置谷歌浏览器桌面快捷方式...
  8. ST的硬盘固件门给数据恢复带来的巨大收益
  9. Realsense D435i 使用
  10. “小马激活”病毒新变种分析报告