rmq求出矩陣區間最大,陣列sum和pro分別存座標i,j到右下角的矩陣所有元素和,和平方和,然後根據容斥求出某一矩陣的元素和,平方和。然後根據方差展開求最大座標,就ok啦。。。。。
**:
#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
typedef long long ll;
const int mx=3e2+10;
int mat[mx][mx][10][10],_x,_y;
int n,m,sum[mx][mx],cases=1,q,x,y;
ll pro[mx][mx];
double ans;
void rmq()
} rmq();
printf("case %d:\n",cases++);
scanf("%d",&q);
while(q--)
}printf("(%d, %d), %.2lf\n",_x,_y,ans);
} }return 0;
}
容斥原理及二維字首和
先mk乙個容斥原理詳解 容斥原理大概就是 要計算幾個集合並集的大小,我們要先將所有單個集合的大小計算出來,然後減去所有兩個集合相交的部分,再加回所有三個集合相交的部分,再減去所有四個集合相交的部分,依此類推,一直計算到所有集合相交的部分。引用葉學長的例子 a和b出現至少一人的概率 或方案數等 a出現...
二維RMQ問題
前置知識 一維rmq及其拓展 對於乙個n m n m的矩陣,每個格仔有乙個值,有q q個詢問,每次詢問你乙個子矩陣中的最大值。1 n,m 500,q 1061 n,m 500 q 1 06每次花子矩陣大小的複雜度去查詢。複雜度最壞o q n m o q n m 我們用n n棵線段樹或者樹狀陣列來維護...
二維RMQ模板
int main for int i 0 1 i n i 因為i 0時的 和 i 0 j 0時的一樣 所以就合併了 i 0 j 0時 查詢 詢問的話,也要稍加改變,一維rmq返回的是一段區間的最值,而二維的rmq需要返回的乙個矩陣的最值,所以返回的時候要注意,所返回的一定要構成乙個矩陣 按照一維rm...