Mayor's posters https://vjudge.net/problem/POJ-2528#author=szdytom

线段树 + 离散化

讲解:https://blog.csdn.net/qq_35802619/article/details/98326267

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define sc(n) scanf("%c",&n)
#define sd(n) scanf("%d",&n)
#define pd(n) printf("%d\n", (n))
#define sdd(n,m) scanf("%d %d",&n,&m)
#define pdd(n,m) printf("%d %d\n",n, m)
#define ms(a,b) memset(a,b,sizeof(a))
#define all(c) c.begin(),c.end()typedef long long ll;
const int maxn = 2e5 + 5;//数组注意别开小了struct node {int l, r, gg;
}tr[maxn << 2 + 5];
int lg[maxn], rg[maxn];
int lisan[maxn];
int cnt, ans;
bool book[maxn];void build(int p, int l, int r) {tr[p].l = l, tr[p].r = r;if (l == r) {tr[p].gg = 0; return;}int m = (l + r) >> 1;build(p << 1, l, m);build(p << 1 | 1, m + 1, r);tr[p].gg = 0;
}void spread(int q) {if (tr[q].gg == 0) return;tr[q << 1].gg = tr[q].gg;tr[q << 1 | 1].gg = tr[q].gg;tr[q].gg = 0;
}void update(int q, int l, int r, int v) {if (l <= tr[q].l && r >= tr[q].r) {tr[q].gg = v; return;}spread(q);int m = (tr[q].l + tr[q].r) >> 1;if (l <= m) update(q << 1, l, r, v);if (r > m) update(q << 1 | 1, l, r, v);
}void ask(int q, int l, int r)
{if (tr[q].gg && !book[tr[q].gg]){ans++;book[tr[q].gg] = 1;return;}if (l == r) return;spread(q);int mid = (l + r) >> 1;ask(q << 1, l, mid);ask(q << 1 | 1, mid + 1, r);
}int main() {//freopen("in.txt", "r", stdin);//ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int t, n; sd(t);while (t--) {cnt = 0; ms(book, false); sd(n);for (int i = 0; i < n; ++i) {sdd(lg[i], rg[i]);lisan[cnt++] = lg[i];lisan[cnt++] = rg[i];}//离散化sort(lisan, lisan + cnt);int m = unique(lisan, lisan + cnt) - lisan;int t0 = m;for (int i = 1; i <= m; ++i)if (lisan[i] - lisan[i - 1] > 1)lisan[t0++] = lisan[i - 1] + 1;sort(lisan, lisan + t0);build(1, 1, t0);for (int i = 0; i < n; ++i) {int x = lower_bound(lisan, lisan + t0, lg[i]) - lisan + 1;int y = lower_bound(lisan, lisan + t0, rg[i]) - lisan + 1;//  cout <<x << " " << y << endl;update(1, x, y, i + 1);}ans = 0;ask(1, 1, t0);printf("%d\n", ans);}return 0;
}

离散化/线段树 (POJ - 2528 Mayor's posters)相关推荐

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

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

  2. POJ 2528 Mayor's posters(线段树)

    题目大意 贴海报.每张海报的高度都是一样的,唯独宽度不一样.每张海报只能占用整数倍的单位线段长度,贴了 n(n<=10000) 张海报之后,有几张能够看见(有一个角能看见这张海报也算被看见了)? ...

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

    /*离散化+线段树由于 数据的输入最大是 10000000 ,直接用开数组肯点会超,所以要将起离散话,首先 ,我们存储输入的边,将其离散化,后面的就和一般的线段树一样可. */#include< ...

  4. poj 2528 Mayor's posters(线段树 离散化 区间更新 贴海报)

         这个题目本来对大神来说可能是水题, 对我就不行了,昨晚非折腾到下半夜一点 搞定, 并且可以总结出 ,只有把问题想清楚,或着看人家解题报告自己把问题和代码思路 搞清楚,才能谈的上调bug,否则 ...

  5. POJ 2528 Mayor's posters (离散化和线段树使用)

    还是做了线段树的题目,玩了两天也要继续看看题目了.之前就有看离散化的概念,大家可以去百度百科一下,简单转载一个例子 离散化 的大概思路 : 比如说给你一组 数据 1 4 1000 100000, 如果 ...

  6. POJ - 2528 Mayor's posters (浮水法+线段树/离散化+线段树)

    题目链接 题意: n(n<=10000)个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000) .求出最后还能看见多少张海报. 分析1 离散 ...

  7. POJ - 2528 Mayor's posters(线段数+离散化)

    题目链接:点击查看 题目大意:给定一个长度为1e7的墙,然后给出n张海报,每张海报都会占据墙上的一部分宽度,问按照给出的次序往墙上贴海报, 最后有几张海报能露出来(露出部分也算) 题目分析:线段树的区 ...

  8. POJ 2528 Mayor's posters 贴海报 线段树 区间更新

    注意离散化!!!线段树的叶子结点代表的是一段!!! 给出下面两个简单的例子应该能体现普通离散化的缺陷: 1-10 1-4 5-10 1-10 1-4 6-10 普通离散化算出来的结果都会是2,但是第二 ...

  9. poj/OpenJ_Bailian - 2528 离散化+线段树

    传送门:http://bailian.openjudge.cn/practice/2528?lang=en_US //http://poj.org/problem?id=2528 题意: 给你n长海报 ...

最新文章

  1. Equinix 位于伦敦的LD8数据中心发生严重故障
  2. 无需java安装_ubuntu配置java环境-包安装文件无需下载
  3. navicat 怎么调试存储过程_Mysql调试存储过程最简单的方法
  4. django中的FBV和CBV
  5. 参数 中_理解JavaScript中函数的参数
  6. lm_license_file 冲突怎么办_【微课+语音】孩子一个多月没有上学了怎么办?
  7. 二叉树前序遍历、中序遍历、后序遍历 递归和非递归方式实现
  8. Solidity教程一
  9. 2021-2027全球及中国油田钻机行业研究及十四五规划分析报告
  10. sublime番外篇:入门者食用指北
  11. 2021年中国危险废物产量、处理量及回收利用量分析[图]
  12. FineBI 的登录锁定配置修改
  13. JT/T 808-2019、JT/T 809-2019文档分享
  14. python3 陌生的角落(1):基础语法
  15. 50岁的程序员该何去何从
  16. 【公众号】如何将公众号给他人开发
  17. Qt事件耦合器实现(类似C#的Prism中的事件耦合器)
  18. Echarts真正态分布图
  19. 倍福--通知方式实现ADS通信
  20. 【论文阅读】24-USAC: A Universal Framework for Random Sample Consensus

热门文章

  1. iOS开发-使用OC搭建自己的Socket 包括服务端和客服端
  2. 连载:大学生求职七大昏招(十九)缺少职业素养(4)
  3. Ranger功能验证
  4. [MdSQL]表的增删查改(进阶)
  5. 大数据时代的最大隐患——信息安全
  6. 计算机控制版面交换鼠标左右键,鼠标左右键怎么互换呢?左右键互换设置方法...
  7. dspace安装及应用
  8. [附源码]java毕业设计网络身份认证技术及方法
  9. 如何扎实的学好ABAP?我的个人经验
  10. jsp 自动倒数_JSP中的倒数计时器