Luogu1527[国家集训队]矩阵乘法

题面:洛谷

解析

排名第\(k\)大,不妨考虑整体二分,二分第\(k\)大的数值\(mid\),,将大于\(mid\)的值视作1,添加到树状数组中,对每一个询问,判断它的询问区域中1的点的个数是否大于询问排名,即可将询问分作两部分递归,然而这样的复杂度是\(O(n^{2}\log{n})\),我们不妨将二分值域变为二分数值在矩阵中对应的排名,再先将矩阵中的数排序,就不用每一次都遍历整个矩阵找到大于\(mid\)的数了。

代码


// luogu-judger-enable-o2
#include<cstdio>
#include<algorithm>
#define N 505
#define M 60005
using namespace std;
int n,m,id[M],ans[M],t1[M],t2[M],tc;
struct Q{ int x1,y1,x2,y2,k; }q[M];
struct Mat{int v,x,y;bool operator < (const Mat& rhs) const { return v<rhs.v; }
}mat[N*N];
int a[N][N];
inline int In(){char c=getchar(); int x=0,ft=1;for(;c<'0'||c>'9';c=getchar()) if(c=='-') ft=-1;for(;c>='0'&&c<='9';c=getchar()) x=x*10+c-'0';return x*ft;
}
inline int LB(int x){return x&(-x);
}
inline void Add(int x,int y,int C){for(int i=x;i<=n;i+=LB(i))for(int j=y;j<=n;j+=LB(j))a[i][j]+=C;
}
inline int Sum(int x,int y){int s=0;for(int i=x;i;i-=LB(i))for(int j=y;j;j-=LB(j))s+=a[i][j];return s;
}
inline int Query(int x1,int y1,int x2,int y2){return Sum(x2,y2)-Sum(x1-1,y2)-Sum(x2,y1-1)+Sum(x1-1,y1-1);
}
void Solve(int l,int r,int ql,int qr){if(ql>qr) return;if(l==r){for(int i=ql;i<=qr;++i) ans[id[i]]=l;return;}int mid=(l+r)>>1,p1=0,p2=0;for(int i=l;i<=mid;++i) Add(mat[i].x,mat[i].y,1);for(int i=ql,u,s;i<=qr;++i){u=id[i]; s=Query(q[u].x1,q[u].y1,q[u].x2,q[u].y2);if(s>=q[u].k) t1[++p1]=u;else q[u].k-=s,t2[++p2]=u;}for(int i=l;i<=mid;++i) Add(mat[i].x,mat[i].y,-1);for(int i=ql;i<=ql+p1-1;++i) id[i]=t1[i-ql+1];for(int i=ql+p1;i<=qr;++i) id[i]=t2[i-ql-p1+1];Solve(l,mid,ql,ql+p1-1); Solve(mid+1,r,ql+p1,qr);
}
int main(){n=In(); m=In();for(int i=1;i<=n;++i) for(int j=1;j<=n;++j)mat[++tc].v=In(),mat[tc].x=i,mat[tc].y=j;sort(mat+1,mat+1+tc);for(int i=1;i<=m;++i){q[i].x1=In(); q[i].y1=In();q[i].x2=In(); q[i].y2=In();q[i].k=In(); id[i]=i;}Solve(1,n*n,1,m);for(int i=1;i<=m;++i) printf("%d\n",mat[ans[i]].v);return 0;
}

转载于:https://www.cnblogs.com/pkh68/p/10526726.html

