tsinsen A1333. 矩阵乘法
题目链接:传送门

题目思路:整体二分(二分的是答案,附带的是操作)
把矩阵中的元素对应成插入操作,然后就有插入和询问操作。
然后根据插入操作对于答案的影响,询问操作所匹配的符合答案个数,将操作分为两段,继续递归。。。
#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. 矩阵乘法的更多相关文章
- tsinsen A1333. 矩阵乘法(梁 盾)
A1333. 矩阵乘法(梁 盾) 时间限制:2.0s 内存限制:256.0MB 总提交次数:515 AC次数:211 平均分:54.14 将本题分享到: 查看未格式化 ...
- 【BZOJ】【2738】&【Tsinsen】【A1333】矩阵乘法
整体二分+树状数组 过了[BZOJ][2527][POI2011]Meteors以后这题就没那么难啦~ 关键是[从小到大]依次插入数字,然后整体二分每个查询的第k大是在第几次插入中被插入的……嗯大概就 ...
- 【清澄A1333】【整体二分+二维树状数组】矩阵乘法(梁盾)
试题来源 2012中国国家集训队命题答辩 问题描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入格式 第一行两个数N,Q,表示矩阵大小和询问组数: 接下来N行N列一共 ...
- *HDU2254 矩阵乘法
奥运 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submissi ...
- *HDU 1757 矩阵乘法
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- CH Round #30 摆花[矩阵乘法]
摆花 CH Round #30 - 清明欢乐赛 背景及描述 艺术馆门前将摆出许多花,一共有n个位置排成一排,每个位置可以摆花也可以不摆花.有些花如果摆在相邻的位置(隔着一个空的位置不算相邻),就不好看 ...
- POJ3070 Fibonacci[矩阵乘法]
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13677 Accepted: 9697 Descri ...
- bzoj 2738 矩阵乘法
其实这题跟矩阵乘法没有任何卵关系,直接整体二分,用二维树状数组维护(刚刚学会>_<),复杂度好像有点爆炸(好像有十几亿不知道是不是算错了),但我们不能怂啊23333. #include&l ...
- 【BZOJ-2476】战场的数目 矩阵乘法 + 递推
2476: 战场的数目 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 58 Solved: 38[Submit][Status][Discuss] D ...
随机推荐
- php中对象是引用类型吗?
这貌似是一个极其简单的问题,还用得着专门写一篇博文?各位看官,最初我也这么认为,但这的确蒙蔽了你那水灵灵的小眼睛,不妨看看什么是引用? $a = 10; $b = &$a; $b = 20; ...
- Android MimeType的用途以及所有类型
MIME TYPE描述 多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions)是一个互联网标准,它扩展了电子邮件标准,使其能够支持非ASCII字符 ...
- RabbitMQ的应用场景以及基本原理介绍(转载)
1.背景 RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现. 2.应用场景 2.1异步处理 场景说明:用户注册后,需要发注册邮件和注册短信, ...
- 转在Python中实现PageFactory模式
转自: http://www.cnblogs.com/fnng/p/5092383.html 关于 PageFactory 的概念主要是Java中内置了PageFactory类. import org ...
- 改动文件后缀的C语言实现
,其他配置项保持一致. step 3: 在"Old2New"目录下新建名为"update.bat"的批处理文件,该文件的内容为: ChangeS ...
- 代理模式和php实现
代理模式(Proxy Pattern) : 给某一个对象提供一个代 理,并由代理对象控制对原对象的引用.代理模式的英 文叫做Proxy或Surrogate,它是一种对象结构型模式 模式动机: 在某些情 ...
- laravel的模板嵌套循环可以这样调试
@foreach($first as $value) {{ dump($value) }} @endforeach
- Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序。。
Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序.. 1. 引擎加脚本架构 跨平台,桌面与web的优势1 2. 架构桌面引擎(java,c#)2 3. php桌面引擎要点2 3. ...
- 设置phpcms v9黄页模块作为首页方法
如果我们根据需要,想把黄页作为单独的网站,我们可以用模块化安装,并且首页设置,那么仿站网就说说详细的步骤.首先,我们需要安装最新版本的phpcms V9其次,下载黄页模块,然后进行根目录的替换.再次, ...
- Ubuntu 的 apt-get 代理设置(zhuan)
url: http://qixinglu.com/post/ubuntu_apt-get_proxy_setup.html 升级到 Ubuntu10.04 后,发现 apt-get 的代理设置有改变了 ...