设子矩阵横向起点终点 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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?