题意:给定n<=100000线段[l,r],然后给这些线段染色(red or blue),求最后平面上任意一个点被蓝色及红色覆盖次数只差的绝对值不大于1

思路:把每条线段拆成2个点[l<<1, r<<1|1]来表示,

那么如果把染red看成1,blue看成-1

那么对于每条线段染色为v(-1 or 1),等价于l<<1点为v,r<<1|1为-v,

则题目等价于求一种合法的方案使得任意点的abs(前缀和S)<=1

此外,由于任一点取值为 -1 or 1,并且过程中abs(S)<=1,所以任意奇数位置(下标从0开始)的前缀和为0

所以转化为图论模型,就是经典的二分图染色模型:

对于每个线段两端连一条边;

对于排序后相邻的(i<<1, i <<1|1)连一条边,

又由于图的特殊性不会出现奇数环。。

因为对于任意的一个点,只有两条边,并且这两条边类型不同,不妨设为A和B。

那么如果出现了环,那么路径上肯定是ABAB交替出现,并且是偶数。。因为出现奇环必有路径上出现重复的AA或者BB,显然这种情况是不会出现的。。

code:

 /*
* Author: Yzcstc
* Created Time: 2014/10/30 19:12:23
* File Name: cf429.cpp
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<string>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<stack>
#include<ctime>
using namespace std;
vector<int> e[];
int col[], n;
pair<int, int> p[];
void dfs(int u, int color){
if (col[u] != -) return;
col[u] = color;
for (int i = ; i < (int)e[u].size(); ++i)
dfs(e[u][i], color^);
} void solve(){
for (int i = ; i <= n * ; ++i) e[i].clear();
int l, r;
for (int i = ; i < n; ++i){
scanf("%d%d", &l, &r);
e[i<<].push_back(i<<|), e[i<<|].push_back(i<<);
p[i<<] = make_pair(l<<,i<<), p[i<<|] = make_pair(r<<|, i<<|);
}
sort(p, p + *n);
for (int i = ; i < n; ++i){
int x = p[i<<].second, y = p[i<<|].second;
e[x].push_back(y), e[y].push_back(x);
}
memset(col, -, sizeof(col));
for (int i = ; i < n; ++i){
if (col[i<<] == -) dfs(i<<, );
printf("%d ", col[i<<]);
}
} int main(){
// freopen("a.in", "r", stdin);
// freopen("a.out", "w", stdout);
while (scanf("%d", &n) != EOF){
solve();
}
return ;
}

codeforces 429E的更多相关文章

  1. Codeforces 429E - Points and Segments(欧拉回路)

    Codeforces 题面传送门 & 洛谷题面传送门 果然我不具备融会贯通的能力/ll 看到这样的设问我们可以很自然地联想到这道题,具体来说我们可以通过某种方式建出一张图,然后根据" ...

  2. Codeforces 429E Points and Segments

    Description 题面 题目大意:有 \(n\) 个区间 \([L_i,R_i]\) ,你要给每一个区间染红蓝,使得每一个位置被红色染过的次数与被蓝色染过的次数差的绝对值不大于\(1\) Sol ...

  3. A - Points and Segments CodeForces - 429E

    题解: 方法非常巧妙的一道题 首先考虑要求全部为0怎么做 发现是个欧拉回路的问题(很巧妙) 直接dfs一遍就可以了 而这道题 要求是-1,1,0 我们可以先离散化 完了之后判断每个点被奇数还是偶数条边 ...

  4. Codeforces 429E(欧拉回路)

    题面 传送门 题目大意: 有n条线段,每条线段染红色或蓝色,使得数轴上每个点被红色线段覆盖的次数与被蓝色线段覆盖数差的绝对值小于等于1.输出染色方案. 分析 题意其实可以这样理解: 一段初始全为0 的 ...

  5. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  6. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  7. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  8. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  9. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

随机推荐

  1. C#开发Windows服务 附简单实例实现禁止QQ运行

    本实例主要实现下面三个基本功能 1.C#开发windows服务 2.禁止QQ等程序运行 3.为windows服务创建自动安装程序 下面针对这三个基本功能进行实现 一.C#开发windows服务 Win ...

  2. Android新浪微博获取评论信息、发表评论、转发微博等

    首先前面一节中说过,获取用户的微博信息,这里简单介绍下获取微博的评论信息,以及对微博进行评论,转发微博等. OAuth认证,这里就不多说了, 我说名一下接口: 获取微博的评论列表接口: http:// ...

  3. Unknow Unknow

    Unknow Unknow,讲的大概意思是:你不知道这事情的时候,那么请不要轻易下任何结论.例如,这个太难了,放弃吧.嗯,这个是捷径.而最后却是,困难的路越走越容易,容易的路越走越难.只是一种常见的现 ...

  4. java8中hashMap

    摘自:http://www.importnew.com/20386.html 简介 Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMa ...

  5. java如何得到GET和POST请求URL和参数列表(转)

    在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完整的请求路径和请求所有参数列表,POST的需要getPa ...

  6. KBMMW 4.90.00 发布

    kbmMW is a portable, highly scalable, high end application server andenterprise architecture integra ...

  7. spark Mllib基本功系列编程入门之 SVM实现分类

    话不多说.直接上代码咯.欢迎交流. /** * Created by whuscalaman on 1/7/16. */import org.apache.spark.{SparkConf, Spar ...

  8. delphi对象赋值

     Delphi的对象之间赋值主要要注意几个方面的问题:   1.对象之间的 :=赋值只是地址赋值,即是将当前对象的地址赋值到变量中,定义的变量可以是不用初始化的,在内存中两个变量指向的是同一地址空间: ...

  9. POJ 2186-Popular Cows (图论-强联通分量Korasaju算法)

    题目链接:http://poj.org/problem?id=2186 题目大意:有n头牛和m对关系, 每一对关系有两个数(a, b)代表a牛认为b牛是“受欢迎”的,且这种关系具有传递性, 如果a牛认 ...

  10. Vmware /CentOS访问Windows中的文件

    1.将该文件设为共享文件夹 2.确定你的windows IP地址,用户名及密码 3.CentOS终端输入以下内容:   [root@*** mnt]# mkdir winD   [root@*** m ...