首页 > 其他分享 >二维偏序问题与树状数组在其中的运用

二维偏序问题与树状数组在其中的运用

时间:2022-12-14 00:12:54浏览次数:59  
标签:偏序 min 树状 sum2 sum1 二维

链接:https://ac.nowcoder.com/acm/problem/247068
来源:牛客网
对于两个序列a,b,求一个l和r使得在min(区间和a,区间和b)最大。

发现就是min(sum1[r]-sum1[l-1],sum2[r]-sum2[l-1]).那这个为什么难处理呢?因为有min,为了把min拿掉我们应该强制sum1[r]-sum1[l-1]<sum2[r]-sum2[l-1] 这样min(sum1[r]-sum1[l-1],sum2[r]-sum2[l-1])==sum1[r]-sum1[l-1],变换一下就是在sum2[l-1]-sum1[l-1]<sum2[r]-sum1[r],且l<r的条件下求最大的sum1[r]-sum1[l].这就是一个二维偏序问题。把结构体按sum2-sum1从小到大排序,然后把其在数组中的下标变成其在树状数组的下标,树状数组维护所有符合条件的sum[x]的最小值,比如下标i会作用到[i,n].然后就是查询的事情了。

对于另一半也是一样的操作。强制sum1[r]-sum1[l-1]>sum2[r]-sum2[l-1].

标签:偏序,min,树状,sum2,sum1,二维
From: https://www.cnblogs.com/ljl1234/p/16981022.html

相关文章

  • Android 扫描二维码(Scan Kit)
    华为统一扫码服务(ScanKit)能够提供专业的二维码与条形码扫描与解析能力,通过集成ScanKit,帮助应用快速构建扫码功能。统一扫码服务的功能全面的码识别能力:ScanKit支持全......
  • 二维数组传参和数组指针
     数组指针  “数组指针”是一种指针,该指针指向一个数组。就类似于“红苹果”,本质是一种苹果,“红”只是修饰苹果的一个定语。intarr[5]={1,2,3,4,5};int(*p)[5]=......
  • 二维数组中的查找
    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。......
  • .NET 采用 SkiaSharp 生成二维码和图形验证码及图片进行指定区域截取方法实现
    最新版的.NET平台中,微软在逐步放弃System.Drawing.Imaging,给出的理由如下:System.Drawing命名空间对某些操作系统和应用程序类型有一些限制。在Windows,System.Draw......
  • 【数据结构】二维树状数组
    一、二维树状数组二维树状数组,其实就是一维的树状数组上的节点再套个树状数组,就变成了二维树状数组了。constintN=1e3+10;inttr[N][N],n,m;#definelowbit(x......
  • 真实感渲染:变换(二维与三维)
    大家好~本课程为“真实感渲染”的线上课程,从0开始,介绍相关的图形学算法和数学基础,给出详细的数学推导、伪代码和实现代码,最终带领大家开发出基于物理的渲染器线上课程资料......
  • 二维数组
    #include<stdio.h>#include<string.h>#include<math.h>#include<stddef.h>intmain(){ intarr[3][4]={{1,2},{3,4},{5,6}}; inti=0; intj=0; for(i=0;i<3;i......
  • 二维数组在内存中的存储
    #include<stdio.h>#include<string.h>#include<math.h>#include<stddef.h>intmain(){ intarr[3][4]; inti=0; for(i=0;i<3;i++) { intj=0; for(j=0;j<......
  • 遗传算法——求解优化问题,参数分析(以求二维sphere最小值为例)
    遗传算法求解优化问题目录1.遗传算法的解读1.1参数编码1.1.1二进制编码1.1.2十进制编码1.2初始化群体的设定1.3适应度函数的设定1.4遗传操作设计1.4.1选择......
  • 树状数组统计一个数前面有几个数比它小,有几个数比它大
    很重要的算法,蓝桥杯遇到n次了#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,m;inta[1000010],c[1000010],b[1000010];intlowbit(intx......