Luogu1527[国家集训队]矩阵乘法相关推荐

  1. P1527 [国家集训队]矩阵乘法

    P1527 [国家集训队]矩阵乘法 题意: 给你一个 n×n 的矩阵,每次询问一个子矩形的第 k 小数. 题解: 整体二分稍微加强化 模板题是一个序列,现在升级成一个矩阵求,做法和原理都是一样的 使用 ...

  2. 洛谷P1527 [国家集训队] 矩阵乘法 [整体二分,二维树状数组]

    题目传送门 矩阵乘法 题目描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入输出格式 输入格式: 第一行两个数N,Q,表示矩阵大小和询问组数: 接下来N行N列一共N* ...

  3. P1527 [国家集训队]矩阵乘法 整体二分 + 二维树状数组

    传送门 题意: 思路: 算是个整体二分的板子啦,不过这个是二维的矩阵,我们只需要把一位树状数组改成二维的,让后动态维护单点加,区间查询前缀和即可. //#pragma GCC optimize(2) ...

  4. 【洛谷1527】 [国家集训队]矩阵乘法(整体二分)

    传送门 洛谷 Solution 考虑看到什么k小就整体二分套上去试一下. 矩形k小整体二分+二维树状数组就好了. 代码实现 // luogu-judger-enable-o2 /*mail: mlea ...

  5. Luogu4451 [国家集训队]整数的lqp拆分

    题目链接:洛谷 题目大意:求对于所有$n$的拆分$a_i$,使得$\sum_{i=1}^ma_i=n$,$\prod_{i=1}^mf_{a_i}$之和.其中$f_i$为斐波那契数列的第$i$项. 数 ...

  6. zcmu-1184(矩阵乘法)

    1184: 帮我求算一下斐波那契数吧 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 221  Solved: 42 [Submit][Status][ ...

  7. 国家集训队论文分类整理[转]

    国家集训队论文分类整理 转自这里 dalao写的东西,是非常有学习价值的.反正noip不一定会用,但是对以后肯定有用的. 组合数学 计数与统计 2001 - 符文杰:<Pólya原理及其应用&g ...

  8. 国家集训队论文分类整理

    国家集训队论文分类整理 组合数学 计数与统计 2001 - 符文杰:<Pólya原理及其应用> 2003 - 许智磊:<浅谈补集转化思想在统计问题中的应用> 2007 - 周冬 ...

  9. 国家集训队论文分类整理(转)

    国家集训队论文分类整理 ----------转自https://www.cnblogs.com/AbandonZHANG/archive/2012/07/21/2601889.html 距离ACM/I ...

  10. 国家集训队论文集题目

    这些论文还是很不错的,可以当成专题到谷歌上搜着看看,权当拓展下知识. 国家集训队1999论文集 陈宏:<数据结构的选择与算法效率--从IOI98试题PICTURE谈起> 来煜坤:<把 ...

最新文章

  1. 网站优化之网站为什么要做301定向跳转?
  2. r语言 plot_R和Python的特点对比,这样你就知道该怎么选择了
  3. coffeeScript学习01
  4. 广度优先遍历类似于二叉树的_二叉树的各种遍历方法的简单解释
  5. 12个ggplot2扩展包帮你实现更强大的可视化
  6. HTML5中的自定义属性总结
  7. 浅说机器学习中“迭代法”
  8. shell 自动回车_macos开机自动屏蔽独显
  9. 水题总结NYOJ74,1094,60,975,111,833
  10. 将js对象转化为树形结构
  11. atitit.session的原理以及设计 java php实现的异同
  12. DGIOT实战教程——虚拟ModbusRTU接入
  13. Excel汇总的撤销整个工作表保护的2种操作方法!
  14. Debian10安装Chromium浏览器
  15. html表单界面设计,ui界面表单设计的三个方面
  16. hadoop is not in the sudoers file. This incident will be reported.问题解决
  17. 2020-12 补丁日: 微软多个高危漏洞通告
  18. java程序员面试自我介绍
  19. 如何在官网下载java JDK或JRE的历史版本
  20. 技术专业术语/专业名词 - 收集

热门文章

  1. 十大编程语言的优劣对比简述
  2. 最齐的Typora使用教程
  3. Qt实现YOLO目标检测及其界面制作
  4. 如何清除计算机的u盘使用记录,如何消除电脑上U盘使用记录
  5. 好站推荐-四个在线识别字体网站,从此不在为找字体烦恼
  6. 如何快速学习一门技术?十步学习法
  7. 浏览器打开默认为360主页,如何修改
  8. linux系统中怎么复制粘贴快捷键设置,复制粘贴的快捷键是什么 复制粘贴的快捷键介绍【步骤】...
  9. 集成第三方SDK之支付宝支付
  10. C#在Word表格中插入图片调整大小Debug