题目链接:

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. HDU 1575 Tr A----矩阵相乘题。

    Tr A Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. 手机浏览器的User-Agent汇总

    手机浏览器的User-Agent汇总 之前介绍的 更简洁的方式修改Chrome的User Agent,轻松体验移动版网络这种简洁的方法好像只适用于Chrome, Chrome不只是浏览界面简洁,对应的 ...

  3. JavaWeb学习总结(八):HttpServletRequest对象

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  4. Visual Studio Code插件

    Material Theme 下载量:130 万 Visual Studio Code 最悠久的主题! Auto Import 下载量:46 万 自动去查找.分析.然后提供代码补全.对于 TypeSc ...

  5. JS算法之八皇后问题(回溯法)

    八皇后这个经典的算法网上有很多种思路,我学习了之后自己实现了一下,现在大概说说我的思路给大家参考一下,也算记录一下,以免以后自己忘了要重新想一遍. 八皇后问题 八皇后问题,是一个古老而著名的问题,是回 ...

  6. canvas中strokeRect的渲染问题>>strokeRect把一像素的边框渲染成两像素

    > 结论写在头 var oC = document.getElementById('c1'); var oGC = oC.getContext('2d'); oGC.strokeRect(50, ...

  7. 公司网络问题 & Caused by: org.gradle.internal.resource.transport.http.HttpRequestException

    问题 公司网络问题,总是无法成功下载库,回到家就可以. Caused by: org.gradle.internal.resource.transport.http.HttpRequestExcept ...

  8. int占几个字节?

    class Program19 { static void Main(string[] args) { // true,或false Console.WriteLine("bool占用:&q ...

  9. C# 元素组合算法

    class Program { static void Main(string[] args) { string[] a = { "A", "B", " ...

  10. web application 访问控制

    http://secappdev.org/handouts/2012/Jim%20Manico%20%26%20%20Eoin%20Keary/Final%20-%20Access%20Control ...