全线RE的代码。。。 先搁这吧,下次再说.flag

//#include <iostream>
#include <cstdio>
//#include <cstring>
#include <algorithm>
//#include <cmath>
#define R(a,b,c) for(register int a = (b); a <= (c); ++ a)
#define nR(a,b,c) for(register int a = (b); a >= (c); -- a)
#define Max(a,b) ((a) > (b) ? (a) : (b))
#define Min(a,b) ((a) < (b) ? (a) : (b))
#define Fill(a,b) memset(a, b, sizeof(a))
#define Swap(a,b) a^=b^=a^=b
#define ll long long //#define ON_DEBUG #ifdef ON_DEBUG #define D_e_Line printf("\n\n----------\n\n")
#define D_e(x) cout << #x << " = " << x << endl
#define Pause() system("pause") #else #define D_e_Line ; #endif struct ios{
template<typename ATP>ios& operator >> (ATP &x){
x = 0; int f = 1; char c;
for(c = getchar(); c < '0' || c > '9'; c = getchar()) if(c == '-') f = -1;
while(c >= '0' && c <= '9') x = x * 10 + (c ^ '0'), c = getchar();
x*= f;
return *this;
}
}io;
using namespace std; const int N = 507;
const int M = 60007; int n; struct Matrix{
int x, y, val;
bool operator < (const Matrix &com) const{
return val < com.val;
}
}mp[N*N];
int cnt; struct Questions{
int xx1, yy1, xx2, yy2, K;
}q[M]; int t[N][N];
inline void Updata(int x, int y, int val){
for(register int i = x; i <= n; i += i&-i)
for(register int j = y; j <= n; j += j&-j)
t[i][j] += val;
}
inline int Query(int x, int y){
int s = 0;
for(register int i = x; i; i -= i&-i)
for(register int j = y; j; j -= j&-j)
s += t[i][j];
return s;
}
// I don't know what happend below
//inline void Updata(int x, int y, int val){
// for(; x <= n; x += x&-x)
// for(; y <= n; y += y&-y)
// t[x][y] += val;
//}
//inline int Query(int x, int y){
// int s = 0;
// for(; x; x -= x&-x)
// for(; y; y -= y&-y)
// s += t[x][y];
// return s;
//} inline int Calc(int xx1, int yy1, int xx2, int yy2){
return Query(xx2, yy2)-Query(xx2, yy1-1)-Query(xx1-1, yy2)+Query(xx1-1, yy1-1);
} int id[N],siz[N],ans[N];
int tmp[N], tmp1[N], tmp2[N];
inline void Dictomy(int l, int r, int L, int R){
if(L > R) return;
if(l == r){
R(i,L,R)
ans[id[i]] = mp[l].val;
return;
}
int mid = (l + r) >> 1, cnt1 = 0, cnt2 = 0; R(i,l,mid) Updata(mp[i].x, mp[i].y, 1); R(i,L,R){
int sum = Calc(q[id[i]].xx1, q[id[i]].yy1, q[id[i]].xx2, q[id[i]].yy2);
if(siz[id[i]]+sum >= q[id[i]].K){
tmp1[++cnt1] = id[i];
}
else{
siz[id[i]] += sum;
tmp2[++cnt2] = id[i];
}
} R(i,l,mid) Updata(mp[i].x, mp[i].y, -1); int qCnt = L-1;
R(i,1,cnt1){
tmp[++qCnt] = tmp1[i];
id[qCnt] = tmp[qCnt];
}
R(i,1,cnt2){
tmp[++qCnt] = tmp2[i];
id[qCnt] = tmp[qCnt];
} Dictomy(l, mid, L, L + cnt1 - 1);
Dictomy(mid + 1, r, L + cnt1, R);
} //#define FileInTheHole
int main(){
//#ifdef FileInTheHole
// D_e_Line;
// freopen("in.txt", "r", stdin);
//#endif
int Que;
io >> n >> Que; R(i,1,n){
R(j,1,n){
int x;
io >> x;
mp[++cnt] = (Matrix){i, j, x};
}
} sort(mp + 1, mp + cnt + 1); R(i,1,Que){
io >> q[i].xx1 >> q[i].yy1 >> q[i].xx2 >> q[i].yy2 >> q[i].K;
id[i] = i;
} Dictomy(1, cnt, 1, Que); R(i,1,Que)
printf("%d\n", ans[i]); return 0;
}

参考博客

