其实这题跟矩阵乘法没有任何卵关系,直接整体二分,用二维树状数组维护(刚刚学会>_<),复杂度好像有点爆炸(好像有十几亿不知道是不是算错了),但我们不能怂啊23333。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,qq;
int map[][];
int p[];
int ans[];
struct node
{
int x1,x2,y1,y2,k;
}op[];
struct nd
{
int x,y,w;
friend bool operator < (nd aa,nd bb)
{
return aa.w<bb.w;
}
}la[*];int tot;
int c[][];
void add(int x,int y,int z)
{
for(int i=x;i<=n;i+=(i&(-i)))
{
for(int j=y;j<=n;j+=(j&(-j)))
{
c[i][j]+=z;
}
}
}
int qur(int x,int y)
{
int ans=;
for(int i=x;i;i-=(i&(-i)))
{
for(int j=y;j;j-=(j&(-j)))
{
ans+=c[i][j];
}
}
return ans;
}
int tmp[][];
void solve(int L,int R,int l,int r)
{
if(L>R)return ;
if(l==r)
{
for(int i=L;i<=R;i++)ans[p[i]]=la[l].w;
return ;
}
int mid=(l+r)>>;
for(int i=l;i<=mid;i++)add(la[i].x,la[i].y,);
int cnt1=,cnt2=;
for(int i=L;i<=R;i++)
{
int y=qur(op[p[i]].x2,op[p[i]].y2)-qur(op[p[i]].x1-,op[p[i]].y2)-qur(op[p[i]].x2,op[p[i]].y1-)+qur(op[p[i]].x1-,op[p[i]].y1-);
if(y>=op[p[i]].k)tmp[][++cnt1]=p[i];
else op[p[i]].k-=y,tmp[][++cnt2]=p[i];
}
for(int i=l;i<=mid;i++)add(la[i].x,la[i].y,-);
int l1=L+cnt1-;
for(int i=;i<=cnt1;i++)p[L+i-]=tmp[][i];
for(int i=;i<=cnt2;i++)p[l1+i]=tmp[][i];
solve(L,l1,l,mid);solve(l1+,R,mid+,r);
}
int main()
{
scanf("%d%d",&n,&qq);
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
scanf("%d",&map[i][j]);
la[++tot].x=i;la[tot].y=j;la[tot].w=map[i][j];
}
}
sort(la+,la+tot+);
for(int i=;i<=qq;i++)
{
scanf("%d%d%d%d%d",&op[i].x1,&op[i].y1,&op[i].x2,&op[i].y2,&op[i].k);
p[i]=i;
}
solve(,qq,,n*n);
for(int i=;i<=qq;i++)
{
printf("%d\n",ans[i]);
}
return ;
}

bzoj 2738 矩阵乘法的更多相关文章

  1. [BZOJ 2738] 矩阵乘法 【分块】

    题目链接:BZOJ - 2738 题目分析 题目名称 “矩阵乘法” 与题目内容没有任何关系..就像VFK的 A+B Problem 一样.. 题目大意是给定一个矩阵,有许多询问,每次询问一个子矩阵中的 ...

  2. BZOJ 2738: 矩阵乘法 [整体二分]

    给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 愚蠢的名字...... 整体二分,影响因子就是矩阵里的数 把$\le mid$的矩阵元素加到二维树状数组里然后询问分成两组就行 ...

  3. BZOJ 2738 矩阵乘法(整体二分+二维树状数组)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2738 [题目大意] 给出一个方格图,询问要求求出矩阵内第k小的元素 [题解] 我们对答 ...

  4. BZOJ.2738.矩阵乘法(整体二分 二维树状数组)

    题目链接 BZOJ 洛谷 整体二分.把求序列第K小的树状数组改成二维树状数组就行了. 初始答案区间有点大,离散化一下. 因为这题是一开始给点,之后询问,so可以先处理该区间值在l~mid的修改,再处理 ...

  5. bzoj 2738: 矩阵乘法【整体二分+树状数组】

    脑子一抽开始写主席树,敲了一会发现不对-- 整体二分,用二维树状数组维护值为当前区间的格子个数,然后根据k的大小和当前询问的子矩阵里的值和k的大小关系来决定这个询问放在哪一部分向下递归 #includ ...

  6. bzoj 1297 矩阵乘法变形

    首先对于矩阵乘法的功能有很多,记得有篇论文叫矩阵乘法在信息学竞赛中的应用,里面详细介绍了矩阵的 作用 其中一个就是求图的固定时间方案数,也就是给定一张图,每两个点之间由一条边长为1的边相连, 求任意两 ...

  7. bzoj 2326 矩阵乘法

    [HNOI2011]数学作业 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2415  Solved: 1413[Submit][Status][Di ...

  8. bzoj 3240 矩阵乘法+十进制快速幂

    首先,构造出从f[][i]->f[][i+1]的转移矩阵a,和从f[i][m]->f[i+1][1]的转移矩阵b, 那么从f[1][1]转移到f[n][m]就是init*(a^(m-1)* ...

  9. BZOJ 2738 子矩阵第k大 | 二维树状数组 整体二分 分治

    BZOJ 2738 "矩阵乘法"(子矩阵第k大) 题意 给出一个矩阵,多次询问子矩阵中第k大的数是多少. 题解 我做这道题之前先照着这道题出了一道题,是这道题的一维版本,在这里:h ...

随机推荐

  1. iOS -[PFPASIDataCompressor compressBytes:length:error:shouldFinish:] in PFPGZIPInvocationCompressor.o

    添加动态库报错 "_deflate", referenced from: -[PFPASIDataCompressor compressBytes:length:error:sho ...

  2. (六)Maven之pom.xml文件简单说明

    通过前面几部分知识,我们对maven已经有了初步的印象,就像Make的Makefile.Ant的build.xml一样,Maven项目的核心是pom.xml.POM(Project Object Mo ...

  3. 深入解析Windows操作系统笔记——CH3系统机制

    3.系统机制 微软提供了一些基本组件让内核模式的组件使用: 1.陷阱分发,包括终端,延迟的过程调用(DPC),异步过程调用(APC),异常分发以及系统服务分发 2.执行体对象管理器 3.同步,包括自旋 ...

  4. 【静默安装】configToolAllCommands响应文件问题

    [静默安装]configToolAllCommands响应文件问题 客户在静默安装RAC 12.1.0.2的时候有如下的输出: Successfully Setup Software. As inst ...

  5. 常用ADC滤波处理

    #define N 70 XDATA WORD Value_buf[N]; XDATA DWORD ADCValue; static BYTE v_gu8cnt=0; static BYTE i=0; ...

  6. C# random helper class

      项目中经常需要模拟些假数据,来做测试.这个随机生成数据的helper类就应用而生: using System; using System.Text; using System.Windows.Me ...

  7. Hibernate第一个例子

    我们先搭建这样的一个架构 里面包括实体类,实现类, 大配置, 小配置(映射文件), 以及架包 实体类我们就不重点介绍了 我们先把我们所需要用到的架包导入进来 我们先在src根目录下新建一个文件夹名为l ...

  8. HashSet和TreeSet

    package com.wzy.list; import java.util.HashSet; import java.util.Iterator; import java.util.Set; imp ...

  9. jquery用一个事件控制另一个事件是否执行(不是删除事件)

    想用click事件控制mouseover事件的执行,如果用删除绑定mouseover事件以后就不能再使用mouseover了,于是只需要设置一个全局变量,并赋值false,当点击click事件,将全局 ...

  10. Python list

    序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列 ...