[YZOJ]P3290-暴力-性质题

2024 电商订单明细数据集(24列,382287条记录)CSV 详情介绍:该数据集为 2024 年电商订单明细,可以关联电商用户画像数据集(16列, 98673条记录)CSV,覆盖食品生鲜 / 3C 电子 / 美妆护肤 / 家居日用 / 服装鞋帽 5 大类、15 个品牌,平均客单价 1717 元、支付宝 + 微信支付占 75%、88% 订单无促销、取消率 5%,适合做 RFM 用户分层、购物篮关联分析、销售预测和促销效果评估。 立即下载

链接


题意描述
给定一个 h×w 的网格图,m个互不相交(定义相交为: ∃A∈Reca,A∈Recb 且 ∃A∈Reca,A∉Recb )的矩形,n个点对。
当两点可以不经过矩形相互到达时,称这个点对合法。
求合法的点对数。
这里写图片描述


题解
最初的想法就是连接合法边,对于一个点dfs一遍,对可以到达的点用并查集维护为一个集合,这个做法复杂度大概O(hw),姿势正确的话有60分。

我们可以发现一个性质。由于矩形互不相交,则:
如果两个点属于的最小的矩形相同,则两个点一定可以连通。
且易证其为充要条件。

于是我们就可以算出两个点的最小包含矩形,并判断它们是否相等即可。
这个做法时间复杂度为O(nm)。虽然常数优化了不少,代码难度也瞬间下降为普及组第一题,但依然只有60分。

在真正的赛场上,除了想到正解,想到一中易于实现的做法也是一个成功。采用相对容易的算法,时间还是风险都有所下降。

这个算法的瓶颈在计算最小矩形的时间,每做一次都要花费O(m)的时间,一看就很有优化的空间!我们如何用更优秀的时间算出每个点所属的矩形呢?

最小矩形作为一个集合元素,不易于代数的描述和记录。我们尝试改变表示方法,这就要求我们找出属于同一个最小矩形的点的通性,即一个条件p,作为两个点属于同一个最小矩形的充要条件。

如果给每一个矩形随机一个编号,对包含其的所有矩形的编号以某种方法求一个哈希值,不就可以唯一的表示这些点了吗?
想法很好!接着我们就可以开始优化了。

优化O(m)时间的很常用的做法就是记前缀和。然而,一维的前缀和是对于一一维的线而言的。对于二维的平面,我们需要对其分治,这也决定了它无法达到一维O(1)效率的转移,而需要O(log_n)。

这个时候我们遇到了难以逾越的障碍,因为我们很难确定一个排序的方法,自然也就无法分治秋前缀和。

我们发现,“包含”是个不易表示的概念。有没有办法用其他方式表示这个概念呢?

这里写图片描述

对于绿点,属于矩形P1,在其左上角所包含的区域里面,有P1的点奇数个,P2、P3的点偶数个。
对于粉点,属于矩形P1、P2,在其左上角包含P1、P2的点奇数个,P3的点偶数个。
规律很明显,也易证明。

看到奇偶性我们很容易想到异或操作的性质。我们对于每一个矩形的四个点随机一个哈希值,就可以表示每一个,对一个要求的点的左上方位置的所有端点取一个异或和作为哈希值,就可以很大概率唯一的表示此点和此点所属点集的位置关系了。
我们就是希望将一个个复杂的矩形转化一个个简单的点,化整为零,使其易于操作,因为我们要一个排序的方法。而我们知道,对于点的排序是很容易的。

具体的分治方法是先对其x坐标进行排序,再对其进行分治。考虑分治[l,r]为[l,mid]和[mid+1,r],已经分治完了左边,对于属于右边的每一个要求的点,要把左边y小于等于它的点全部取计入它的哈希值(此时左边经过原来对x的排序已经可以保证x都小于要求的这个点的x了)。
可以证明,迭代log_n次后,所有范围内的点都可以被计入它的哈希值(想想为什么)。

