离散化/线段树 (POJ - 2528 Mayor's posters)
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)相关推荐
- poj 2528 Mayor's posters(线段树+离散化)
1 /* 2 poj 2528 Mayor's posters 3 线段树 + 离散化 4 5 离散化的理解: 6 给你一系列的正整数, 例如 1, 4 , 100, 1000000000, 如果利用 ...
- POJ 2528 Mayor's posters(线段树)
题目大意 贴海报.每张海报的高度都是一样的,唯独宽度不一样.每张海报只能占用整数倍的单位线段长度,贴了 n(n<=10000) 张海报之后,有几张能够看见(有一个角能看见这张海报也算被看见了)? ...
- poj 2528 Mayor's posters (线段树+离散化)
/*离散化+线段树由于 数据的输入最大是 10000000 ,直接用开数组肯点会超,所以要将起离散话,首先 ,我们存储输入的边,将其离散化,后面的就和一般的线段树一样可. */#include< ...
- poj 2528 Mayor's posters(线段树 离散化 区间更新 贴海报)
这个题目本来对大神来说可能是水题, 对我就不行了,昨晚非折腾到下半夜一点 搞定, 并且可以总结出 ,只有把问题想清楚,或着看人家解题报告自己把问题和代码思路 搞清楚,才能谈的上调bug,否则 ...
- POJ 2528 Mayor's posters (离散化和线段树使用)
还是做了线段树的题目,玩了两天也要继续看看题目了.之前就有看离散化的概念,大家可以去百度百科一下,简单转载一个例子 离散化 的大概思路 : 比如说给你一组 数据 1 4 1000 100000, 如果 ...
- POJ - 2528 Mayor's posters (浮水法+线段树/离散化+线段树)
题目链接 题意: n(n<=10000)个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000) .求出最后还能看见多少张海报. 分析1 离散 ...
- POJ - 2528 Mayor's posters(线段数+离散化)
题目链接:点击查看 题目大意:给定一个长度为1e7的墙,然后给出n张海报,每张海报都会占据墙上的一部分宽度,问按照给出的次序往墙上贴海报, 最后有几张海报能露出来(露出部分也算) 题目分析:线段树的区 ...
- POJ 2528 Mayor's posters 贴海报 线段树 区间更新
注意离散化!!!线段树的叶子结点代表的是一段!!! 给出下面两个简单的例子应该能体现普通离散化的缺陷: 1-10 1-4 5-10 1-10 1-4 6-10 普通离散化算出来的结果都会是2,但是第二 ...
- poj/OpenJ_Bailian - 2528 离散化+线段树
传送门:http://bailian.openjudge.cn/practice/2528?lang=en_US //http://poj.org/problem?id=2528 题意: 给你n长海报 ...
最新文章
- Equinix 位于伦敦的LD8数据中心发生严重故障
- 无需java安装_ubuntu配置java环境-包安装文件无需下载
- navicat 怎么调试存储过程_Mysql调试存储过程最简单的方法
- django中的FBV和CBV
- 参数 中_理解JavaScript中函数的参数
- lm_license_file 冲突怎么办_【微课+语音】孩子一个多月没有上学了怎么办?
- 二叉树前序遍历、中序遍历、后序遍历 递归和非递归方式实现
- Solidity教程一
- 2021-2027全球及中国油田钻机行业研究及十四五规划分析报告
- sublime番外篇:入门者食用指北
- 2021年中国危险废物产量、处理量及回收利用量分析[图]
- FineBI 的登录锁定配置修改
- JT/T 808-2019、JT/T 809-2019文档分享
- python3 陌生的角落(1):基础语法
- 50岁的程序员该何去何从
- 【公众号】如何将公众号给他人开发
- Qt事件耦合器实现(类似C#的Prism中的事件耦合器)
- Echarts真正态分布图
- 倍福--通知方式实现ADS通信
- 【论文阅读】24-USAC: A Universal Framework for Random Sample Consensus
热门文章
- iOS开发-使用OC搭建自己的Socket 包括服务端和客服端
- 连载:大学生求职七大昏招(十九)缺少职业素养(4)
- Ranger功能验证
- [MdSQL]表的增删查改(进阶)
- 大数据时代的最大隐患——信息安全
- 计算机控制版面交换鼠标左右键,鼠标左右键怎么互换呢?左右键互换设置方法...
- dspace安装及应用
- [附源码]java毕业设计网络身份认证技术及方法
- 如何扎实的学好ABAP?我的个人经验
- jsp 自动倒数_JSP中的倒数计时器