poj 2528 Mayor's posters(线段树+区间离散化)

基于SAGE算法的宽带信道参数估计算法的MATLAB仿真 本文将介绍如何使用MATLAB进行SAGE算法的仿真,以便更好地理解和应用该算法。SAGE算法是一种基于最大期望(Expectation-Maximization)方法的迭代估计算法,用于估计未知的参数。在宽带信道参数估计中,SAGE算法通过迭代优化来估计信道的传输函数。总结起来,本文介绍了如何使用MATLAB进行基于SAGE算法的宽带信道参数提取算法的仿真。通过以上步骤,我们可以得到估计的信道响应,并与真实信道响应进行比较。此外,SAGE算法还可以与其他信道估计算法相结合,以提高估计的准确性和性能。 阅读详情

题目大意:

        有一面墙,墙上铺着瓷砖,有n张海报,每张海报是从第a块瓷砖到第b块瓷砖,从第一张海报开始贴,贴到第n张海报的时候,问有多少张海报没有被完全覆盖。

解题思路:

        从最后一张海报开始反着贴,如果当前要贴的区间没有完全被覆盖则当前这张海报可以被看见,答案加1。

        由于瓷砖有10000000块,直接使用线段树,空间耗费过大,所以使用离散化分解区间。以为最多有10000张海报,所以区间最多有个40000个,效率大大提升。

注意:

         区间离散画的时候不能只根据端点离散化,比如两组数据:

        ①[1,5] [1,2] [4,5] 

        ②[1,5] [1,3] [4,5]

        如果只按照端点离散化,这两组数据离散的结果都是[1,4] [1,2] [3,4] ,表示第一张海报被第二、第三张海报覆盖,而数据①中第一张海报没有被覆盖。

        所以在离散化的时候如果相邻两个端点间还有区间,那么也需要给这个区间编号。这也个区间为什么最多是40000的原因。

代码:

#include <iostream>
#include <stdio.h>
#include <algorithm>

using namespace std;

struct node{
    int l,r;
    bool coverd;//true代表完全覆盖,false代表没有完全覆盖
};

node tree[1600005];
int a[40005],nCount,ans,n;
int hashN[10000005];
int posterL[20005],posterR[20005];

void buildTree(int root,int l,int r){//建树
    tree[root].l = l;
    tree[root].r = r;
    tree[root].coverd = false;
    if(l != r){
        int mid = (l+r)/2;
        buildTree(2*root,l,mid);
        buildTree(2*root+1,mid+1,r);
    }
}

void post(int root,int l,int r){//把区间[l,r]标记成true,代表已经被覆盖
    if(l == tree[root].l && r == tree[root].r){
        tree[root].coverd = true;
        return;
    }
    int mid = (tree[root].l + tree[root].r)/2;
    if(r <= mid){
        post(2*root,l,r);
    }
    else if(l > mid){
        post(2*root+1,l,r);
    }
    else{
        post(2*root,l,mid);
        post(2*root+1,mid+1,r);
    }
    if(tree[2*root].coverd && tree[2*root+1].coverd){
        tree[root].coverd = true;
    }
}

bool query(int root,int l,int r){//查询区间[l,r],是否没有被完全被覆盖
    if(tree[root].coverd) return false;
    if(l == tree[root].l && r == tree[root].r){
        return !tree[root].coverd;
    }
    int mid = (tree[root].l + tree[root].r)/2;
    if(r <= mid){
        return query(2*root,l,r);
    }
    else if(l > mid){
        return query(2*root+1,l,r);
    }
    else{
        return query(2*root,l,mid) || query(2*root+1,mid+1,r);
    }
}