最后比较一下这个点对的哈希值。
时间复杂度分析
最初的对x排序由于x不超过 107 ,桶排序可以O(h)过。分治迭代llog_n层,每层询问要对n个点贡献哈希值,每次贡献需要求y恰好小于等于这个点y值的点,可以用一个log_n二分找出。
总时间复杂度 O(h+nlog2n) 。
问题就完美的解决了。

(最后一个点奇怪WA掉的代码)

#include<cstdio>
#include<algorithm>

#define R register
#define max_rand 1000010
using namespace std;
struct ND{int x,y,hash,s,num;}a[3000010],c[3000010];
struct ANS{int p1,p2;}b[500010];
struct ORD{int nex,key;}f[3000010];
int n,m,h,w;
int at=0,ft=0;
int st[10000010];

int read()
{
    R int xx;R char ch;
    while(ch=getchar(),ch<'0'||ch>'9');xx=ch-'0';
    while(ch=getchar(),ch>='0'&&ch<='9')xx=xx*10+ch-'0';
    return xx;
}

bool cmp(const ND &a1,const ND &a2){return a1.num<a2.num;}

int higher_bound(R int l,R int r,R int lim)
{
    R int m;
    while(r-l>1)
    {
        m=(l+r)>>1;
        if(a[m].y<=lim)l=m;
        else r=m-1;
    }
    if(a[l].y>lim)return 0;
    return a[r].y<=lim?r:l;
}

void merge_sort(R int l,R int r)
{
    if(l==r)
    {
        if(a[l].num==0)a[l].s=a[l].hash;
        return;
    }
    R int i,j,k,mid=(l+r)>>1;
    merge_sort(l,mid);
    merge_sort(mid+1,r);
    for(i=mid+1;i<=r;++i)if(a[i].num!=0)
    {
        k=higher_bound(l,mid,a[i].y);
        a[i].hash^=a[k].s;
    }
    i=l,j=mid+1,k=l;
    while(i<=mid&&j<=r)
    {
        if(a[i].y<=a[j].y)c[k++]=a[i++];
        else c[k++]=a[j++];
    }
    while(j<=r)c[k++]=a[j++];
    while(i<=mid)c[k++]=a[i++];
    a[l]=c[l],a[l].s=(a[l].num==0?a[l].hash:0);
    for(i=l+1;i<=r;++i)
        a[i]=c[i],a[i].s=a[i-1].s^((a[i].num==0)?a[i].hash:0);
}

int main()
{
    n=read(),m=read(),h=read(),w=read();
    R int i,j,k,e;
    R int x1,y1,x2,y2;
    for(i=1;i<=n;++i)
    {
        x1=read(),y1=read(),x2=read(),y2=read();
        c[++at]=(ND){x1,y1,0,0,i};
        c[++at]=(ND){x2,y2,0,0,i};
        b[i].p1=b[i].p2=-1;
    }
    for(i=1;i<=m;++i)
    {
        x1=read(),y1=read(),x2=read(),y2=read();
        k=rand()%max_rand;
        c[++at]=(ND){x1,y1,k,0,0};
        c[++at]=(ND){x1,y2+1,k,0,0};
        c[++at]=(ND){x2+1,y1,k,0,0};
        c[++at]=(ND){x2+1,y2+1,k,0,0};
    }
    for(i=1;i<=at;++i)
        f[++ft]=(ORD){st[c[i].x],i},st[c[i].x]=ft;
    for(at=0,i=0;i<=10000002;++i)
        for(e=st[i];e!=0;e=f[e].nex)
            a[++at]=c[f[e].key];
    merge_sort(1,at);
    for(i=1;i<=at;++i)
        if(a[i].num!=0)
            (b[a[i].num].p1==-1)?(b[a[i].num].p1=a[i].hash):(b[a[i].num].p2=a[i].hash);
    for(i=1;i<=n;++i)
    {
        if(b[i].p1==b[i].p2)puts("0");
        else puts("1");
    }
    return 0;
}
58-基于51单片机的多自由度机械手控制系统设计(设计+说明+原理++全套资料).rar 项目58-基于51单片机的多自由度机械手控制系统设计 资料包括Proteus仿真+Keil程序+Altium Designer原理图+软件安装包+参考设计说明书+答辩PPT+设计流程图,保证资料完整性! 功能: (1)本系统以STC89C52单片机为核心控制器,统筹各关节运动数据运算,保障多自由度机械手动作精准稳定运行。 (2)采用电位器角度传感模块采集关节位置信号,实时反馈各机械臂关节当前转角,为动作闭环控制提供数据支撑。 (3)使用LCD1602液晶屏实时显示各关节角度与运行模式,界面清晰直观,同步展示机械手当前工作状态。 (4)配备SG90舵机阵列作为核心执行装置,精准驱动多自由度关节转动,完成抓取、搬运等预设操作动作。 (5)内置独立按键支持自定义动作路径与点位存储,参数掉电不丢失,适配不同场景下的机械手调试需求。 立即下载

