URAL 1019 - Line Painting
跟前面某个题一样,都是区间染色问题,还是用我的老方法,区间离散化+二分区间端点+区间处理做的,时间跑的还挺短


坑爹的情况就是最左端是0,最右端是1e9,区间求的是开区间
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
typedef struct
{
int l;
int r;
bool color;
}seg;
seg a[5005];
int t[10005];
int d[10005],ct;
int f[10005]; int find(int x,int n)
{
int l=0,r=n-1,mid=(l+r)/2;
while(l<r)
{
if(x>d[mid])l=mid+1;
else r=mid;
mid=(l+r)/2;
}
return mid;
} int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
char e;
scanf("%d %d %c",&t[2*i],&t[2*i+1],&e);
a[i].l=t[2*i];
a[i].r=t[2*i+1];
a[i].color=(e=='w')?0:1;
}
t[2*n]=0;t[2*n+1]=1e9;
sort(t,t+2*n+2);
ct=0;
d[ct++]=t[0];
for(int i=1;i<2*n+2;i++)
if(t[i]!=t[i-1])
d[ct++]=t[i];
memset(f,0,sizeof(f));
for(int i=0;i<n;i++)
{
int L=find(a[i].l,ct);
int R=find(a[i].r,ct);
for(int j=L;j<R;j++)
f[j]=a[i].color;
}
int left=0;
int max=0,a1,a2;
for(int i=0;i<ct;i++)
{
if(f[i]==1||d[i]==1e9)
{
if(left==d[i]){left=d[i+1];continue;}
else {
if(d[i]-left>max){
max=d[i]-left;
a1=left;
a2=d[i];
}
left=d[i+1];
}
}
}
printf("%d %d\n",a1,a2);
return 0;
}
URAL 1019 - Line Painting的更多相关文章
- 1019.Line Painting(线段树 离散化)
1019 离散化都忘记怎么写了 注意两个端点 离散化后用线段树更新区间 混色为-1 黑为2 白为1 因为N不大 最后直接循环标记这一段的颜色查找 #include <iostream> ...
- ural1019 Line Painting
Line Painting Time limit: 2.0 secondMemory limit: 64 MB The segment of numerical axis from 0 to 109 ...
- URAL 2025. Line Fighting (math)
2025. Line Fighting Time limit: 1.0 second Memory limit: 64 MB Boxing, karate, sambo- The audience i ...
- Line Painting
题目大意;说是可以吧一段区间变成白色或者黑色, 区间(0-10^9)初始都是白色,问经过n次操作以后最大的连续白色区间 Problem Description The segment of numer ...
- 线段树详解 (原理,实现与应用)(转载自:http://blog.csdn.net/zearot/article/details/48299459)
原文地址:http://blog.csdn.net/zearot/article/details/48299459(如有侵权,请联系博主,立即删除.) 线段树详解 By 岩之痕 目录: 一:综述 ...
- 【ACM/ICPC2013】线段树题目集合(一)
前言:前一段时间在网上找了一个线段树题目列表,我顺着做了一些,今天我把做过的整理一下.感觉自己对线段树了解的还不是很深,自己的算法能力还要加强.光练代码能力还是不够的,要多思考.向队友学习,向大牛学习 ...
- Aizu The Maximum Number of Customers
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=DSL_5_A The Maximum Number of Customers Ide ...
- URAL 1948 H - The Robot on the Line 二分 + 数学
http://acm.hust.edu.cn/vjudge/contest/126149#problem/H 给定一条二次函数 f (x) = a * x * x + b * x + c 求一个最小的 ...
- CF448C Painting Fence (分治递归)
Codeforces Round #256 (Div. 2) C C. Painting Fence time limit per test 1 second memory limit per tes ...
随机推荐
- Unity3D之如何创建正确的像素比在屏幕上
关于这篇文章的命名,实在不知道怎么命名好,大概功能就是:比如一张宽高为100x100的图片显示在屏幕上,那2D摄像头的Size值为多少时,屏幕上显示出来图片大小和图片的实际像素一致. 这里涉及到一个G ...
- LeetCode Maximum Depth of Binary Tree (求树的深度)
题意:给一棵二叉树,求其深度. 思路:递归比较简洁,先求左子树深度,再求右子树深度,比较其结果,返回:max_one+1. /** * Definition for a binary tree nod ...
- Ehcache和MemCached比较分析
项目 Memcache Ehcache 分布式 不完全,集群默认不实现 支持 集群 可通过客户端实现 支持(默认是异步同步) 持久化 可通过第三方应用实现,如sina研发的memcachedb,将ca ...
- (一)学习CSS之z-index属性
参考:http://www.w3school.com.cn/cssref/pr_pos_z-index.asp z-index 属性设置元素的堆叠顺序.拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元 ...
- span文字在左背景图片在右
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
- asp.net微信公众平台开发
http://mp.weixin.qq.com/wiki/index.php?title=%E6%B6%88%E6%81%AF%E6%8E%A5%E5%8F%A3%E6%8C%87%E5%8D%97 ...
- 扩展类加载器-------改变JAVA的父优先类加载顺序
java的类加载机制默认情况下是采用委托模型:当加载某个类时JVM会首先尝试用当前类加载器的父类加载器加载该类,若父类加载器加载不到再由当前类加载器来加载,因此这种模型又叫做“父优先”模型. 但是在实 ...
- The new Portable Class Library for SQLite z
Microsoft Open Technologies has recently released a Portable Class Library for SQLite. Thanks to it, ...
- 4、什么构成了我们Android应用程序?(七大件)
一.应用程序四大组件 [Activity] Activity是Android应用程序的一个界面,可以通过这个界面查看联系人,打电话戒玩游戏. b. 一个应用程序通常包含多个Activity. c. A ...
- ZOJ 3299-Fall the Brick(线段树+离散化)
题意: n个区间 ,给出区间的左右坐标 ,区间内填满宽度为1的箱子,有m个板子给出板子的高度和左右坐标(同高度不重叠) 所有箱子从上向下落,求每块板子能接到的箱子数. 分析: 首先给的区间很大,一开始 ...