int main()
{
    int t;
    scanf("%d",&t);
    while(t--){
        nCount = 0;
        ans = 0;
        scanf("%d",&n);
        for(int i = 0; i < n; i ++){
            scanf("%d%d",&posterL[i],&posterR[i]);
            a[nCount++] = posterL[i];
            a[nCount++] = posterR[i];
        }
        sort(a,a+nCount);
        nCount = unique(a,a+nCount) - a;
        //区间离散化
        int nNum = 1;
        for(int i = 0; i < nCount; i ++){
            hashN[a[i]] = nNum;
            if(i < nCount - 1){
                if(a[i+1] - a[i] == 1){
                    nNum ++;
                }
                else{
                    nNum += 2;
                }
            }
        }
        buildTree(1,1,nNum);
        for(int i = n-1; i >= 0; i --){
            if(query(1,hashN[posterL[i]],hashN[posterR[i]])){
                ans ++;
            }
            post(1,hashN[posterL[i]],hashN[posterR[i]]);
        }
        printf("%d\n",ans);
    }
    return 0;
}


手把手教你学SINULINK-- --Linear Transformer 模块 模块是 Simulink 中用于模拟理想变压器行为的重要工具。通过本文的详细介绍,希望你能更好地理解和使用模块。 阅读详情

相关推荐

保姆级教程:用Cadence Sigrity Power DC搞定HI3516A板卡电源压降仿真(含常见报错解决)

本文提供了一份详细的Cadence Sigrity Power DC直流压降仿真教程,特别针对HI3516A板卡设计。从环境准备、器件建模到仿真执行和结果解读,全面覆盖了电源完整性分析的关键步骤,并提供了常见报错的解决方案,帮助工程师快速掌握直流压降分析技术。

weixin_42569329的博客 322

【线段树】poj 2528 Mayor's posters

需进行离散化,从后往前进行覆盖扫描。 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include

BananaTree 664

Penpot自托管全攻略:5分钟搞定私有化部署(附Docker配置详解)

本文详细介绍了Penpot开源原型设计工具的私有化部署全流程,从Docker基础配置到企业级优化方案。通过分步指南和实战技巧,帮助设计团队快速搭建安全高效的自托管环境,实现数据自主可控。内容涵盖LDAP集成、性能监控、备份策略等关键企业需求,是Penpot私有化部署的完整参考手册。

sugar的博客 1132

离散化+线段树+涂颜色(D-市长海报)

题目链接 AB拜特敦的公民无法忍受市长竞选活动中的候选人随心所欲地在所有地方张贴他们的选举海报。市议会最终决定为张贴海报修建一堵选举墙,并实行以下规则: 每个候选人都可以在墙上贴上一张海报。 所有海报的高度等于墙的高度;海报的宽度可以是任意整数字节数(字节是Bytetown中的长度单位)。 墙被分成几个段,每个段的宽度是一个字节。 每一张海报必须完全覆盖一定数量的连续墙段。 他们建造了...

小糊涂的博客 551

【PLIO学习总结】laserMapping中的时间戳与状态更新逻辑

本文仅用于个人学习总结记录。如有错误,请批评指正。

larrydong的博客 1646

Qt上位机实战:5步搞定STM32 IAP固件升级(附拖拽文件处理技巧)

本文详细介绍了如何使用Qt开发STM32 IAP固件升级上位机。通过五个核心步骤,包括理解IAP机制、搭建Qt环境、实现拖拽文件加载、封装串口通信以及设计可靠通信协议,帮助开发者快速构建一个稳定、易用且支持图形化操作的固件升级工具,显著提升嵌入式产品开发与维护效率。

ss78901的博客 1073

线段树------贴海报

今天做了一道看起来不像线段树的题,但是确实是。 题目大致如下: 贴海报,贴的时候往左上角贴,给出区域h*w,而海报的高度默认为1,给出宽度w,问能贴到的最高的位置在哪一行。 思路: 没想到这道题竟然可以用线段树解决。 要找到最靠上的海报只需要查询一次线段树就好了,从根节点往下走,如果左子树的可用的最大长度满足就往左走,否则往右走。 附上代码: #include   #includ

20164225的博客 791

Claude Code 安装指南(Windows / macOS)

