[bzoj1935][cdq分治][树状数组]Tree 园丁的烦恼

MobaXterm隧道配置详解:为PyCharm远程开发打通‘最后一公里’ 本文详细解析了如何利用MobaXterm配置SSH隧道,实现PyCharm远程开发的高效连接。通过本地端口转发技术,开发者可以安全访问内网服务器,特别适用于需要通过跳板机的复杂网络环境。文章涵盖从基础配置到企业级运维的全套解决方案,包括性能优化、安全加固等实用技巧。 阅读详情

Description

很久很久以前,在遥远的大陆上有一个美丽的国家。统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草。有一天国王漫步在花园里,若有所思,他问一个园丁道:
“最近我在思索一个问题,如果我们把花坛摆成六个六角形,那么……” “那么本质上它是一个深度优先搜索,陛下”,园丁深深地向国王鞠了一躬。
“嗯……我听说有一种怪物叫九头蛇,它非常贪吃苹果树……”
“是的,显然这是一道经典的动态规划题,早在N元4002年我们就已经发现了其中的奥秘了,陛下”。 “该死的,你究竟是什么来头?”
“陛下息怒,干我们的这行经常莫名其妙地被问到和OI有关的题目,我也是为了预防万一啊!”
王者的尊严受到了伤害,这是不可容忍的。看来一般的难题是难不倒这位园丁的,国王最后打算用车轮战来消耗他的实力:
“年轻人,在我的花园里的每一棵树可以用一个整数坐标来表示,一会儿,我的骑士们会来轮番询问你某一个矩阵内有多少树,如果你不能立即答对,你就准备走人吧!”说完,国王气呼呼地先走了。
这下轮到园丁傻眼了,他没有准备过这样的问题。所幸的是,作为“全国园丁保护联盟”的会长——你,可以成为他的最后一根救命稻草。

Input

第一行有两个整数n,m(0≤n≤500000,1≤m≤500000)。n代表皇家花园的树木的总数,m代表骑士们询问的次数。
文件接下来的n行,每行都有两个整数xi,yi,代表第i棵树的坐标(0≤xi,yi≤10000000)。
文件的最后m行,每行都有四个整数aj,bj,cj,dj,表示第j次询问,其中所问的矩形以(aj,bj)为左下坐标,以(cj,dj)为右上坐标。

Output

共输出m行,每行一个整数,即回答国王以(aj,bj)和(cj,dj)为界的矩形里有多少棵树。

Sample Input

3 1

0 0

0 1

1 0

0 0 1 1

Sample Output

3

题解

隔壁MT_LI写了个离散化+树状数组,然而我把这个当成了cdq模板题
三维偏序u,x,y
表示时间 x,y
共两种操作,第一种就是修改,表示(x,y)长一棵树
第二种操作是求和,表示求(1,1)~(x,y)的树的数目
对于要求一个范围内的树,我们可以把这个范围搞成4个第二种操作,记录一下对答案的贡献是正还是负
其中操作到来的时间是有序的,我们不用管
在cdq中对x坐标归并排序
对于y坐标用树状数组维护
然后记得每次cdq完之后清零树状数组

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
struct node
{
    int op,x,y,w,aid;
}a[3510000],t[3510000];int n,m,len,ymax,tot;
int s[1110000];
int lowbit(int x){return x&-x;}
void change(int x,int c){while(x<=ymax){s[x]+=c;x+=lowbit(x);}}
void clear(int x){while(x<=ymax){if(s[x])s[x]=0;else break;x+=lowbit(x);}}
int findsum(int x)
{
    int ret=0;
    while(x>=1)
    {
        ret+=s[x];
        x-=lowbit(x);
    }
    return ret;
}
bool cmp(node n1,node n2)
{
    if(n1.x<n2.x ||(n1.x==n2.x && n1.op<n2.op))return true;
    return false;
}
int answer[510000];
void cdq(int l,int r)
{
    if(l==r)return ;
    int mid=(l+r)/2;
    cdq(l,mid);
    cdq(mid+1,r);
    int i=l,j=mid+1,len=l;
    while(i<=mid && j<=r)
    {
        if(cmp(a[i],a[j]))
        {
            if(a[i].op==0)change(a[i].y,1);
            t[len++]=a[i++];
        }
        else
        {
            if(a[j].op==1)answer[a[j].aid]+=a[j].w*findsum(a[j].y);
            t[len++]=a[j++];
        }
    }
    while(i<=mid)t[len++]=a[i++];
    while(j<=r)
    {
        if(a[j].op==1)answer[a[j].aid]+=a[j].w*findsum(a[j].y);
        t[len++]=a[j++];
    }
    for(int u=l;u<=r;u++)
    {
        clear(a[u].y);
        a[u]=t[u];
    }
}
void ins(int op,int x,int y,int w,int aid)
{
    tot++;
    a[tot].op=op;a[tot].x=x;a[tot].y=y;a[tot].w=w;a[tot].aid=aid;
}
int main()
{
    scanf("%d%d",&n,&m);ymax=0;
    tot=0;
    for(int i=1;i<=n;i++)
    {
        int x,y;scanf("%d%d",&x,&y);x++;y++;
        ins(0,x,y,0,0);ymax=max(y,ymax);
    }
    for(int i=1;i<=m;i++)
    {
        int x,y,u,v;
        scanf("%d%d%d%d",&x,&y,&u,&v);x++;y++;u++;v++;
        ins(1,u,v,1,i);ins(1,x-1,v,-1,i);ins(1,u,y-1,-1,i);ins(1,x-1,y-1,1,i);
        ymax=max(ymax,max(y,v));
    }
    cdq(1,tot);
    for(int i=1;i<=m;i++)printf("%d\n",answer[i]);
    return 0;
}
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM) 迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM) 立即下载

