hiho #1079 离散化

zoj 2112 Dynamic Rankings 带修改区间第k大的几种解法 给出n个数,有两种操作,一种是修改某个数的值,另一种查询指定区间第k大。 比较快的做法是树套树,而分块算法复杂度比较高写起来方便。分块算法可以很简单的处理单独修改某个值的情况。 将n个数分成num块,每块大小siz=n/num。每一块内部排序进行排序,查询[l,r]第k大时,先二分答案,对于完全包含在区间的内块直接二分搜索,而对于区间两端只有部分包含的则直接遍历查找。复杂度是logn*(2*s 阅读详情

#1079 : 离散化

时间限制: 10000ms
单点时限: 1000ms
内存限制: 256MB
描述

小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~

这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报就会被其他社团的海报所遮挡住。看到这个场景,小Hi便产生了这样的一个疑问——最后到底能有几张海报还能被看见呢?

于是小Ho肩负起了解决这个问题的责任:因为宣传栏和海报的高度都是一样的,所以宣传栏可以被视作长度为L的一段区间,且有N张海报按照顺序依次贴在了宣传栏上,其中第i张海报贴住的范围可以用一段区间[a_i, b_i]表示,其中a_i, b_i均为属于[0, L]的整数,而一张海报能被看到当且仅当存在长度大于0的一部分没有被后来贴的海报所遮挡住。那么问题就来了:究竟有几张海报能被看到呢?

提示一:正确的认识信息量

提示二:小Hi大讲堂之线段树的节点意义

输入

每个测试点(输入文件)有且仅有一组测试数据。

每组测试数据的第1行为两个整数N和L,分别表示总共贴上的海报数量和宣传栏的宽度。

每组测试数据的第2-N+1行,按照贴上去的先后顺序,每行描述一张海报,其中第i+1行为两个整数a_i, b_i,表示第i张海报所贴的区间为[a_i, b_i]。

对于100%的数据,满足N<=10^5,L<=10^9,0<=a_i<b_i<=L。

输出

对于每组测试数据,输出一个整数Ans,表示总共有多少张海报能被看到。

样例输入
5 10
4 10
0 2
1 6
5 9
3 4
样例输出
5
首先L的范围太大,需要对区间进行离散化,使范围变到O(n)内。每次贴一张海报,在对应区间覆盖上海报的编号,最后看一共剩下多少个不同的编号。

需要注意的是[1,2],[2,3],[3,4]是算3张海报,因为海报实际上是一个连续的区间,所以下标为i对应的是[i,i+1]的区间。所以对于区间[a,b],线段树更新的节点范围是[a,b-1]。然后用线段树求解,每次贴海报进行O(logn)区间更新,用data数组存储对应区间的海拔编号,最后全部海报贴完后还要对线段树进行一次O(n)遍历使所有的lazy值更新到每一个位置上。



#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>

using namespace std;

#define maxn 100005

int a[maxn], b[maxn];
int c[2*maxn];

int n, l;

int compress() //坐标离散化
{
    memcpy(c, a, sizeof(a));
    memcpy(c+n, b, sizeof(b));

    sort(c, c+2*n);
    int size = unique(c, c+2*n)-c;

    for(int i = 0; i < n; i++){
        a[i] = lower_bound(c, c+size, a[i])-c;
        b[i] = lower_bound(c, c+size, b[i])-c;
    }

    return size-1;
}

struct node
{
    node(){}
    node(int ll, int rr) { l = ll;  r = rr;}
    int l, r;
    int lazy;
};

node tree[4*maxn];
int data[maxn]; //存储对应区间海报编号

void build(int rt, int l, int r)
{
    tree[rt] = node(l, r);
    tree[rt].lazy = 0;
    if(l == r) return;

    int m = l+(r-l)/2;
    build(2*rt, l, m);
    build(2*rt+1, m+1, r);
}


void seg_modify(int rt, int ll, int rr, int v)
{
    int l = tree[rt].l, r = tree[rt].r;
    int &lazy = tree[rt].lazy;
    int lc = 2*rt, rc = 2*rt+1;

    if(l == ll && r == rr){     //懒惰更新
        lazy = v;
        return;
    }
    else{
        if(lazy){
            tree[lc].lazy = lazy;
            tree[rc].lazy = lazy;

            lazy = 0;
        }
    }

    int m = l+(r-l)/2;
    if(rr <= m)
        seg_modify(lc, ll, rr, v);
    else if(ll > m)
        seg_modify(rc, ll, rr, v);
    else{
        seg_modify(lc, ll, m, v);
        seg_modify(rc, m+1, rr, v);
    }

}

void traverse(int rt)   //遍历线段树,使所有懒惰值真正赋值到data数组上
{
    int l = tree[rt].l, r = tree[rt].r;
    int lc = 2*rt, rc = 2*rt+1;
    if(l == r){
        data[l] = tree[rt].lazy;
        return;
    }

    if(tree[rt].lazy){
        tree[lc].lazy = tree[rt].lazy;
        tree[rc].lazy = tree[rt].lazy;
    }

    traverse(lc);
    traverse(rc);
}

int main()
{
    while(~scanf("%d%d", &n, &l)){
        for(int i = 0; i < n; i++)
            scanf("%d%d", a+i, b+i);

        l = compress();
        build(1, 0, l-1);

        for(int i = 0; i < n; i++)
            seg_modify(1, a[i], b[i]-1, i+1);
        traverse(1);


        sort(data, data+l);
        int ans = unique(data, data+l)-data;
        if(!data[0]) ans--;
        printf("%d\n", ans);
    }
    return 0;
}




kmp求字符串最小周期 总时间限制: 3000ms 内存限制: 65536kB 描述 给定两个字符串a和b,我们定义a*b为他们的连接。例如,如果a=”abc” 而b=”def”, 则a*b=”abcdef”。 如果我们将连接考虑成乘法,一个非负整数的乘方将用一种通常的方式定义:a^0=””(空字符串),a^(n+1)=a*(a^n)。 输入每一个测试样例是一行可打印的字符作为输入,用s表示。s 阅读详情

相关推荐

AutoSAR实战:手把手教你配置PNC(Partial Network Cluster)实现精准休眠与唤醒

本文详细介绍了如何在AutoSAR中配置PNC(Partial Network Cluster)实现精准休眠与唤醒,通过DaVinci Configurator工具逐步指导,结合ComM模块的协同调试,优化车载电子系统的能耗管理。文章包含实战步骤、常见错误排查及功耗优化数据,适合汽车电子开发工程师参考。

weixin_33725239的博客 466

hihoCoder #1079 离散化

P1 : 离散化 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB 描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报就会被其他...

weixin_30918633的博客 251

2025东三省D题深圳杯数学建模实战解析:基于多模型融合的法医STR混合样本智能识别系统

本文深入解析了2025年东三省数学建模竞赛D题,即深圳杯赛题,聚焦于法医STR混合样本的智能识别挑战。文章系统阐述了构建一个基于多模型融合的智能识别系统的完整流程,涵盖贡献者人数判定、DNA贡献比例估计、个体基因型推断以及STR谱图去噪四大核心步骤。通过融合高斯混合模型、随机森林、非负矩阵分解、小波变换与深度学习等多种技术,并强调特征工程的重要性,为破解法医DNA混合样本分析这一行业难题提供了清晰的数学建模与AI实战思路。

weixin_29050271的博客 391

hiho刷题日记——第二十一天离散化

题目因为宣传栏和海报的高度都是一样的,所以宣传栏可以被视作长度为L的一段区间,且有N张海报按照顺序依次贴在了宣传栏上,其中第i张海报贴住的范围可以用一段区间[a_i, b_i]表示,其中a_i, b_i均为属于[0, L]的整数,而一张海报能被看到当且仅当存在长度大于0的一部分没有被后来贴的海报所遮挡住。那么问题就来了:究竟有几张海报能被看到呢? 对于100%的数据,满足N<=10^5,L<=10

AngcFun的博客 574

优化QT QML中RTSP流播放延迟:海康摄像头实时监控实践

本文详细探讨了在QT QML中优化海康摄像头RTSP流播放延迟的实践方法。通过调整MediaPlayer缓冲策略、硬件加速、解码器优选等五大技巧,显著降低实时监控场景下的延迟问题。文章还提供了海康摄像头RTSP连接实战代码和避坑指南,帮助开发者快速实现高效流媒体播放。

weixin_28363123的博客 556

GD32 I2C中断通信实战:主机与从机高效数据交换方案

本文详细解析了GD32微控制器I2C中断通信的实战方案,通过配置I2C0为主机、I2C1为从机,实现高效的双向数据交换。文章深入剖析了中断服务程序(ISR)的核心配置、关键状态标志位处理以及事件驱动机制,帮助开发者避免常见陷阱,提升系统响应速度与资源利用率,适用于传感器连接、多机通信等嵌入式场景。

cream的博客 846

HIHO #1079 : 离散化(线段树+离散化)

题目链接 在线段树的通常用法中,线段树的节点是有2种不同的意义的,一种是离散型的,比如在Hiho一下 第二十周中,一个节点虽然描述的是一个区间[3, 9],但是实际上这样一个区间是{3, 4, 5, 6, 7, 8, 9}这样的意义。而另一种就是连续型的,比如就在这一周的问题中,一个节点如果描述的是一个区间[3, 9],它就确确实实描述的是在数轴上从3这个标记到9这个标记的这一段。 那

qwesde 585

【电源专题】案例:对比不同电池在不同电流下的电池放电曲线

无

一点硬件 2840

hiho_1079_离散化

题目     在长度为L的宣传栏上张贴N张海报,将宣传栏分为L个长度为1的单位,海报长度为整数,且高度和宣传栏相同,左右边界和宣传栏单位之间缝隙重合(即海报总是跨越整数个单位)。后贴的海报可能会覆盖之前贴的海报的全部或者部分,问N张海报贴完之后,没有被完全覆盖的海报的总数。N &lt;= 10^6, L &lt;= 10^9. 分析     区间覆盖问题,会想到用线段树来解决,直观的将L个单...

weixin_33965305的博客 138

Open3D 使用RANSAC分割平面【2026最新版】

使用RANSAC从点云中分割平面,用segement_plane函数。博客长期更新,本文最新更新时间为:2026年2月28日。

点云侠的博客 37万+

统计学习导论(ISLR) 第四章分类算法课后习题

统计学习导论(ISLR) 参考资料: The Elements of Statistical Learning An Introduction to Statistical Learning 统计学习导论(ISLR)(二):统计学习概述 统计学习导论(ISLR)(三):线性回归 统计学习导论(ISLR)(四):分类 ISLR统计学习导论之R语言应用(二):R语言基础 ISLR统计学习导论之R语言应用(三):线性回归R语言代码实战 ISLR统计学习导论之R语言应用(四):分类算法R语言代码实战 统计学习导论

阿里云专家博主、数据科学领域优质创作者、统计er在读 2万+

hiho1079 : 离散化(线段树+区间离散化)

#1079 : 离散化 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报就会被其他社团的海报所遮挡住。看到这个场景,小Hi便

苏苏爱自由 3314

SDA 还是 SDI:SAP HANA 数据虚拟化与数据集成的取舍、组合与实战

结论先放在前面:SDA 面向数据虚拟化与联邦查询,强调不落地、不复制、按需实时访问;SDI 面向数据集成与复制,强调抽取、转换、装载与近实时增量同步。两者共享 Remote Source 与 Adapter 的理念,但侧重点与运行时组件明显不同。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 584

[hiho]#1079 : 离散化 线段树

描述:(原题地址:http://hihocoder.com/problemset/problem/1079?sid=601532) 给定一个区间0~L,以及N条线段(li, ri),这N条线段按照输入顺序覆盖到0~L区间。0 问最后有几条线段没有被完全覆盖? 算是线段树的另一种使用,虽然标题是离散化,但其实是连续区间下使用线段树。中间还有一些小问题要处理,就是线段树的边界问题。离散情况下,线

剑心琴魄 631

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

hiho #1079 : 离散化

描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报就会被其他社团的海报所遮挡住。看到这个场景,小Hi便产生了这样的一个疑问——最后到底能有几张海报还能被看见呢? 于是小Ho肩负起了解决这个问题的责任:因为宣传栏和海报的高度都是一样的,所以宣...

weixin_30558305的博客 109

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

hiho一下第二十一周 #1079 : 离散化 【线段树储存区间状态】

#include #include #include using namespace std; int n,m,zuo[100100],you[100100]; struct node{ int hao,shu; }yy[200200]; struct node1{ int hao,shu; }yyy[200200]; bool cmp(node xx,node yy) { return x

leibniz_zhang的博客 671

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

hihocoder1079(线段树+离散化)

时间限制:10000ms 单点时限:1000ms 内存限制:256MB描述小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报就会被其他社团的海报所遮挡住。看到这个场景,小Hi便产生了这样的一个疑问——最后到底能有几张海报还能被看见呢?于是小Ho肩负起了解决

averyboy的博客 832

hihoCoder 1079 离散化

#include #include #include using namespace std; const int N = 100010; bool poster[N]; struct Interval{ int l,r; }intervals[N]; struct point{ int num,id; }points[N<<1]; struct node{

piaocoder 523

hihoCoder - 1079 - 离散化 (线段树 + 离散化)

#1079 : 离散化 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报就会被其他社团的海报所遮挡住。看到这个场景,小Hi便

Never say never 1154

hihcoder #1079 离散化 线段树+区间离散化

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报就会被其他社团的海报所遮挡住。看到这个场景,小Hi便产生了这样的一个疑问——最后到底能有几张海

Marcus-Bao的个人主页 1313

hihoCoder1079 线段树+离散化

线段树+离散化 #1079 : 离散化 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报就会被其他社团的海报所遮挡

Dave_lzw的博客 578

poj 2528 Mayor's posters 线段树+离散化 || hihocode #1079 离散化

Mayor's posters Description The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign have been placing their electoral posters at all places at their whim. ...

weixin_30279751的博客 106

hihoCoder1079 离散化 优先队列+贪心

描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报就会被其他社团的海报所遮挡住。看到这个场景,小Hi便产生了这样的一个疑问——最后到底能有几张海报还能被看见呢? 于是小Ho肩负起了解决这个问题的责任:因为宣传栏和海报的高度都是一

luke2834的专栏 607

主席树(可持久化线段树)入门专题

1.poj 2104 查询区间第k小。 主席树其实相当于建立了n棵线段树,第i棵线段树是根据区间【1,i】按值建立的。对于每一棵线段树我们记录它对应的区间每个数出现的次数,所以首先要对所有的数离散化。 先考虑最简单的情况,只查询【1,n】的第k小,对于【1,n】我们按值建立一棵线段树,对于a[i]我们在位置a[i]上加1。查询第k小那么先看左子区间出现了多少个数cnt,假设左区间出现的数cnt

写东西的地方 6180

单调队列的应用

描述 给定一个长度为n(n 下面是一个例子: 数组是 [1 3 -1 -3 5 3 6 7], k = 3。 窗口位置 最小值 最大值 [1  3  -1] -3  5  3  6  7  -1 3  1 [3  -1  -3] 5  3  6  7  -3 3  1  3 [-1  -3  5] 3  6  7

写东西的地方 2391

SPOJ COT2 树上的莫队算法,树上区间查询

题意:n个节点形成的一棵树。每个节点有一个值。m次查询,求出(u,v)路径上出现了多少个不同的数。 树上的莫队算法,同样将树分成siz=sqrt(n)块,然后离线操作。先对树dfs一遍,每当子树节点个数num>=siz,就将这num个分成一块。读取所有的查询按左端点所在块排序。 重点在于怎么进行区间转移,对路径的lca特殊处理,参考博客http://blog.youkuaiyun.com/kuribohg

写东西的地方 2277
上一篇: poj 2549 双向搜索
下一篇: hiho #1080 : 更为复杂的买卖房屋姿势 线段树区间更新
HuanTongH
博客等级 码龄12年 7粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值