zoj 3614 二維RMQ 容斥

2021-07-31 17:09:41 字數 691 閱讀 2995

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...