本文介绍了Claude Code的安装准备和基本流程。作为开发者工具,安装前需具备命令行操作能力、可用的Claude账号和稳定网络环境。Windows和macOS的安装都需通过终端完成,安装后以命令行形式运行。首次使用建议在熟悉项目中执行简单任务,逐步建立使用习惯。强调安装只是开始,后续需学习如何有效使用工具,包括任务提交流程和上下文提供方法。核心要点是:Claude Code是开发者工具,网络和终端环境是关键,建议先运行再深入理解。

sg_knight的专栏 4482

线段树个人总结

从2.10到2.17,线段树已经断断续续的刷了七天了。刷题计划是根据http://www.notonlysuccess.com/index.php/segment-tree-complete/comment-page-3/#comment-5250来的,不过只刷了相对代表性的题目。线段树的应用十分灵活,以后还要继续。这里写一写个人做题的总结,方便以后复习用。 总体上线段树的题目共分为4部分,单点

1208

A100 NVLink集群极致优化指南

《A100 NVLink集群通信优化指南》摘要:针对A100 80G SXM机型NVLink 3.0集群,提供硬件配置检查方法(nvidia-smi topo -m)和强制启用指令。重点介绍NCCL参数调优(算法选择、低延迟协议配置)、GPUDirect RDMA启用步骤,以及单机/多机场景下的通信模式选择。包含PyTorch all_reduce基准测试方法,并给出带宽异常排查方案(dmesg检查、NCCL缓存重置)。通过CUDA Graph通信重叠和混合精度优化,可实现90%+带宽利用率。附猿界算力监控

2401_89353317的博客 583

[网络安全提高篇] 一二九.Powershell恶意代码检测 (5)混淆和反混淆 [上]

前文介绍了如何利用MS Defender实现恶意样本家族批量标注。这篇文章将继续讲解Powershell恶意代码检测,主要包括PowerShell混淆与反混淆内容,首先结合Invoke-Obfuscation工具详细介绍PowerShell代码混淆方法,再结合PowerDecode工具阐述解混淆方法。该研究将为后续的恶意软件家族分类或溯源提供帮助。未完待续,基础性文章,希望您喜欢,且看且珍惜。

杨秀璋的专栏 1535

线段树练习题一【线段树】

>Description 桌子上零散地放着若干个盒子,桌子的后方是一堵墙。如右图所示。现在从桌子的前方射来一束平行光, 把盒子的影子投射到了墙上。问影子的总宽度是多少? >Input 第一行输入一个整数n,表示桌面总宽度 第二行输入一个整数m,表示盒子数量 接下来m行,每行输入两个数x,y,表示第i个盒子的起始位置和终止位置 >Output 阴影宽度 >Sample ...

//(^ o ^)// 229

基于FPGA的多级CIC滤波器实现四倍插值