相关推荐

大模型-高通qnn基础

提供较低级别、高度可定制的统一API,通过单独的库加速所有AI加速器核心上的AI模型, 可以直接用于针对特定的加速器核心或从流行的运行时(包括Qualcomm Neural Processing SDK、TensorFlow Lite和ONNX运行时)委派工作负载。一个支持异构计算、系统级配置的一体化SDK,旨在将AI工作负载引导到我们平台上的所有加速器核心。为开发人员提供灵活性,包括核心间协作支持和其他高级功能。是一个为训练好的神经网络模型提供高级量化和压缩技术的库。

点滴的岁月 4096

P2163 [SHOI2007]园丁的烦恼(二维数点模板题)

P2163 [SHOI2007]园丁的烦恼 题意: 在一个二维平面内有一些点,给你一个左上角和右下角的点,问这个范围内有多少点 题解: 二维数点模板题 我们设F(a,b)表示以(0,0)为左下角,(a,b)为右上角的矩阵内有多少点 如图不难得到: 黑色部分为=F(c,d)+F(a-1,b-1)-F(a-1,d)-F(c,b-1) (不就是二维前缀和) 因为数据范围过大,所以横纵坐标都离散化处理。 现在我们如何求(0,0)到(x,y)内点的数量 我们把矩阵内的点看作是插入操作,相当于在矩阵中(x,y)位置+

qq_35975367的博客 694

DeepLearningTool-深度学习分类-和HALCON的详细过程

损失函数:衡量预测误差,用于模型优化。混淆矩阵:评估分类模型性能,提供详细预测结果分析。两者结合使用,可以全面评估和优化模型。过拟合:模型过于复杂,捕捉了噪声,表现为训练集误差低,测试集误差高。欠拟合:模型过于简单,无法捕捉数据模式,表现为训练集和测试集误差都高。调整参数过拟合:简化模型、增加数据、使用正则化、早停、Dropout。欠拟合:增加模型复杂度、特征工程、增加训练时间、调整学习率、使用集成方法。通过合理调整参数和方法,可以有效避免过拟合和欠拟合,提升模型性能。

weixin_36672036的博客 6194

[SHOI2007]园丁的烦恼

题目链接:[SHOI2007]园丁的烦恼 二维数点,随便怎么做都行。 AC代码: #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<bits/stdc++.h> //#define int long long #define mid (l+r>>1) using namespace std; con...

青烟绕指柔的博客 393

STM32F407用FSMC+DMA驱动LVGL,3.5寸屏流畅度翻倍实战(附CubeMX配置避坑)

本文详细介绍了如何在STM32F407上通过FSMC+DMA驱动LVGL,显著提升3.5寸屏的显示流畅度。从FSMC与DMA的配置原理到LVGL驱动层适配,提供了完整的优化方案和实测数据,帮助开发者解决界面卡顿问题,实现流畅度翻倍的效果。

weixin_30872499的博客 559

CoppeliaSim和Python进行无人机联合仿真

CopeeliaSim和Python进行无人机轨迹跟踪联合仿真。首先建立起CoppeliaSim和Python的连接,其次在Python中生成轨迹,CoppeliaSim仿真环境中的无人机进行跟踪,并绘制出轨迹曲线,有每一步详细的教学。

