设子矩阵横向起点终点 l 1 , r 1 l_1,\ r_1 l1, r1,纵向起点终点 l 2 , r 2 l_2,\ r_2 l2, r2,则子矩阵平均值可以表示为: ∑ i = l 1 r 1 ∑ j = l 2 r 2 W [ i ] [ j ] ( r 1 − l 1 + 1 ) × ( r 2 − l 2 + 1 ) = ∑ i = l 1 r 1 ∑ j = l 2 r 2 a i + b j ( r 1 − l 1 + 1 ) × ( r 2 − l 2 + 1 ) = ( r 2 − l 2 + 1 ) ∑ i = l 1 r 1 a i + ( r 1 − l 1 + 1 ) ∑ j = l 2 r 2 b i ( r 1 − l 1 + 1 ) × ( r 2 − l 2 + 1 ) = ∑ i = l 1 r 1 a i r 1 − l 1 + 1 + ∑ j = l 2 r 2 b i r 2 − l 2 + 1 \begin{aligned} & \sum^{r_1}_{i = l_1} \sum^{r_2}_{j = l_2} \frac{W[i][j]}{(r_1 - l_1 + 1) \times(r_2 - l_2 + 1)} \\ &=\sum^{r_1}_{i = l_1} \sum^{r_2}_{j = l_2} \frac{a_i + b_j}{(r_1 - l_1 + 1) \times(r_2 - l_2 + 1)} \\ &=\frac{(r_2 - l_2 + 1)\sum^{r_1}_{i = l_1}a_i + (r_1 - l_1 + 1) \sum^{r_2}_{j = l_2}b_i }{(r_1 - l_1 + 1) \times(r_2 - l_2 + 1)} \\ &=\frac{\sum^{r_1}_{i = l_1}a_i}{r_1 - l_1 + 1}+\frac{\sum^{r_2}_{j = l_2}b_i}{r_2 - l_2 + 1} \end{aligned} i=l1∑r1j=l2∑r2(r1−l1+1)×(r2−l2+1)W[i][j]=i=l1∑r1j=l2∑r2(r1−l1+1)×(r2−l2+1)ai+bj=(r1−l1+1)×(r2−l2+1)(r2−l2+1)∑i=l1r1ai+(r1−l1+1)∑j=l2r2bi=r1−l1+1∑i=l1r1ai+r2−l2+1∑j=l2r2bi 分别对两部分求极值即可。对于求极值可以使用二分查找求解。
#include
#define int long long
#define mod 1000000007
using namespace std;
int n, m, x, y, t, tot;
double ans;
double a[200005], b[200005], sum[200005];
double erfen(double *a, int n, int f){
double l = -1e6, r = 1e6;
while (r - l > 1e-10){
double mid = (l + r) / 2;
for (int i = 1; i m >> x >> y;
for (int i = 1; i > a[i];
ans += erfen(a, n, x);
for (int i = 1; i > a[i];
ans += erfen(a, m, y);
cout
关注
打赏
- 回坑记之或许是退役赛季?
- [LCT刷题] P1501 [国家集训队]Tree II
- [LCT刷题] P2147 洞穴勘测
- 2022-2023 ICPC Brazil Subregional Programming Contest VP记录
- [线段树套单调栈] 2019-2020 ICPC Asia Hong Kong Regional Contest H.[Hold the Line]
- The 2021 ICPC Asia Nanjing Regional Contest E.Paimon Segment Tree 区间合并线段树/维护矩阵乘法
- CF580E - Kefa and Watch 线段树维护哈希
- HDU5869 Different GCD Subarray Query 离线查询/区间贡献
- 27.CF1004F Sonya and Bitwise OR 区间合并线段树
- 26.CF1000F One Occurrence