基于FPGA的多级CIC滤波器实现四倍插值 原文链接:基于FPGA的多级CIC滤波器实现四倍插值 在《基于FPGA的多级CIC滤波器实现四倍抽取一》和《基于FPGA的多级CIC滤波器实现四倍抽取二》中我们先来了解滑动平均滤波器、微分器、积分器以及梳状滤波器原理以及它们的幅频响应。此篇我们将用verilog实现基于FPGA的多级CIC滤波器实现四倍插值。 1 CIC滤波器的基本概述 CIC(积分梳状...

baidu_34971492的博客 3141

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

POJ.2528 Mayor’s posters (线段树 区间更新 区间查询 离散化)题意分析贴海报,新的海报能覆盖在旧的海报上面,最后贴完了,求问能看见几张海报。最多有10000张海报,海报左右坐标范围不超过10000000。 一看见10000000肯定就要离散化了,因为建树肯定是建不下。离散化的方法是:先存到一个数组里面,然后sort,之后unique去重,最后查他离散化的坐标lower_bo

Pengwill's Blog 332

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

POJ2528 Mayor's posters 线段树区间更新+离散化

题目链接:http://poj.org/problem?id=2528 题目大意:一个长度为10^7的墙上有n张海报,可能相互重叠,告诉你每张海报的宽度(高度都一样)和先后的叠放次序,问没有被完全盖住的海报有多少张(海报端点不会落在瓷砖中间)。 分析:如果每个叶子节点都代表一块瓷砖,那么线段树会导致MLE,即单位区间的数目太多。实际上,由于最多有1W张海报,共计2W个端点,这些

AC_Gibson的专栏 545

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

POJ2528: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. The city council

ACM!荣耀之路! 7869

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

poj 2528 Mayor's posters(线段树区间覆盖、离散化)

Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 49385   Accepted: 14304 Description The citizens of Bytetown, AB, could not stand that the cand

hahahaha 1696

POJ 2528 Mayor's posters 【离散化+线段树区间覆盖】

题目链接:http://poj.org/problem?id=2528 思路: 这里着重讲讲离散化的方式。离散化的方式是根据题目意思来选择的,不同的题目会有不同的离散化方式。 这里题目要求的是在n次区间覆盖过后,求没被覆盖的海报有多少个; 题目给出可能的区间多达 1e7 ,如果用线段树的区间覆盖就需要开 4倍的空间,因为题目给出的空间有限,直接就用线段树显然是不行的。 我们先从结果开始考虑...

Y390d的博客 376

POJ 2528 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. The city counci

Must so 1072

POJ 2528 Mayor's posters(线段树区间修改+离散化)

题目链接:点击打开链接 题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报。 该题是线段树区间修改+离散化的应用。 不难想到, 每次对一个最长10^7的线段进行线段树的区间修改, 最后统计。 线段树的复杂度是log10^7, 应该不会超时, 但是会超内存。 所以想到要离散化, 将区间端点值有映射成一个尽量小的值。 但是该题求的是覆盖情况, 如果按照单纯的点对点的离散化, 那

AC_Arthur的专栏 1555

【详解】Mayor's posters POJ - 2528(线段树 区间染色 离散化) ⭐⭐⭐⭐

Mayor’s posters POJ - 2528 n(n<=10000) 个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000) 。求出最后还能看见多少张海报。 Input 第一行: 样例个数T 第二行: 贴海报的人n 第三行: 每个人贴海报的范围 接下来n行: 每个人贴海报的范围 Output 对于每一个输入,输出最后可以看到的海报...

Suprit's blog 926

POJ 2528 Mayor's posters 线段树 离散化 区间覆盖

题意:给一个无限长的板子,按序在上面贴海报,求出最后能看到的海报的数量 思路:区间覆盖:把对应区间的值替换为当前值。 之前的线段树节点存储的要么是区间最值,要么是区间和,这个问题则存储的是当前被覆盖的值。由于题目给的数据量太大(1e7),故需要进行离散化操作。 离散化:只保存元素之间对应的关系,不去关注元素的具体值。这个题目的离散化还有一个坑点,就是当两个区间之间有空时,不会去计算之间空的那块区域...

qq_42397248的博客 198

POJ 2528 Mayor's posters (区间离散化、线段树区间染色)

题意: 贴海报 后贴的会覆盖前面 求从Front能看到几张海报 分析: 区间离散化之后 就是一个裸的区间染色啦 套用线段树区间更新就可以搞啦 代码: // // Created by TaoSama on 2015-09-16 // Copyright (c) 2015 TaoSama. All rights reserved. // //#pragma comment(link

TaoSama's Microcosm 764

POJ2528 Mayor's posters【离散化+线段树区间修改】

Mayor's posters http://poj.org/problem?id=2528 Time Limit:1000MS Memory Limit:65536K Total Submissions:83540 Accepted:23993 Description The citizens of Bytetown, AB, could n...

逐梦者 282

POJ 2528 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. The city counci

terry_sdy的博客 347

POJ2528 Mayor's posters 线段树区间更新+离散化

POJ2528 Mayor's posters 线段树区间更新+离散化

qq_44919369的博客 184
上一篇: poj 3468 A Simple Problem with Integers(线段树+lazy)
下一篇: poj 1151 Atlantis(线段树+离散化+扫描线)
accelerator_2016
博客等级 码龄11年 3粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值