UVA 11983 Weird Advertisement (线段树扫描线)

量化交易新手入门:从零开始搭建你的第一个Python交易策略(附完整代码) 本文为量化交易新手提供从零开始搭建Python双均线策略的完整指南,涵盖环境配置、数据获取、策略实现及风险管理等关键步骤。通过详细的代码示例和实践建议,帮助读者快速掌握量化交易的核心技术,并避免常见陷阱。文章特别强调Python在量化交易中的技术革新优势,适合希望进入金融科技领域的初学者。 阅读详情

题意:

现在在坐标系上,画正方形,问重叠k次及以上的区域里面有几个点(都在第一象限)

思路:

扫描线比较有意思的一个题目
首先,要把计算点个数变成计算面积,我们把一个点看成一个格子,因为都在第一象限,那么只要把每个长方形右上角的坐标各加一即可,这样计算出的面积就是答案了
现在的问题就成了如何计算k次及以上的面积了,首先我们不可能不断地pushdow来更新区域面积,肯定会T。我们发现题目中k最大只有10,然后我们就能想到,我们计算被覆盖了某个次数的面积,是可以由lazy(记录的是该区间覆盖了几次)和其他次数的面积推导过来的(比如我左儿子覆盖了2次,我的lazy为2,那么我覆盖4次的面积就能算出来了)
我们就可以开个线段树,segtree[rt][i]表示rt所表示的这个区间,覆盖i次的面积,因为题目要求是k次及以上,所以我们可以把k以上的都表示为k,这样计算答案的时候更方便

错误及反思:

uva是linux的,所以要lld

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
const int N =30005;
vector<int> v;
int segtree[N*8][11];
int lazy[N*8];
int T,n,k;
struct LINE{
    int x1,x2,y,flag;
}line[N*2];

int get_id(int x){ return lower_bound(v.begin(),v.end(),x)-v.begin();}
bool cmp(LINE w,LINE e){ return w.y<e.y;}

void build(int l,int r,int rt)
{
    segtree[rt][0]=v[r+1]-v[l];
    if(l==r)
        return ;
    int m=(l+r)/2;
    build(lson);
    build(rson);
}
void pushup(int l,int r,int rt)
{
    memset(segtree[rt],0,sizeof(segtree[rt]));
    if(l==r)
        segtree[rt][min(k,lazy[rt])]=v[r+1]-v[l];
    else
    {
        for (int i = 0; i <= k; i++)
            segtree[rt][min(k,i+lazy[rt])] += segtree[rt<<1][i] + segtree[rt<<1|1][i];
    }
}
void update(int L,int R,int v,int l,int r,int rt)
{
    if(L<=l&&R>=r)
    {
        lazy[rt]+=v;
        pushup(l,r,rt);
        return ;
    }
    int m=(l+r)/2;
    if(L<=m) update(L,R,v,lson);
    if(R>m) update(L,R,v,rson);
    pushup(l,r,rt);
}
int main()
{
    scanf("%d",&T);
    for(int I=1;I<=T;I++)
    {
        scanf("%d%d",&n,&k);
        for(int i=0;i<n;i++)
        {
            scanf("%d%d%d%d",&line[i*2].x1,&line[i*2].y,&line[i*2].x2,&line[i*2+1].y);
            line[i*2+1].y++;
            line[i*2].x2++;
            line[i*2+1].x1=line[i*2].x1;
            line[i*2+1].x2=line[i*2].x2;
            line[i*2].flag=1;
            line[i*2+1].flag=-1;
            v.push_back(line[i*2].x1);
            v.push_back(line[i*2].x2);
        }
        sort(line,line+n*2,cmp);
        sort(v.begin(),v.end()),v.erase(unique(v.begin(),v.end()),v.end());
        memset(lazy,0,sizeof(lazy));
        build(0,v.size()-1,1);
        long long ans=0;
        for(int i=0;i<n*2;i++)
        {
            if(i) ans+=1ll*(line[i].y-line[i-1].y)*segtree[1][k];
            update(get_id(line[i].x1),get_id(line[i].x2)-1,line[i].flag,0,v.size()-1,1);
        }
        printf("Case %d: %lld\n",I,ans);
        v.clear();
    }
}
Open3D——直通滤波(python详细过程版)【2025最新版】 python就一个字:强。博客长期更新,本文最近更新时间为:2025年1月11日。 阅读详情

相关推荐

AD9361快速锁定实战:Profile寄存器配置与频率调谐算法解析

本文深入解析了AD9361射频收发器的快速锁定(Fast Lock)功能,重点阐述了其核心机制——Profile寄存器配置。通过剖析16字节Profile结构,详细讲解了频率调谐算法,包括LO_DIV、LO_INT、LO_FRAC等关键参数的计算,以及如何通过查表获取优化的环路滤波器参数。文章提供了完整的Python算法示例和FPGA实现要点,旨在帮助工程师实现毫秒级甚至微秒级的频率切换,满足跳频通信等高性能应用需求。

weixin_29196315的博客 229

UVA11983 - Weird Advertisement(扫描线)

