题目链接:

https://cn.vjudge.net/problem/URAL-1019

题目大意:

一个0~1e9的区间,初始都是白的,现进行N次操作,每次将一段区间图上一中颜色。最后问说连续最长的白色区间。

解题思路:

先离散化,之后可暴力,或者用线段树维护

离散化后,染色时候应注意从第二个点开始染色。

比如:1 2 3 4 5 6 7 8 9 10,现在染色7 - 9

那么只需要把8 9 染色即可,因为7-9是两段区间,用8表示7-8区间,9表示8-9区间。

这样表示不会出错。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = + ;
struct node
{
int u, v;
char s[];
}a[maxn];
int num[maxn], tot, color[maxn];
map<int, int>Map;
int main()
{
int n;
cin >> n;
num[tot++] = , num[tot++] = 1e9;
for(int i = ; i <= n; i++)
{
scanf("%d%d%s", &a[i].u, &a[i].v, &a[i].s);
num[tot++] = a[i].u;
num[tot++] = a[i].v;
}
sort(num, num + tot);
tot = unique(num, num + tot) - num;
for(int i = ; i < tot; i++)
{
Map[num[i]] = i;
}
for(int i = ; i <= n; i++)
{
int tmp = ;
if(a[i].s[] == 'b')tmp = ;
for(int j = Map[a[i].u] + ; j <= Map[a[i].v]; j++)
{
color[j] = tmp;
}
//for(int i = 0; i < tot; i++)cout<<color[i]<<" ";
//cout<<endl;
}
int l, r, length = ;
for(int i = ; i < tot; i++)
{
if(color[i])continue;
int j = i;
while(color[j] == && j < tot)j++;
if(length < num[j - ] - num[i - ])
{
l = num[i - ];
r = num[j - ];
length = r - l;
}
}
cout<<l<<" "<<r<<endl;
return ;
}

下次写上线段树的代码:

URAL-1019 Line Painting----暴力或线段树的更多相关文章

  1. URAL 1019 - Line Painting

    跟前面某个题一样,都是区间染色问题,还是用我的老方法,区间离散化+二分区间端点+区间处理做的,时间跑的还挺短 坑爹的情况就是最左端是0,最右端是1e9,区间求的是开区间 #include <st ...

  2. CodeForce 855B 暴力or线段树

    CodeForce 855B 暴力or线段树 题意 给你一串数,然后找出三个数,他们的前后关系和原来一样,可以相同,然后分别乘p,q,r,求他们积的和最大,并且输出这个数. 解题思路 这个可以使用线段 ...

  3. 1019.Line Painting(线段树 离散化)

    1019 离散化都忘记怎么写了 注意两个端点 离散化后用线段树更新区间 混色为-1  黑为2  白为1  因为N不大 最后直接循环标记这一段的颜色查找 #include <iostream> ...

  4. CDOJ 1292 卿学姐种花 暴力 分块 线段树

    卿学姐种花 题目连接: http://acm.uestc.edu.cn/#/problem/show/1292 Description 众所周知,在喵哈哈村,有一个温柔善良的卿学姐. 卿学姐喜欢和她一 ...

  5. HDU - 4366 Successor DFS序 + 分块暴力 or 线段树维护

    给定一颗树,每个节点都有忠诚和能力两个参数,随意指定一个节点,要求在它的子树中找一个节点代替它,这个节点要满足能力值大于它,而且是忠诚度最高的那个. 首先,dfs一下,处理出L[i], R[i]表示d ...

  6. HDU - 6183 暴力,线段树动态开点,cdq分治

    B - Color itHDU - 6183 题目大意:有三种操作,0是清空所有点,1是给点(x,y)涂上颜色c,2是查询满足1<=a<=x,y1<=b<=y2的(a,b)点一 ...

  7. URAL 1989 Subpalindromes (多项式hash) +【线段树】

    <题目链接> <转载于 >>>  > 题目大意:给你一段字符串,进行两种操作:1.询问[l,r]这个区间中的字符串是否是回文串: 2.更改该字符串中对应下标的 ...

  8. POJ 2182/暴力/BIT/线段树

    POJ 2182 暴力 /* 题意: 一个带有权值[1,n]的序列,给出每个数的前面比该数小的数的个数,当然比一个数前面比第一个数小的个数是0,省略不写,求真正的序列.(拗口) 首先想到的是从前到后暴 ...

  9. 【BZOJ 4059】 (分治暴力|扫描线+线段树)

    4059: [Cerc2012]Non-boring sequences Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 632  Solved: 22 ...

随机推荐

  1. C#基础笔记(第十二天)

    1.复习里氏转换:1).子类可以赋值给父类(如果有一个方法需要一个父类作为参数,我们可以传第一个子类对象)2).如果父类中装的是子类对象,则可以将这个父类强转为子类对象 is和as判断转换成功失败 P ...

  2. java 基础 --- java8 HashMap

    问题 : HashMap 容量大小 (capacity)为什么为 2n HashMap 是线程安全的吗,为什么 HashMap 既然有hash进行排位还需要equals()作用是什么   文章部分图片 ...

  3. Hadoop配置要点必看

    hadoop 配置要点 软件 版本 java 1.8.0_151 hadoop 2.6.1 part1 $HADOOP_HOME/etc/hadoop 目录下配置参数. slaves 配置从节点 ya ...

  4. hashmap的一些基础原理

    本文来源于翁舒航的博客,点击即可跳转原文观看!!!(被转载或者拷贝走的内容可能缺失图片.视频等原文的内容) 若网站将链接屏蔽,可直接拷贝原文链接到地址栏跳转观看,原文链接:https://www.cn ...

  5. 4.java设计模式-原型模式(prototype)

    在<JAVA与模式>一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更 ...

  6. JMX 远程监控 Linux tomcat 功能实现

    作者远程服务器操作系统 CentOS 7.0, tomcat 版本 7.0 1. Linux tomcat 配置 1.1 catalina_opt 配置 可以在 catalina.sh 文件中添加如下 ...

  7. K:找寻数组中第n大的数组元素的三个算法

    相关介绍:  给定一个数组,找出该数组中第n大的元素的值.其中,1<=n<=length.例如,给定一个数组A={2,3,6,5,7,9,8,1,4},当n=1时,返回9.解决该问题的算法 ...

  8. RequireJS 是一个JavaScript模块加载器

    RequireJS 是一个JavaScript模块加载器.它非常适合在浏览器中使用, 它非常适合在浏览器中使用,但它也可以用在其他脚本环境, 就像 Rhino and Node. 使用RequireJ ...

  9. css3 常用动画 随笔

    /* animation */.a-bounce,.a-flip,.a-flash,.a-shake,.a-swing,.a-wobble,.a-ring{-webkit-animation:1s e ...

  10. 初级篇html。

    什么是html?  超文本标记语言,标准通用标记语言下的一个应用. “超文本”就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素. 超文本标记语言的结构包括“头”部分(英语:Head).和“主 ...