先离散,然后将黑的看成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 Kubernetes 容器服务

    作者 | 张维(贤维) 阿里云函数计算开发工程师 导读:Serverless Kubernetes 是以容器和 kubernetes 为基础的 Serverless 服务,它提供了一种简单易用.极致弹 ...

  2. logstash输出到rabbitmq

    场景 将应用日志文件发送到rabbitmq. filebeat 不支持rabbitmq作为输出.因此,需要先将文件由filebeat发送到logstash ,再由logstash 输出到rabbitm ...

  3. 某个buuctf的题(easy_tornado)

    题目:http://88099f53-12b6-470a-9993-b73e4155940e.node3.buuoj.cn/ 1首先看三个文件的内容 2简单分析 如果出题人没整一些花里胡哨的,那么fl ...

  4. python filter lambda 的使用

    lambda 匿名函数的使用 >>> a=lambda x : x in "1234567890.," >>> a("asd" ...

  5. 初学Python-day10 函数2

    函数 1.函数也是一种数据 函数也是一种数据,可以使用变量保存 回调函数(参数的值还是一个函数) 实例: def test(): print('hello world') def test1(a): ...

  6. 【c++ Prime 学习笔记】第15章 面向对象程序设计

    15.1 OOP:概述 面向对象程序设计(object-oriented programming)的核心思想是:数据抽象.继承.动态绑定 使用数据抽象,可将类的接口与实现分离 使用继承,可定义相似的类 ...

  7. 80. 删除有序数组中的重复项 II

    题目 给你一个有序数组 nums ,请你原地删除重复出现的元素(不需要考虑数组中超出新长度后面的元素),使每个元素最多出现两次 ,返回删除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入 ...

  8. Java:NIO 学习笔记-2

    Java:NIO 学习笔记-2 上一篇 NIO 学习笔记-1 看了 尚硅谷 的相应教程,此处又对比看了 黑马程序员 的课程 JAVA通信架构I/O模式,做了相应的笔记 前言 在 Java 的软件设计开 ...

  9. [对对子队]Scrum Meeting 博客汇总

    对对子队 博客目录 一.Scrum Meeting 1. Alpha Scrum Meeting 1(会议记录4.10) Scrum Meeting 2(会议记录4.11) Scrum Meeting ...

  10. IOC和DI之刨根问底之第一节

    很多freshman上来就想搞清楚什么是IOC和DI,其实很多先进的理论和技术都在老的基础上升华出来的,最终目的是为了解放生产力. 所以先来说说下面两点基础知识: Direct Dependency( ...