题目链接:传送门

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

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

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

#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. (七)Oracle学习笔记—— 游标

    1.游标简介 游标用来处理从数据库中检索的多行记录(使用SELECT语句).利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集. 为了处理SQL语句,Oracle将在内存中分配一个区域,这就是 ...

  2. 学会Git玩转Github笔记(二)——Git使用

    一.Git基本工作流程 Git工作区域 向仓库中添加文件流程 二. Git初始化及仓库创建和操作 基本信息设置 . 设置用户名 git config --global user.name 'itcas ...

  3. GCC手册学习(序)

    已经是2014年的年末了,又快过了一年.今年,一定要认真把GCC再学习一遍,做好笔记. 总览 gcc [option|filename] ... g++ [option|filename] ...   ...

  4. nodejs 中使用shell脚本

    虽然nodejs的require('child_process').execSync可以使用shell,但其实问题特别多.尤其是符号和语法冲突,可读性也很差,只能完成一些小规模的shell使用. co ...

  5. javascript 反调试 监听用户打开了Chrome devtool

    let div = document.createElement('div'); let loop = setInterval(() => {     console.log(div);     ...

  6. [k8s]kubectl windows配置(kubernetic) && kubectl config set-context使用Kubernetic

    参考: https://feisky.gitbooks.io/kubernetes/components/kubectl.html https://kubernetes.io/docs/tasks/t ...

  7. lantin1

    Latin1是ISO-8859-1的别名,有些环境下写作Latin-1. ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCI ...

  8. java @override 报错处理

    转载自:http://blog.sina.com.cn/s/blog_9c7605530101kl9r.html 一.java @override 报错处理 做项目的时候,同事那边电脑上编译通过的ja ...

  9. Spring Boot+Drools规则引擎整合

    目的 官方的Drools范例大都是基于纯Java项目或Maven项目,而基于Spring Boot项目的很少. 本文介绍如何在Spring Boot项目上加上Drools规则引擎. POM依赖 POM ...

  10. ffmpeg 和 x264的参数对照

    ffmpeg 和 x264的参数对照   x264 ffmpeg 说明 命令行 字段 命令行 字段 qp qp_constant cqp cqp 固定量化因子.取值范围0到51. 经常取值在20-40 ...