Luogu1527 [国家集训队]矩阵乘法 (整体二分)(Unfinished)的更多相关文章

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

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

  2. 洛谷$P1527$ [国家集训队]矩阵乘法 整体二分

    正解:整体二分 解题报告: 传送门$QwQ$ 阿看到这种查询若干次第$k$小显然就想到整体二分$QwQ$? 然后现在就只要考虑怎么快速求出一个矩形内所有小于某个数的数的个数? 开始我的想法是离散化然后 ...

  3. P1527 [国家集训队]矩阵乘法 [整体二分]

    权值排序,整体二分,没了. // by Isaunoya #include <bits/stdc++.h> using namespace std; #define rep(i, x, y ...

  4. Luogu-1527 [国家集训队]矩阵乘法

    Luogu-1527 [国家集训队]矩阵乘法 题面 Luogu-1527 题解 昨天学CDQ分治时做了一些题,但是因为题(wo)太(tai)水(lan)了(le)并没有整理 学了一晚上的整体二分,拿这 ...

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

    luogu 题意 给你一个\(N*N\)的矩阵,每次询问一个子矩形的第K小数.(居然连修改都不带的) \(N\le500,Q\le60000\) sol 整体二分+二维树状数组裸题. 复杂度是\(O( ...

  6. 【LG1527】[国家集训队]矩阵乘法

    [LG1527][国家集训队]矩阵乘法 题面 洛谷 题解 我也不知道为什么取个这样的名字... 其实就是区间\(kth\)扩展到二维 还是用整体二分搞啦,把树状数组换成二维的 其他的基本没有什么差别 ...

  7. 洛谷 P1527 [国家集训队]矩阵乘法 解题报告

    P1527 [国家集训队]矩阵乘法 题目描述 给你一个\(N*N\)的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第\(K\)小数. 输入输出格式 输入格式: 第一行两个数\(N,Q\),表示矩阵大 ...

  8. [洛谷P1527] [国家集训队]矩阵乘法

    洛谷题目链接:[国家集训队]矩阵乘法 题目背景 原 <补丁VS错误>请前往P2761 题目描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入输出格式 输入 ...

  9. P1527 [国家集训队]矩阵乘法(整体二分)

    Link 整体二分的经典例题. 对于整体二分,我个人的理解是二分答案套分治. 具体来说就是对答案进行二分,然后对于询问进行类似于权值线段树求区间第 \(k\) 大的分治做法. 首先,我们暴力做法就是对 ...

随机推荐

  1. 制造企业信息化时代,SaaS系统下沉,移动端上升

    这个时代,我们是不是有很多岗位一定是要在电脑前面完成?如果我们让部分岗位的办公室人员离开电脑,让他们通过移动端来完成工作,这又会产生出一个什么样的变化?是否意味着可以有更多的时间在一线生产制造现场,从 ...

  2. 【lora无线数传通信模块】亿佰特E22串口模块用于物联网地震预警传感通信方案

    物联网地震预警项目介绍: 地震,俗称地动.它像平常的刮风下雨一样,是一种常见的自然现象,是地壳运动的一种表现,即地球内部缓慢积累的能量突然释放而引起的地球表层的振动.据统计,5级以上地震就能够造成破坏 ...

  3. element ui FORM表单

    form表单 Form-Item Slot [label] 旧版语法 <el-form-item label="活动名称" prop="name"> ...

  4. Django-使用nginx部署

    本地部署 uWSGI 在部署之前,我们得先了解几个概念 wsgi web应用程序之间的接口.它的作用就像是桥梁,连接在web服务器和web应用框架之间. uwsgi 是一种传输协议,用于定义传输信息的 ...

  5. HDLBits->Circuits->Multiplexers->Mux256to1v

    Verilog切片语法 题目要求如下 Create a 4-bit wide, 256-to-1 multiplexer. The 256 4-bit inputs are all packed in ...

  6. 《ASP.NET Core 6框架揭秘》样章发布[200页/5章]

    作为<ASP.NET Core 3 框架揭秘>的升级版,<ASP.NET Core 6框架揭秘>不仅针对ASP.NET Core 6的新特性进行了修订,并添加了若干原来没有的内 ...

  7. centos系统管理高级篇

    1 enable virtual box 控制 - 关机 可以通过虚拟机的关机按钮执行关机,而不是登陆centos再执行init 0 首先,安装acpid包 如果你的centos已经安装这个包,就省略 ...

  8. Vmware虚拟机硬件兼容性

    All virtual machines have a hardware version. The hardware version indicates which virtual hardware ...

  9. 各种Git Bash乱码解决

    乱码情景一: 当使用git log 出现乱码时,修改 %GIT_HOME%\etc\gitconfig 文件,加入如下内容: [gui] encoding = utf-8[i18n] commiten ...

  10. vue3代码编写

    vue3代码编写 团队内的vue3已经升级一年,在这一年中vue也在不停的更新,为了最大化组合式api带来的优势,便需要合理规范代码的编写方式- 1.从vue2到vue3 vue2组件采用配置式API ...