题目大意:给出一个N*N的矩阵,每次询问一个子矩形的第K小数。
整体二分即在二分答案的同时把询问分到两个集合中再分别二分直到每个询问出解。
相当于把多个询问一起二分
如何判断一个数x是不是k小呢
把矩阵中的小于等于x的数设为1,大于x的数设为0,求询问矩阵中的小于等于x的数有多少个,大于等于k说明x 有可能是k小。
#include <cstdio>
#include <algorithm>
#define N 505
#define M 60005
#define INF 1000000000
using namespace std;
int n,m;
namespace BIT {
inline int lowbit(int x) { return x&