加斯顿工程师的博客 988

bzoj1935.园丁的烦恼 (离散化 && 树状数组)

(SHOI2007) 平面内有 N 个点,有 M 个查询,每次询问一个以 ( Ai, Bi ) 为左下角,( Ci, Di ) 为右上角的矩形内有多少个点 这种问题首先想到的应该是二维线段树或者树状数组,但是这道题中 N, M 都是 500000,二维的肯定为超出空间限制,这能用一维。同时这道题中没有中途修改操作,所以可以离线做。把这些点离散化,询问的点也算在内,按 X 为第一关键字,是

ALXPCUN的博客 763

Unity Sprite Atlas C++底层原理全解析 —— “像素聚合工厂”的秘密

Unity Sprite Atlas C++底层实现简析 Sprite Atlas是Unity中用于优化2D渲染性能的核心机制,其C++底层实现如同一个高效的"像素聚合工厂"。该系统通过将多个小纹理合并为一个大纹理,显著减少Draw Call次数和GPU纹理切换开销。 在数据结构上,底层采用SpriteAtlasData存储图集元数据,PackedTexture管理合并后的大纹理,SpriteFrame记录每个子精灵的位置信息,并通过哈希表实现快速查找。编辑器阶段使用最大矩形等算法优化空

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 204

【Shoi2007】bzoj 1935 园丁的烦恼

离线+树状数组

YHaX的博客 701

AutoClip AI视频剪辑工具:Docker一键部署指南

摘要:AutoClip是一个基于Docker容器化部署的智能视频剪辑系统,采用微服务架构设计,包含Web界面、后端API、异步任务处理和Redis缓存等组件。系统支持一键快速部署,提供完整的监控和日志功能,最低要求4GB内存和10GB存储空间。部署过程仅需三个步骤:克隆代码、配置环境变量、启动容器服务。生产环境支持性能调优、数据持久化和网络安全管理。该系统解决了环境配置难题,实现"一次配置,到处运行"的目标,适合需要自动化视频处理的用户。

wjianwei666的专栏 1010

在hyper-v管理器中修改WSL虚拟交换机后,打开wsl闪退

此次是因为修改了WSL虚拟交换机造成的wsl打不开或闪退,还有一种可能是关闭了hyper-v造成了wsl。

DN金猿的博客 1173

BZOJ 1935 园丁的烦恼 (cdq分治+树状数组)

对于多维偏序问题,cdq分治可以使问题维度降低一维(当然嵌套的cdq分治可以降低多维)。 所以解决多维偏序问题都可以这样做:第一维排序,中间几维cdq分治,最后一维树状数组。 本题可以认为是一个三维偏序问题 写到上面这句话时突然感觉自己脑子有坑。。。 我的做法是这样的: 第一维时间(然而事实上因为过程中没有修改,所以并没有这一维),第二维X坐标,第三维Y坐标,本题确实可以认为是一个三维偏...

qq_38515845的博客 331

【深度学习总结_02】在自己的数据集微调SAM

使用医疗影像数据微调SAM

qq_41234663的博客 1万+

bzoj1935 Tree 园丁的烦恼(二位偏序,CDQ分治+树状数组)

传送:https://www.lydsy.com/JudgeOnline/problem.php?id=1935 题意:有$n$个点,$m$个询问,每次询问为一个矩形,问矩形内有多少个点。 数据范围:$0 \le n \le 500000$,$0 \le m \le 500000$,$0 \le x_i,y_i \le 10000000$ 分析: 每次都是询问一个矩形内点的个数。...

weixin_30596165的博客 124

android 蓝牙通讯demo

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

bzoj 1935 [Shoi2007]Tree 园丁的烦恼 cdq分治+树状数组

题面 题目传送门 解法 题目就是一个二维偏序问题 将某一个询问转化成二维前缀和的形式即可 还是用常数比较小的cdq分治吧,空间小,比较容易实现 坐标需要离散化 时间复杂度:\(O(n+m)\ log^2\ n\) 代码 #include <bits/stdc++.h> #define N 2500010 using namespace std; template <typenam...

weixin_30950607的博客 127

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

BZOJ 1935 Tree 园丁的烦恼 CDQ分治/主席树

