离散化+线段树。
数组开的不够大,wa了N多回。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; #define MAXN 12010
#define lson l, mid, rt<<1
#define rson mid+1, r, rt<<1|1 int ls[MAXN], rs[MAXN];
int nums[MAXN<<];
int buf[MAXN*], cnt;
char set[MAXN]; inline int bin(int x, int n) {
int l = , r = n-;
int mid; while (l <= r) {
mid = (l+r)>>;
if (buf[mid] == x)
return mid;
if (buf[mid] < x)
l = mid+;
else
r = mid-;
} return -;
}
/*
void build(int l, int r, int rt) {
nums[rt] = 0;
if (l == r)
return ;
int mid = (l+r)>>1;
build(lson);
build(rson);
}*/ inline void PushDown(int rt) {
if ( nums[rt] ) {
nums[rt<<] = nums[rt<<|] = nums[rt];
nums[rt] = ;
}
} void update(int ll, int rr, int c, int l, int r, int rt) {
if (ll<=l && rr>=r) {
nums[rt] = c;
return ;
}
PushDown(rt);
int mid = (l+r)>>;
if (ll <= mid)
update(ll, rr, c, lson);
if (rr > mid)
update(ll, rr, c, rson);
} void query(int l, int r, int rt) {
if ( nums[rt] ) {
if ( !set[nums[rt]] )
++cnt;
set[nums[rt]] = ;
return ;
}
if (l == r)
return ;
int mid = (l+r)>>;
query(lson);
query(rson);
} int main() {
int case_n, n, m;
int i, j, ll, rr; scanf("%d", &case_n); while (case_n--) {
scanf("%d", &n);
m = ;
for (i=; i<=n; ++i) {
scanf("%d %d", &ls[i], &rs[i]);
buf[m++] = ls[i];
buf[m++] = rs[i];
}
sort(buf, buf+m);
j = ;
for (i=; i<m; ++i) {
if (buf[i] != buf[i-])
buf[j++] = buf[i];
}
m = j;
for (i=m-; i>; --i) {
if (buf[i] != buf[i-]+)
buf[m++] = buf[i-]+;
}
sort(buf, buf+m);
//build(0, m, 1);
memset(nums, , sizeof(nums));
memset(set, , sizeof(set));
for (i=; i<=n; ++i) {
ll = bin(ls[i], m);
rr = bin(rs[i], m);
update(ll, rr, i, , m, );
}
cnt = ;
query(, m, );
printf("%d\n", cnt);
} return ;
}

【POJ】2528 Mayor's posters的更多相关文章

  1. 【POJ】2528 Mayor's posters ——离散化+线段树

    Mayor's posters Time Limit: 1000MS    Memory Limit: 65536K   Description The citizens of Bytetown, A ...

  2. POJ 2528 Mayor's posters 【区间离散化+线段树区间更新&&查询变形】

    任意门:http://poj.org/problem?id=2528 Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  3. poj 2528 Mayor's posters(线段树+离散化)

    /* poj 2528 Mayor's posters 线段树 + 离散化 离散化的理解: 给你一系列的正整数, 例如 1, 4 , 100, 1000000000, 如果利用线段树求解的话,很明显 ...

  4. poj 2528 Mayor's posters 线段树+离散化技巧

    poj 2528 Mayor's posters 题目链接: http://poj.org/problem?id=2528 思路: 线段树+离散化技巧(这里的离散化需要注意一下啊,题目数据弱看不出来) ...

  5. POJ - 2528 Mayor's posters(dfs+分治)

    POJ - 2528 Mayor's posters 思路:分治思想. 代码: #include<iostream> #include<cstdio> #include< ...

  6. POJ.2528 Mayor's posters (线段树 区间更新 区间查询 离散化)

    POJ.2528 Mayor's posters (线段树 区间更新 区间查询 离散化) 题意分析 贴海报,新的海报能覆盖在旧的海报上面,最后贴完了,求问能看见几张海报. 最多有10000张海报,海报 ...

  7. 【POJ】1704 Georgia and Bob(Staircase Nim)

    Description Georgia and Bob decide to play a self-invented game. They draw a row of grids on paper, ...

  8. 【POJ】1067 取石子游戏(博弈论)

    Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...

  9. POJ 2528——Mayor's posters——————【线段树区间替换、找存在的不同区间】

    Mayor's posters Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Sub ...

随机推荐

  1. CentOS 6使用iostat

    iostat/mpstat/sar等命令属于sysstat程序包,所以使用yum安装sysstat即可. yum install sysstat

  2. VIM中文乱码(_vimrc配置文件备份)

    _vimrc在用户目录下: set fileencodings=ucs-bom,utf-,cp936,gb18030,big5,euc-jp,euc-kr,latin1 set encoding=ut ...

  3. 不安装oracle客户端,连接到服务器的oracle (注:针对 odp.net)

    前几天在研究怎样不安装oracle客户端去访问oracle,并把里面的数据同步到本地的Sql Server数据库中. 准备工作:首先你得有如下.dll,我这个是针对oracle10g的,如果是更高的版 ...

  4. js - get-the-value-from-the-url-parameter(可以在非模态对话框中使用)

    ref: http://stackoverflow.com/questions/979975/how-to-get-the-value-from-the-url-parameter 函数: funct ...

  5. javascript - 清空一个 array

    我觉得javascript不容易, 许多人觉得js容易, 因为他们觉得很容易写出常用的需求, 但是当我们实际做项目的时候, 对于javascript的要求是很高的, 特别是在性能需求方面. 我写这句话 ...

  6. 通过javascript,使用struts2的ognl获取JavaBean的属性.

    1)在Action中,声明一个Lock对象,并生成好setter/getter,在Action调用方法中(这里是findOnMap,需要先调用setLock方法设置好信息) private Lock ...

  7. asp.net mvc5 设置Area下的为启动页

    只需修改App_Start文件夹下RouteConfig中RegisterRoutes方法 public static void RegisterRoutes(RouteCollection rout ...

  8. GitHub中"watch" "star" "fork"三个按钮干什么用的?

    总结下一般使用:1.想拷贝别人项目到自己帐号下就fork一下.2.持续关注别人项目更新就star一下3.watch是设置接收邮件提醒的.具体提醒有Issues and their commentsPu ...

  9. 读懂IL代码(四)

    这一篇是IL系列的最后一篇的,主要是要说一下IL中的流程控制.我相信,经过前面三篇的介绍,看IL代码应该不是什么大问题了吧.好吧,闲话不多说了,就来简单的说一下吧. 还是跟前几篇一样,以例子来解释说明 ...

  10. HDU_1241 Oil Deposits(DFS深搜)

    Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...