先离散,然后将黑的看成1,白的看成-1,对整个序列差分,所有区间建为$(l,r+1)$的无向边,并标上-1和1,每一个点的前缀和即为该点的值
考虑什么情况下能够使得所有点都是0:当且仅当每一个点的度数都为偶数(证明:必要性,由于所有点奇偶性相同,因此比然要有偶数条边;必要性:每一个连通块都存在一个欧拉回路,按照欧拉回路经过方向不同标上-1和1,根据欧拉回路的性质,即所有点都为0)
原题中,允许每一个点为0或$\pm 1$,因此并不保证所有点度数都为偶数,考虑构造:将相邻两个度数为奇数的点连起来,这样构成全都是0,然后删去这些区间,由于这些区间互不相交,所以满足题中要求

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 200005
4 struct ji{
5 int nex,to;
6 }edge[N<<1];
7 pair<int,int>a[N];
8 int E,n,x,y,head[N],vis[N],ans[N];
9 void add(int x,int y){
10 edge[E].nex=head[x];
11 edge[E].to=y;
12 head[x]=E++;
13 if (E&1)add(y,x);
14 }
15 void dfs(int k){
16 for(int i=head[k];i!=-1;i=edge[i].nex)
17 if (ans[i/2]<0){
18 ans[i/2]=(i&1);
19 dfs(edge[i].to);
20 }
21 }
22 int main(){
23 scanf("%d",&n);
24 memset(head,-1,sizeof(head));
25 memset(ans,-1,sizeof(ans));
26 for(int i=1;i<=n;i++){
27 scanf("%d%d",&x,&y);
28 a[2*i-1]=make_pair(x*2,2*i-1);
29 a[2*i]=make_pair(y*2+1,2*i);
30 add(2*i-1,2*i);
31 }
32 sort(a+1,a+2*n+1);
33 for(int i=1;i<=n;i++)add(a[2*i-1].second,a[2*i].second);
34 for(int i=1;i<=2*n;i++)dfs(i);
35 for(int i=0;i<n;i++)printf("%d ",ans[i]);
36 }

[noi1779]D的更多相关文章

随机推荐

  1. 从零入门 Serverless | 函数计算如何粘合云服务,提供端到端解决方案

    作者 | 西流 阿里云技术专家 导读:阿里云 Serverless 产品函数计算可以作为粘合剂,串联其他云服务提供端到端解决方案,从而简化编程模型,快速实现最上层的业务目标. 传统单体应用的拆解 首先 ...

  2. Java初步学习——2021.10.05每日总结,第五周周三

    (1)今天做了什么: (2)明天准备做什么? (3)遇到的问题,如何解决? 今天学了对象与类,如何定义类和创建对象,以及构建方法的用法. 明天课比较多,把今天未学的例子敲一遍好了. 没有遇到什么问题.

  3. 2021.3.3--vj补题

    题目 C - C CodeForces - 1166C The legend of the foundation of Vectorland talks of two integers xx and  ...

  4. Java(11)方法详细介绍

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201577.html 博客主页:https://www.cnblogs.com/testero ...

  5. c语言中一条竖线是什么符号?

    "|"在C语言中表示按位或,是双目运算符.其功能是参与运算的两数各对应的二进位(也就是最后一位)相或.只要对应的二个二进位有一个为1时,结果位就为1.参与运算的两个数均以补码出现. ...

  6. 5个步骤,教你瞬间明白线程和线程安全.md

    记得刚来杭州面试的时候,有一家公司的技术总监问了我这样一个问题:你来说说有哪些线程安全的类?我心里一想,这我早都背好了,稀里哗啦说了一大堆. 他又接着问:那你再来说说什么是线程安全?--然后我就GG了 ...

  7. logging模块二

    背景,在学习logging时总是遇到无法理解的问题,总结,尝试一下更清晰明了了,让我们开始吧! logging模块常用format格式说明 %(levelno)s: 打印日志级别的数值 %(level ...

  8. FastAPI 学习之路(五十四)startup 和 shutdown

    我们在实际的开发中呢,总会遇到这样的场景,我们想在启动或者终止的时候,做一些事情,那么应该如何实现呢,其实也是很简单.fastapi提供了这样的操作. 那么我们看下具体是怎么实现的呢 app = Fa ...

  9. 决策树 机器学习,西瓜书p80 表4.2 使用信息增益生成决策树及后剪枝

    使用信息增益构造决策树,完成后剪枝 目录 使用信息增益构造决策树,完成后剪枝 1 构造决策树 1 根结点的选择 色泽 信息增益 根蒂 信息增益 敲声 信息增益 纹理 信息增益 脐部 信息增益 触感 信 ...

  10. 2021 ICPC Gran Premio de Mexico 2da Fecha部分题题解

    前面的水题,在队友的配合下,很快就拿下了,剩下几道大毒瘤题,一直罚座三个小时,好让人自闭...但不得不说,这些题的质量是真的高! H. Haunted House 首先看这个题,大眼一扫,觉得是某种数 ...