CDQ分治版本 我们把询问拆成四个前缀和,也就是二维前缀和的表达式, 我们把所有操作放入一个序列中 操作1代表在x,y出现一个树 操作2代表加上在x,y内部树的个数 操作3代表减去在x,y内部树的个数 我们对X进行归并排序,并用CDQ计算机左区间对右区间的影响 由于CDQ分治的特性,我们已经求得了[L,MID]之间答案 以及 [MID+1,R]之间答案 那么[L,...

qq_40921866的博客 180

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

BZOJ 1935 Tree 园丁的烦恼 cdq分治

Description 很久很久以前,在遥远的大陆上有一个美丽的国家。统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草。有一天国王漫步在花园里,若有所思,他问一个园丁道: “最近我在思索一个问题,如果我们把花坛摆成六个六角形,那么……” “那么本质上它是一个深度优先搜索,陛下”,园丁深深地向国王鞠了一躬。 “嗯……我听说有一种怪物叫九头蛇,它非常贪吃苹果树……” “是...

山科小菜鸡 370

BZOJ 1935: [Shoi2007]Tree 园丁的烦恼 +CDQ分治

1935: [Shoi2007]Tree 园丁的烦恼 参考与学习:https://www.cnblogs.com/mlystdcall/p/6219421.html 题意   在一个二维平面中有n颗树,有m次询问,要求回答在一个矩形方框中的树的个数。 思路   这是一个(x,y)为偏序的题目。这道题先用CDQ对x进行排序降维。然后利用树状数组对y进行处理。复杂度为O(N*logN * l...

weixin_30922589的博客 179

BZOJ.1935.[SHOI2007]Tree园丁的烦恼(CDQ分治 三维偏序)

题目链接 矩形查询可以拆成四个点的前缀和查询(树套树显然 但是空间不够) 每个操作表示为(t,x,y),t默认有序,对x分治,y用树状数组维护 初始赋值需要靠修改操作实现。 //119964kb 4380ms #include <cstdio> #include <cctype> #include <algorithm> #define gc() g...

weixin_30569153的博客 68

BZOJ 1935: [Shoi2007]Tree 园丁的烦恼 [树状数组 离线 离散化]

传送门   刚才我还在郁闷网上怎么没人用$CDQ$分治做 突然发现根本没有时间序.... #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; #include&lt;cmath&gt; using namespace std; ...

weixin_34353714的博客 139

bzoj1935: [Shoi2007]Tree 园丁的烦恼

这题本来是想用二维树状数组水的。然后不会动态开数组,所以顺便补了一发cdq。 第一维时间,第二维x,第三维y,(其实我自己的感觉是第一维可以不要的),xy很大so离散化谢谢。 询问拆成4个。大家都懂。 #include<cstdio> #include<iostream> #include<cstring> #include<cstdlib...

weixin_30780221的博客 69

[Shoi2007] 园丁的烦恼

题目描述: 有 N 个 点 每个点坐标为 X Y 有 M 个查询,每个查询表示一个矩形,问这个矩形里有几个点 题目分析: 二维矩形问题,直接怒打一发 离散化+树套树 然而怎么卡常也只有48分(雾 本题的正确做法是,离线搞! 我们把X Y 存起来,然后按照X升序排列,每次插入 Y ,查询 Y 就好了(雾 连离散化都不用打! 矩形割补求一下 题目链接: BZOJ 1935...

HT008的Blog 446

[SHOI2007]园丁的烦恼 CDQ三维偏序

[SHOI2007]园丁的烦恼 题意:平面图上有n个点,m次询问,每次询问一个二维区间中包含了多少点。 使用CDQ三维偏序,第一维是时间,第二维是x坐标,第三维是y坐标。 时间开始就已经排好,x坐标是CDQ排序关键,y坐标可以用树状数组计算前缀。 注意: 1、树状数组update和clean开始不能是0 2、ask数组大小开为5倍大小N+M*4 #include <bits/stdc++.h...

wty的博客 286

P2163 [SHOI2007]园丁的烦恼 (CDQ 分治)

P2163 [SHOI2007]园丁的烦恼 注意x = 0 和 y = 0; 题目背景 很久很久以前,在遥远的大陆上有一个美丽的国家。统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草。 有一天国王漫步在花园里,若有所思,他问一个园丁道: “最近我在思索一个问题,如果我们把花坛摆成六个六角形,那么……” “那么本质上它是一个深度优先搜索,陛下。”园丁深深地向国王鞠了一躬。 “嗯……我听说有一种怪物叫九头蛇,它非常贪吃苹果树……” “是的,显然这是一道经典的动态规划题,早在 N 元

qq_45958362的博客 350
上一篇: [bzoj3875][DP][最短路]骑士游戏
下一篇: [bzoj3262][cdq分治][树状数组]陌上花开
Rose_max
博客等级 码龄10年 97粉丝 610原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值