Description

给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数。

(N<=500,Q<=60000)

Solution

考虑二分答案,问题转化为求矩阵内为1的点数,可以用二维树状数组。

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
struct P{int num,x,y;}a[];int cnt_a=;
bool cmp(P x,P y){return x.num<y.num;}
int rk[],all=; int n,m;
struct node{int x,y,xx,yy,k,id;
}q[],st[][];int ans[]; int tree[][];
void add(int x,int y,int data){for(;x<=n;x+=x&-x)for(int j=y;j<=n;j+=j&-j) tree[x][j]+=data;}
int query(int x,int y){int re=;for(;x;x-=x&-x)for(int j=y;j;j-=j&-j) re+=tree[x][j];return re;}
int now;
void solve(int ql,int qr,int ansl,int ansr)
{
if (ql>qr) return;
if (ansl==ansr)
{
for (int i=ql;i<=qr;i++) ans[q[i].id]=ansl;
return;
}
int ansmid=ansl+ansr>>,cnt,js0=,js1=;
for (;now<ansmid;) now++,add(a[now].x,a[now].y,);
for(;now>ansmid;now--) add(a[now].x,a[now].y,-);
for (int i=ql;i<=qr;i++)
{
cnt=query(q[i].xx,q[i].yy)+query(q[i].x-,q[i].y-)-query(q[i].x-,q[i].yy)-query(q[i].xx,q[i].y-);
if (cnt>=q[i].k) st[][++js0]=q[i];
else st[][++js1]=q[i];
}
for (int i=;i<=js0;i++) q[i+ql-]=st[][i];
for (int i=;i<=js1;i++) q[i+ql+js0-]=st[][i];
solve(ql,ql+js0-,ansl,ansmid);
solve(ql+js0,qr,ansmid+,ansr);
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++) for (int j=;j<=n;j++)
{
scanf("%d",&a[++cnt_a].num);a[cnt_a].x=i;a[cnt_a].y=j;
}
sort(a+,a+cnt_a+,cmp);
for (int i=;i<=m;i++)
{
scanf("%d%d%d%d%d",&q[i].x,&q[i].y,&q[i].xx,&q[i].yy,&q[i].k);q[i].id=i;
}
solve(,m,,n*n);
for (int i=;i<=m;i++) printf("%d\n",a[ans[i]].num); }

[BZOJ2738]矩阵乘法-[整体二分+树状数组]的更多相关文章

  1. 【BZOJ2738】矩阵乘法 [整体二分][树状数组]

    矩阵乘法 Time Limit: 20 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 给你一个N*N的矩阵,不用算矩阵乘 ...

  2. 【BZOJ-2527】Meteors 整体二分 + 树状数组

    2527: [Poi2011]Meteors Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 831  Solved: 306[Submit][Stat ...

  3. 【BZOJ3110】【整体二分+树状数组区间修改/线段树】K大数查询

    Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位 ...

  4. BZOJ_3110_[Zjoi2013]K大数查询_整体二分+树状数组

    BZOJ_3110_[Zjoi2013]K大数查询_整体二分+树状数组 Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位 ...

  5. 【bzoj3110】[Zjoi2013]K大数查询 整体二分+树状数组区间修改

    题目描述 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c.如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数 ...

  6. 【bzoj4009】[HNOI2015]接水果 DFS序+树上倍增+整体二分+树状数组

    题目描述 给出一棵n个点的树,给定m条路径,每条路径有一个权值.q次询问求一个路径包含的所有给定路径中权值第k小的. 输入 第一行三个数 n和P 和Q,表示树的大小和盘子的个数和水果的个数. 接下来n ...

  7. 【bzoj2527】[Poi2011]Meteors 整体二分+树状数组

    题目描述 有N个成员国.现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1份相邻),第i份上有第Ai个国家的太空站. 这个星球经常会下陨石雨.BIU已经预测了接下来K场陨石雨的情况.BI ...

  8. BZOJ2738矩阵乘法——整体二分+二维树状数组

    题目描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入   第一行两个数N,Q,表示矩阵大小和询问组数:接下来N行N列一共N*N个数,表示这个矩阵:再接下来Q行每行5 ...

  9. 洛谷1527(bzoj2738)矩阵乘法——二维树状数组+整体二分

    题目:https://www.luogu.org/problemnew/show/P1527 不难想到(?)可以用二维树状数组.但维护什么?怎么查询是难点. 因为求第k小,可以考虑记权值树状数组,把比 ...

随机推荐

  1. MongoDB authentication failed

    0.随笔摘要: MongoDB  安装配置 MongoDB  权限控制 MongoDB  注意事项 authentication failed 1.MongoDB  下载安装配置 MongoDB官网  ...

  2. Java虚拟机12:虚拟机性能监控与故障处理工具

    前言 定位系统问题的时候,知识.经验是基础,数据是依据,工具是运用知识处理数据的手段.这里说的数据包括:运行日志.异常堆栈.GC日志.线程快照.堆转储快照等.经常使用适当的虚拟机监控和分析的工具可以加 ...

  3. Spring JPA 主键

    JPA主键生成器和主键生成策略 JPA中创建实体时,需要声明实体的主键及其主键生成策略.我们有一个实体类叫做Email,其主键上声明如下: @Id @Column(name = "EMAIL ...

  4. VC++获取一个GB级大文件的字节大小

    常规的获得小文件(2.1GB以下)的字节大小可以使用ftell,函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数.使用fseek函数后再调用函数ftell()就能非常容易地确定文 ...

  5. 无网络环境下使用docker加载镜像

    无网络环境下使用docker加载镜像 你需要做的主要有3步骤:   先从一个有网络的电脑下载docker镜像 [root@localhost ~]# docker pull hub.c.163.com ...

  6. haproxy原理理解

    1.haproxy使用最需要注意的点: 1.1连接数: 前端maxconn默认值为2000,非常有必要将其增加几倍. 1.2超时时间 timeout connect 60s # haproxy和服务端 ...

  7. 算法的泛化过程(摘自《STL源码剖析》)

    将一个叙述完整的算法转化为程序代码,不是什么难事.然而,如何将算法独立与其所处理的数据结构之外,不受数据结构的羁绊呢?换个说法,如何将我们所写的程序算法适用于任何(或者大部分)未知的数据结构(比如ar ...

  8. mac系统 IDEA+JFinal+Tomcat+Maven搭建

    1.下载Maven(http://maven.apache.org/download.cgi) 2.下载Tomcat(http://tomcat.apache.org/download-90.cgi) ...

  9. 轻量ORM-SqlRepoEx (十六)最佳实践之Dapper(2)

    简介:SqlRepoEx是 .Net平台下兼容.NET Standard 2.0人一个轻型的ORM.解决了Lambda转Sql语句这一难题,SqlRepoEx使用的是Lambda表达式,所以,对c#程 ...

  10. Xcode官方xip直接离线下载地址(更新到Xcode 9.4.1)

    Xcode 9.4.1 https://download.developer.apple.com/Developer_Tools/Xcode_9.4.1/Xcode_9.4.1.xip Xcode 9 ...