题目链接:传送门

题目思路:整体二分(二分的是答案,附带的是操作)

     把矩阵中的元素对应成插入操作,然后就有插入和询问操作。

     然后根据插入操作对于答案的影响,询问操作所匹配的符合答案个数,将操作分为两段,继续递归。。。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <stack>
#include <cctype>
#include <queue>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <climits>
#define lson rt<<1,l,mid
#define rson rt<<1|1,mid+1,r
#define fi first
#define se second
#define ping(x,y) ((x-y)*(x-y))
#define mst(x,y) memset(x,y,sizeof(x))
#define mcp(x,y) memcpy(x,y,sizeof(y))
using namespace std;
#define gamma 0.5772156649015328606065120
#define MOD 1000000007
#define inf 0x3f3f3f3f
#define N 60005
#define maxn 1000005
typedef pair<int,int> PII;
typedef long long LL; int n,m,k,len,S,T;
int ans[N];
struct Node{
int id,x,y,a,b,v,f;
Node(){}
Node(int _id,int _x,int _y,int _a,int _b,int _v,int _f):
id(_id),x(_x),y(_y),a(_a),b(_b),v(_v),f(_f){}
}node[maxn],t1[maxn],t2[maxn];
int tree[][];
void add(int x,int y,int v){for(int i=x;i<=n;i+=(i&-i))for(int j=y;j<=n;j+=(j&-j))tree[i][j]+=v;}
int get(int x,int y){
int res=;
for(int i=x;i;i-=(i&-i))for(int j=y;j;j-=(j&-j))res+=tree[i][j];
return res;
}
int query(int x,int y,int a,int b){return get(a,b)+get(x,y)-get(x,b)-get(a,y);}
void solve(int ql,int qr,int l,int r){
if(ql>qr)return;
if(l==r){
for(int i=ql;i<=qr;++i)if(node[i].f==)
ans[node[i].id]=l;
return;
}
int len1=,len2=,mid=l+r>>;
for(int i=ql;i<=qr;++i){
if(node[i].f==){
if(node[i].v<=mid){
add(node[i].x,node[i].y,);
t1[len1++]=node[i];
}
else t2[len2++]=node[i];
}
else{
int pos=query(node[i].x-,node[i].y-,node[i].a,node[i].b);
if(pos<node[i].v){node[i].v-=pos;t2[len2++]=node[i];}
else{
t1[len1++]=node[i];
}
}
}
for(int i=ql;i<=qr;++i)if(node[i].f==&&node[i].v<=mid)add(node[i].x,node[i].y,-);
for(int i=;i<len1;++i)node[i+ql]=t1[i];
for(int i=;i<len2;++i)node[i+ql+len1]=t2[i];
solve(ql,ql+len1-,l,mid);solve(ql+len1,qr,mid+,r);
}
int main(){
int i,j,group,x,y,x1,y1,Case=;
scanf("%d%d",&n,&m);
int _min=INT_MAX,_max=INT_MIN;
for(i=;i<=n;++i)for(j=;j<=n;++j){
scanf("%d",&x);
_min=min(_min,x);
_max=max(_max,x);
node[++len]=Node(len,i,j,,,x,);
}
for(i=;i<=m;++i){
scanf("%d%d%d%d%d",&x,&y,&x1,&y1,&k);
node[++len]=Node(i,x,y,x1,y1,k,);
}
solve(,len,_min,_max);
for(i=;i<=m;++i)printf("%d\n",ans[i]);
return ;
}

tsinsen A1333. 矩阵乘法的更多相关文章

  1. tsinsen A1333. 矩阵乘法(梁 盾)

    A1333. 矩阵乘法(梁 盾) 时间限制:2.0s   内存限制:256.0MB   总提交次数:515   AC次数:211   平均分:54.14   将本题分享到:        查看未格式化 ...

  2. 【BZOJ】【2738】&【Tsinsen】【A1333】矩阵乘法

    整体二分+树状数组 过了[BZOJ][2527][POI2011]Meteors以后这题就没那么难啦~ 关键是[从小到大]依次插入数字,然后整体二分每个查询的第k大是在第几次插入中被插入的……嗯大概就 ...

  3. 【清澄A1333】【整体二分+二维树状数组】矩阵乘法(梁盾)

    试题来源 2012中国国家集训队命题答辩 问题描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入格式 第一行两个数N,Q,表示矩阵大小和询问组数: 接下来N行N列一共 ...

  4. *HDU2254 矩阵乘法

    奥运 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submissi ...

  5. *HDU 1757 矩阵乘法

    A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  6. CH Round #30 摆花[矩阵乘法]

    摆花 CH Round #30 - 清明欢乐赛 背景及描述 艺术馆门前将摆出许多花,一共有n个位置排成一排,每个位置可以摆花也可以不摆花.有些花如果摆在相邻的位置(隔着一个空的位置不算相邻),就不好看 ...

  7. POJ3070 Fibonacci[矩阵乘法]

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13677   Accepted: 9697 Descri ...

  8. bzoj 2738 矩阵乘法

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

  9. 【BZOJ-2476】战场的数目 矩阵乘法 + 递推

    2476: 战场的数目 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 58  Solved: 38[Submit][Status][Discuss] D ...

随机推荐

  1. esriControlsMousePointer常量

    控制鼠标指针选项. 不变 值 描述 esriPointerParentWindow -1 指针指定的父窗口或窗体. esriPointerDefault 0 默认指针,箭头一样. esriPointe ...

  2. RPM卸载

    安全地卸载 rpm卸载软件包,并不是简单地将原来安装的文件逐个删除,那样做的话,可能会出现这样或那样的问题.如,a软件包依靠b软件包做某些工作,若b软件包卸载了,则a软件包就不能正常运行了.rpm为用 ...

  3. yum中查找程序由哪个包提供

    有时候知道程序的名称,却不知道由那个包提供,也就是说不知道安装那个包,可以使用这个命令. 我们由provides关键字可以使用. 举例:semanage是SELinux的一个管理工具,可是我使用:yu ...

  4. Atiti。流量提升软件设计大纲规划 v1 q45

    Atiti.流量提升软件设计大纲规划 v1 q45 1. 通用数据管理1 2. 网页Url管理模块1 3. 网站domain管理1 4. ad广告管理2 5. Task任务管理2 6. 任务执行功能: ...

  5. MVC之旅(1)

    其实很久很久之前就有接触asp.net mvc了.那些年,还是在大学校园的美好青葱时光,常常听到一些大牛开口闭口都是mvc,心痒痒的也去图书馆借了本mvc的教材,应该是mvc 2.悲催的是,我都没知道 ...

  6. matplotlib 添加注释的方式

    matplotlib 添加注释的方式 matplotlib.pyplot.annotate Annotate the point xy with text s s : str The text of ...

  7. linux学习笔记18---目录结构

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统至关重要,下面 ...

  8. 做过的自定义 View

    做过的自定义 View android view custom 音频条状图 需求 详细设计 具体实现 音频条状图 需求 音频图 最终效果类似于音频图中的条状图 只是效果模拟,并不监听真实的音频 条的宽 ...

  9. (译)Getting Started——1.1.2 Basic(基础)

    本节教程会带你浏览创建简单的用户界面.添加自定义行为的整个过程.完成本节教程后,你创建的应用就可以运行在iPhone和iPad上了. 本节教程会教给你如下技能: 1. 使用Xcode创建和管理项目 2 ...

  10. C++ 函数模板一(函数模板定义)

    //函数模板定义--数据类型做参数 #include<iostream> using namespace std; /* 函数模板声明 1.函数模板定义由模板说明和函数定义组成,并且一个模 ...