tsinsen A1333. 矩阵乘法(梁 盾)
接下来N行N列一共N*N个数,表示这个矩阵;
再接下来Q行每行5个数描述一个询问:x1,y1,x2,y2,k表示找到以(x1,y1)为左上角、以(x2,y2)为右下角的子矩形中的第K小数。
2 1
3 4
1 2 1 2 1
1 1 2 2 3
3
20%的数据:N<=100,Q<=1000;
40%的数据:N<=300,Q<=10000;
60%的数据:N<=400,Q<=30000;
100%的数据:N<=500,Q<=60000。
#include<cstdio>
#include<iostream>
using namespace std;
inline int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
const int N=,Z=3.5e5+;
const int inf=2e9;
struct node{
int x1,x2,y1,y2,k,opt,id;
}p[Z],p1[Z],p2[Z];
int n,m,tot,BIT[N][N],ans[Z];
int mx,mn;
inline int lowbit(int x){
return x&-x;
}
inline void update(int x,int y,int v){
for(int i=x;i<=n;i+=lowbit(i)){
for(int j=y;j<=n;j+=lowbit(j)){
BIT[i][j]+=v;
}
}
}
inline int query(int x,int y){
int res=;
for(int i=x;i;i-=lowbit(i)){
for(int j=y;j;j-=lowbit(j)){
res+=BIT[i][j];
}
}
return res;
}
void solve(int l,int r,int x,int y){
if(l>r||x>y) return ;
if(x==y){
for(int i=l;i<=r;i++) if(p[i].opt) ans[p[i].id]=x;
return ;
}
int mid=x+y>>,i,t1(),t2(),tt();
for(i=l;i<=r;i++){
if(!p[i].opt){
if(p[i].k<=mid){
p1[++t1]=p[i];
update(p1[t1].x1,p1[t1].y1,);
}
else{
p2[++t2]=p[i];
}
}
else{
tt=query(p[i].x2,p[i].y2)-query(p[i].x1-,p[i].y2)-query(p[i].x2,p[i].y1-)+query(p[i].x1-,p[i].y1-);
if(p[i].k<=tt){
p1[++t1]=p[i];
}
else{
p[i].k-=tt;
p2[++t2]=p[i];
}
}
}
for(i=;i<=t1;i++) if(!p1[i].opt) update(p1[i].x1,p1[i].y1,-);
for(i=;i<=t1;i++) p[l+i-]=p1[i];
for(i=;i<=t2;i++) p[l+t1+i-]=p2[i];
solve(l,l+t1-,x,mid);
solve(l+t1,r,mid+,y); }
int main(){
mx=-inf;mn=inf;
n=read();m=read();
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
p[++tot].opt=;
p[tot].x1=i;
p[tot].y1=j;
p[tot].k=read();
mx=max(mx,p[tot].k);
mn=min(mn,p[tot].k);
}
}
for(int i=;i<=m;i++){
p[++tot].opt=;
p[tot].x1=read();
p[tot].y1=read();
p[tot].x2=read();
p[tot].y2=read();
p[tot].k=read();
p[tot].id=i;
}
solve(,tot,mn,mx);
for(int i=;i<=m;i++) printf("%d\n",ans[i]);
return ;
}
tsinsen A1333. 矩阵乘法(梁 盾)的更多相关文章
- 【清澄A1333】【整体二分+二维树状数组】矩阵乘法(梁盾)
试题来源 2012中国国家集训队命题答辩 问题描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入格式 第一行两个数N,Q,表示矩阵大小和询问组数: 接下来N行N列一共 ...
- tsinsen A1333. 矩阵乘法
题目链接:传送门 题目思路:整体二分(二分的是答案,附带的是操作) 把矩阵中的元素对应成插入操作,然后就有插入和询问操作. 然后根据插入操作对于答案的影响,询问操作所匹配的符合答案个数,将操作分为两段 ...
- 【BZOJ】【2738】&【Tsinsen】【A1333】矩阵乘法
整体二分+树状数组 过了[BZOJ][2527][POI2011]Meteors以后这题就没那么难啦~ 关键是[从小到大]依次插入数字,然后整体二分每个查询的第k大是在第几次插入中被插入的……嗯大概就 ...
- *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 ...
随机推荐
- hibernate学习系列-----(6)hibernate对集合属性的操作之Set集合篇
先说一段废话吧,本打算每天把所学的知识总结为博客的,但是昨天为什么没有写呢?没有学习吗?No,那是为什么?贪玩,对,这位同学说对了,老实说昨天感觉身体不怎么舒服,大家都知道,这其实就是为自己懒找借口, ...
- Struts2数据类型转换之批量数据转换
前面我们实现了从字符串到User对象的转换.如果表单中有多个User数据,我们可以批量转换. 我们把input.jsp修改为: <h1>使用分号隔开username password< ...
- webview漏洞 -转
原文链接:http://www.cnblogs.com/goodhacker/p/3343837.html 一.漏洞描述 近期,微信等多款安卓流行应用曝出高危挂马漏洞:只要点击好友消息或朋友圈中的一条 ...
- datagridview 日期列排序
1.datagridview 日期列排序 private void Form1_Load(object sender, EventArgs e) { //方法1 dataGridView1.Colum ...
- TCP/IP ---互联网的地址
互联网上的每个接口必须有一个唯一的I n t e r n e t地址(也称作I P地址). I P地址长32 bit.I P地址具有一定的结构,五类不同 的互联网地址格式如图1 - 5所示. 这些3 ...
- POJ 3667 Hotel(线段树)
POJ 3667 Hotel 题目链接 题意:有n个房间,如今有两个操作 1.找到连续长度a的空房间.入住,要尽量靠左边,假设有输出最左边的房间标号,假设没有输出0 2.清空[a, a + b - 1 ...
- Creating Dialogbased Windows Application (4) / 创建基于对话框的Windows应用程序(四)Edit Control、Combo Box的应用、Unicode转ANSI、Open File Dialog、文件读取、可变参数、文本框自动滚动 / VC++, Windows
创建基于对话框的Windows应用程序(四)—— Edit Control.Combo Box的应用.Unicode转ANSI.Open File Dialog.文件读取.可变参数.自动滚动 之前的介 ...
- HttpClient4.X 升级 入门 + http连接池使用
转载请注明出处,谢谢~ http://blog.csdn.net/shootyou/archive/2011/05/12/6415248.aspx 在一次服务器异常的排查过程当中(服务器异常排查的过程 ...
- 661. Image Smoother【easy】
661. Image Smoother[easy] Given a 2D integer matrix M representing the gray scale of an image, you n ...
- 60. Search Insert Position 【easy】
60. Search Insert Position [easy] Given a sorted array and a target value, return the index if the t ...