UVA11983 - Weird Advertisement(扫描线) 题目链接 题目大意:给你n个覆盖矩形,问哪些整数点是被覆盖了k次。 题目大意:这题和hdu1542是一个题型,但是这题求的是覆盖k次的点,所以pushup里面就要改一下,具体的看代码把,大概的意思就是每次都是通过下面的两个孩子节点的覆盖信息更新父节点的覆盖信息。然后这题也是需要离散化建树。比较需要注意的是这题

1147

突破NER性能瓶颈:BERT与LLM协同的混合架构实践

性能卓越:在多个测试集上,F1分数比单一模型提升5-15%成本可控:相比纯LLM方案,成本降低60%以上易于落地:架构清晰,便于调试和优化这种"专才+通才"的组合思路可以扩展到其他NLP任务中,如关系抽取、事件提取、文本分类等。更精细的流水线优化多模型投票机制在线学习与自适应调整不追求单一模型的万能,而是通过精心设计的组合,让每个组件发挥其独特优势,最终实现系统性能的最优化。欢迎在评论区分享你在NER任务中的实践经验,或者对这个混合架构的改进建议!

Ven%的博客 1022

[Uva11983][线段树][扫描线]Weird Advertisement[好题]

[Uva11983][线段树][扫描线]Weird Advertisement[好题]

Benjamin P.M. Lee 690

Verilog十大基本功2(testbench的设计 文件读取和写入操作 源代码)

需求说明:Verilog设计基础 内容       :testbench的设计 读取文件 写入文件 来自       :时间的诗 十大基本功之 testbench 1. 激励的产生 对于 testbench 而言,端口应当和被测试的 module 一一对应。 端口分为 input,output 和 inout 类型产生激励信号的时候, input  对

时间的诗 5万+

[Dify实战] 项目复盘助手:自动拉数据、生成复盘报告

本文介绍如何利用Dify平台构建自动化项目复盘助手,解决传统人工复盘效率低、易遗漏等问题。系统通过自动拉取Git/Jira等数据源,计算关键指标后,由LLM生成结构化复盘报告。文章详细讲解了数据采集、指标计算、Prompt设计等核心模块的实现,并分享了完整Workflow搭建步骤。实践表明,该系统能将复盘耗时从4小时缩短至10分钟,显著提升数据准确率和执行频率。最后总结了数据一致性、输出质量等常见问题的解决方案,强调Dify+LLM组合可实现复盘流程的自动化流水线。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 118

UVA 11983 Weird Advertisement