相关推荐

Picture of ssh key

Picture of ssh key

YZOJ 1572 [省队训练]calc

离线+分块思想挺神的题目啊。。。裸做肯定不行。因为询问可以变成前缀和加减,考虑将所有询问拆成两个点,按端点从左到右排序,一个一个做。暴力1:我们记mod[i][j]表示对i取模的值为j的数的个数的话,空间复杂度 O(p^2),时间复杂度 O(n*p+m),若p很大时,没戏。暴力2:记一个数值i出现的次数为cnt[i],然后枚举k,p+k,2p+k…来更新答案,空间复杂度O(Ai),时间复杂度O(m*

无尽 1007

政府科技管理者在推动区域科技成果转化过程中,如何系统性地识别和分析创新资源的配置瓶颈?.docx

政府科技管理者在推动区域科技成果转化过程中,如何系统性地识别和分析创新资源的配置瓶颈?

yzoj P1948 取数字问题

题意 sb题目,不多说,爆搜就能过。 代码 #include<bits/stdc++.h> using namespace std; int n,m,ans=1<<30,a[15][15]; void dfs(int x,int y,int data){ if(x==n&&y==m){ if(data>0){ ...

aqg41577的博客 196

政府科技管理者如何提升区域科技成果转化项目的评价与筛选效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

高校技术转移办公室人员在成果转化过程中如何快速提升技术推介效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

产业园区运营负责人如何实现科技资源的高效配置与联动?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

两相交错并联Boost电路仿真模型(Simulink仿真实现)

内容概要:本文档系统性地介绍了基于Simulink平台的两相交错并联Boost电路仿真模型,属于电力电子变换器建模与仿真研究的重要组成部分。该模型采用交错并联结构,有效提升了系统效率、降低了输出电流纹波,并具备优良的动态响应与系统稳定性。文档不仅聚焦于该特定拓扑的开环与闭环控制实现,还整合了丰富的配套资源,涵盖多种主流DC-DC变换器(如Buck、Boost、LLC、CLLC)、功率因数校正(PFC)电路、PWM整流器、双向充放电系统以及新能源应用场景(如V2G、微电网)等领域的仿真模型。资源体系强调软开关技术、多相交错控制、系统级建模与参数优化设计,所有内容均提供可运行的Simulink仿真文件,部分包含详细的设计报告、计算书及参考文献,具有较强的工程实践与科研复现价值。; 适合人群:电气工程、自动化、电力电子与电力传动等相关专业的硕士博士研究生、高校科研人员,以及从事新能源发电、电动汽车、电源系统设计等领域的工程技术人员。; 使用场景及目标:①支撑高校电力电子与电力系统方向的科研项目,用于新型拓扑结构的建模与先进控制算法的验证;②服务于本科生与研究生的毕业设计、课程设计及高水平学术论文的仿真复现;③为企业在电源产品研发、新能源系统集成等环节提供成熟的仿真方案参考,缩短研发周期,降低试错成本。; 阅读建议:建议使用者首先访问文档末尾提供的完整资源目录链接,按需下载对应仿真模型;在实践过程中,应重点关注模型的参数配置、控制策略实现细节与仿真工况设置,结合配套的说明文档深入理解其工作原理与设计思路,推荐在MATLAB/Simulink环境中动手调试与二次开发,以充分掌握电力电子系统的核心技术。

ddrc111111111111111111

ddrc1111111111111111111

基于单片机的电动工程机械高压管理单元控制器设计.docx

基于单片机的电动工程机械高压管理单元控制器设计.docx

IEC 101 仿真调试台是基于 Windows 桌面工具,用于 IEC 60870-5-101(简称 IEC 101 / 101 规约)串口远动通信的仿真、调试与报文分析

IEC 101 仿真调试台是基于 Windows 桌面工具,用于 IEC 60870-5-101(简称 IEC 101 / 101 规约)串口远动通信的仿真、调试与报文分析。同一个程序内既可充当主站(控制站),也可充当从站(被控站 / RTU),并内置 FT1.2 链路层原始帧的逐字段解析。 本软件是规约仿真与调试工具,不替代 SCADA/EMS 主站系统,也不作为生产环境长期运行的前置机。现场接入真实装置前,请确认串口电气接口(RS-232/RS-485)、电平转换与接线方式正确。

三电平维也纳VIENNA双闭环控制整流器仿真(Simulink仿真实现)

内容概要:本文档系统介绍了三电平维也纳(VIENNA)整流器的Simulink仿真资源,重点实现电压外环与电流内环构成的双闭环控制策略,并融合中点电位平衡的SVPWM调制技术,以提升系统稳定性与输出电能质量。该仿真模型面向高功率因数、低谐波畸变的应用需求,详细展示了整流器的数学建模、控制算法设计、PI控制器参数整定、坐标变换(abc/dq)实现及调制策略选择等关键技术环节,涵盖从理论分析到仿真验证的完整流程,适用于电力电子高端应用的科研与工程实践。; 适合人群:电力电子、电气工程及其自动化等相关专业的本科生、研究生,以及从事新能源发电、工业电源、电动汽车、轨道交通等领域研发工作的工程师和技术人员。; 使用场景及目标:①深入理解三电平VIENNA整流器的工作机理与拓扑优势;②掌握双闭环控制系统的设计方法与动态响应优化技巧;③学习SVPWM在抑制中点电位漂移中的实现原理与工程应用;④通过Simulink平台完成控制策略建模与仿真调试,服务于课程设计、学位论文、科研项目或产品原型开发。; 阅读建议:建议结合文档提供的参考文献与配套仿真文件进行同步学习与实操,重点关注控制框图搭建、PI参数调节过程及关键信号波形(如交流侧电流、直流侧电压、中点电位波动)的观测分析,深入理解各控制模块对系统稳态精度与动态性能的影响机制。

科技中介服务机构如何实现技术经纪人的能力画像与绩效评估?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

【欠驱动AUV】欠驱动自主水下航行器(AUV)的轨迹跟踪和路径跟随算法的不同分析方法进行仿真研究(Matlab代码、Simulink仿真)

内容概要:本文档围绕Plecs全桥LLC谐振变换器的仿真模型展开,详细介绍了基于Plecs或Simulink平台对该类高效DC-DC变换器进行建模与仿真的方法。内容涵盖全桥LLC谐振变换器的工作原理、典型拓扑结构、关键参数设计(如谐振频率、电压增益特性)、PFM(脉冲频率调制)控制策略的实现方式,以及仿真模型的构建、调试与验证全过程。文档还整合了相关的设计报告、参考文献和计算资料,旨在为电力电子领域的研究人员和工程师提供一套完整的从理论到仿真的技术指导,尤其适用于高效率、高功率密度电源系统的研发与教学实践。; 适合人群:从事电力电子、新能源发电系统、开关电源设计及相关领域的科研人员、高校教师、研究生及工程技术人员,需具备扎实的电路理论基础和一定的Matlab/Simulink或PLECS仿真软件操作能力。; 使用场景及目标:①用于深入学习和掌握全桥LLC谐振变换器的建模方法与动态特性分析;②支持科研项目中对软开关技术、高效率变换器拓扑的性能评估与优化设计;③辅助高校课程教学、毕业设计或科研训练中关于电力电子系统仿真实践的教学与实验环节。; 其他说明:该资源通常配套提供Matlab/Simulink或PLECS仿真文件,建议结合理论学习与实际仿真操作同步进行,通过调节谐振元件参数、观察波形响应、分析效率变化等方式深化对LLC变换器工作机理的理解,特别关注其在不同负载条件下的软开关实现与系统稳定性表现。

deepseek-harness-0.2.2-rc.1-win-x64.zip

deepseek-harness-0.2.2-rc.1-win-x64.zip

三电平Buck直流变换器双闭环、单闭环、开环仿真【附参考文献】(Simulink仿真实现)

内容概要:本文系统介绍了三电平Buck直流变换器在Simulink环境下的开环、单闭环及双闭环控制系统的建模仿真与性能对比分析,深入探讨了不同控制策略对系统动态响应、稳态精度、抗扰能力及鲁棒性的影响。通过构建完整的仿真模型,详细阐述了各控制结构的设计思路、关键模块实现方法及PI控制器参数整定过程,并结合仿真波形对比分析了三种控制方式在启动过程、负载突变等工况下的输出电压表现,充分验证了双闭环控制在抑制电压波动、提升调节速度和负载适应性方面的显著优势。文档还提供了详尽的参数设置指南和参考文献,便于读者复现结果并开展进一步研究。; 适合人群:电气工程、自动化、电力电子与电力传动等相关专业的本科生、研究生,以及从事直流变换器设计、控制算法开发和系统仿真的科研人员与工程技术开发者。; 使用场景及目标:①掌握三电平Buck变换器的工作原理与数学建模方法;②理解电压模式控制与电流模式控制的差异与应用场景;③学习双闭环PI控制器的设计流程与参数整定技巧;④为电力电子装置的控制器设计、性能优化及科研项目提供仿真验证平台与技术参考。; 阅读建议:建议读者结合Simulink软件动手搭建仿真模型,分步实现开环、单闭环与双闭环控制系统,通过调整控制器参数并观察不同工况下的系统响应,深入理解控制策略对系统性能的影响机制,同时结合提供的参考文献强化理论基础,实现从仿真到实际应用的有效过渡。

LLC谐振变换器开环+闭环软启动仿真设计(Simulink仿真实现)

内容概要:本文系统介绍了基于Simulink平台的LLC谐振变换器开环与闭环软启动仿真设计,深入探讨了LLC谐振变换器的建模方法、关键参数设计及软启动控制策略,涵盖半桥、全桥等多种拓扑结构,并结合PFM变频控制、闭环反馈等技术实现系统稳定启动与高效动态响应。资源包内含完整的仿真模型、设计报告与计算书,全面支撑从理论分析到工程实践的全过程,有助于深入理解LLC谐振变换器的工作机理及其在电源系统、新能源变换等领域的应用价值; 适合人群:具备电力电子与自动控制基础知识,从事开关电源、新能源变换器设计或相关方向科研工作的工程师及研究生;熟悉Simulink仿真环境并希望提升实际建模能力的研发人员; 使用场景及目标:① 掌握LLC谐振变换器的软启动控制原理,有效抑制启动过程中的电流冲击;② 学习并对比开环与闭环控制策略的设计思路与实现方法;③ 将仿真模型应用于高频DC-DC电源、车载充电机、光伏逆变器等实际工程项目开发;④ 利用所提供资料开展教学培训、课程设计或科研验证工作; 阅读建议:建议结合仿真文件与配套文档循序渐进地操作,重点关注谐振腔参数匹配、控制环路设计及软启动时序设置,通过调整频率、负载等变量观察系统动态响应,从而深化对LLC变换器非线性特性和控制性能的理解。

三层交换机第一次作业.docx

三层交换机第一次作业.docx

上一篇: [YZOJ]P3281-小猿刷题-线性筛法优化
下一篇: 二项式定理 & 杨辉三角
Ice Ship
博客等级 码龄9年 2粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值