题意:求矩形覆盖k次以上的区域总面积。 因为k≤10,可以在线段树上维护覆盖次数为0,...,k, ≥k的长度数量。 然后就是一个离散化以后扫描线的问题了。 离散化用的是半开半闭区间,以方便表示没有被覆盖的区间。 /********************************************************* * --------------Alfhei...

weixin_34082177的博客 142

华为 MetaERP 财务模块的核心业务对象,按子模块与架构维度分类,以表格呈现,适配架构设计与实施落地

华为MetaERP财务模块基于4A架构(业务/应用/数据/技术)与TOGAF框架,实现业财一体化与全球合规。业务架构涵盖组织模型与核心流程,应用架构支撑财务操作,数据架构确保数据一致性,技术架构提供高性能技术底座。模块覆盖总账、应收应付、资产等子模块,支持多组织、多币种、多准则核算,通过实时会计引擎实现"交易即核算"。4A架构与TOGAF框架对应,实现业务能力、应用组件、数据模型与技术栈的深度融合,为华为全球化财务核算提供核心支撑。

金牌架构师 437

UVA 11983 Weird Advertisement (线段树+矩形面积并)

题意:给出平面上的n个矩形,求被

绝望的乐园 786

华为OD机试双机位C卷-AI面板识别(Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 AI面板识别,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解以及在线OJ模拟做题。华为OD机试 - AI面板识别。

qq_45776114的博客 1342

风电功率预测项目技术白皮书:短期、超短期、中长期全尺度算法详解与工程落地

聚焦风电功率预测的时间尺度与算法:短期(0~72h)以XGBoost/LightGBM/CatBoost及深度学习为主,超短期(0~4h)采用ARMA+LSTM,中长期用LightGBM等,并涵盖概率预测、多气象源融合、AI大模型+物理模型混合策略、极端天气应对及工程运维要点。

算法工程师 324

UVA 11983-Weird Advertisement-k次以上覆盖矩形面积(线段树+扫描线)

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18802 题意:给n个矩形 会重叠,求出重叠k次以上的那一块矩形,然后输出里面的整点数 其实和求 k次覆盖的矩形的面积是一个道理 求k次覆盖矩形中,k不超过10,用sum[N][12],sum[N][i]存,该节点N管辖的区间范围内i次覆盖的有效长

缺氧 696

零基础学习CANoe Panel(17)—— Panel CAPL Function

CANoe内置了几个CAPLFunction,允许我们在CAPL运行时动态的更改Panel控件的属性,比如打开某个panel,禁用某个控件,更改控件颜色等。

蚂蚁小兵 3511

UVA 11983 Weird Advertisement(线段树扫描线)

题意就是给你一些矩形要求被覆盖大于等于k的面积和。 做法和矩阵面积并类似。时间维护x轴,线段树维护y轴。用线段作为叶节点,每个节点要保存3样东西,这个线段的真实长度,len[i]代表这个线段上被覆盖i次的长度,flag代表扫到x的这个位置这个线段的矩形有几个还在覆盖,矩形左边边进去flag就+1,右边进去flag就-1。容易写错的地方就在更新的pushup操作。如果这个节点的flag大于k了,那

glq007的acm的奋斗 785

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

STM32F407中文手册

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

【扫描线】【线段树】UVa11983 Weird Advertisement

各种暴力  #include #include #include #include using namespace std; const int Lmax = 60005; struct Line { int x, down, up; int cover; bool operator < (const Line &b) const { return x

每天心塞一点点 893

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

UVA-11983-Weird Advertisement(线段树+扫描线)[求矩形覆盖K次以上的面积]

题意: 求矩形覆盖K次以上的面积 分析: k很小,可以开K颗线段树,用sum[rt][i]来保存覆盖i次的区间和,K次以上全算K次 // File Name: 11983.cpp // Author: Zlbing // Created Time: 2013/7/21 16:06:54 #include<iostream> #include<stri...

weixin_30808253的博客 132

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

uva 11983 Weird Advertisement(扫描线)

题意:给出N个矩形,求被这些矩形覆盖K次以上的区域面积。 做过hdu 3642 Get The Treasure和hdu 1255 覆盖的面积这道题应该不难才是。 #include #include #include #include #include #include using namespace std; #define LL(x) (x<<1) #define RR(x)

2033

uva 11983 Weird Advertisement 扫描线

Weird Advertisement Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=18802 Description 2DPlaneLand is a land just like a huge 2D plane....

weixin_34184561的博客 124

uva 11983 - Weird Advertisement(线段树)

题目链接:uva 11983 - Weird Advertisement 题目大意:给定n个矩形,问说有多少区域的面积被覆盖k次以上。 解题思路:将每个矩形差分成两条线段,一段为添加覆盖值1,一段为减少覆盖值1,同时记录两段的高度(横坐标)。然后对纵坐标离散化建立线段树,然后对线段按照高度排序,维护整段区间中覆盖度大于K的长度,乘上高度上的范围即可。 #include #inclu

不慌不忙、不急不躁 1265

UVA 11983 - Weird Advertisement(线段树)

UVA 11983 - Weird Advertisement 题目链接 题意:给定几个矩形,之后,求覆盖k次以上的点 思路:先把坐标离散化掉,然后把每个矩形x2,y1加一,这样就把求点转化为求面积,然后每个矩形拆分成上下两个线段,按y排序之后,从下往上每访问一条线段(第一条除外),答案就加上目前整条线段上次数大于等于k的长度乘上这条线段和上一条线段的高度差,然后再用这条线段,根

Remilia's 1367

uva 11983(扫描线)

题意:有n个矩形,给出每个矩形的左下角坐标和右上角坐标,问所有矩形重叠k次以上的面积并。 题解:因为k最大是10,直接用线段树维护重叠1到k-1次的面积并和大于等于k的面积并,pushup函数更新每个重叠次数。#include <cstdio> #include <cstring> #include <algorithm> #include <map> #include <vector> #def

俯瞰风景 804

uva11983扫描线k次覆盖

自己做的是从下往上扫描的,一直wa,不知道坑在哪里。。但是作为模板。我还是找了份不错的ac代码 /* 被覆盖不低于k次的点 每个点对应了一个单位面积,本题把点转面积即是被覆盖不低于k次的面积 可以当做求k次面积覆盖模板的题目! */ #include<iostream> #include<cstring> #include<cstdio> ...

weixin_30709929的博客 139

UVA - 11983 Weird Advertisement (线段树求并面积)

Description G Weird Advertisement Renat Mullakhanov (rem), one of the most talented programmers in the world, passed away on March 11, 2011. This is very sad news for al

那些年 933

【UVa】11983 Weird Advertisement

1 #include<cstdio> 2 #include<algorithm> 3 typedef long long LL; 4 #define MAXN 30010 5 using namespace std; 6 int n,k; 7 struct Seg 8 { 9 int left,right,hi...

weixin_30332241的博客 115

Weird Advertisement (线段树+扫描线)

2DPlaneLand is a land just like a huge 2D plane. The range of X axis is 0 to 109 and the range ofY axis is also 0 to 109. People built houses only in integer co-ordinates and there is exactly one hous...

a1046765624的博客 341

uva11983 线段树之k次面积交

之前做过一个类似的,加个循环就好了 ACcode: #include #include #include #define LL long long using std::sort; const int nsize=33333; struct Line { int lx,rx,y,f; Line(){} Line(int a,int b,int c,i

丿Smilē 丶晨星灬 1137
上一篇: HDU 3265 Posters (线段树扫描线)
下一篇: POJ 1741 Tree (树分治)
Roll_Keyboard
博客等级 码龄9年 10粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值