题意:给出m条平行于x轴的直线:yi ,n条平行于y轴的直线xi,n,m<=1e5,求四元组(i,j,k,l)组成不同的矩形面积之和,i,j<=n,k,l<=m;
ans=segma(1~n)segma(1~m)(xj-xi)*(yl-yk)ans=segma(xj-xi)*segma(yl-yk)
n<=1e5,如何快速得到segma(xj-xi),计算xk的贡献 xk加了k-1次 被减了n-k次 segma(xj-xi)=segma((k-1)xk-(n-k)xk)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+20;
const ll mod=1e9+7;
ll x[N],y[N];
int main()
{
ll n,m;
while(cin>>n>>m)
{
for(int i=1;i<=n;i++)
scanf("%lld",&x[i]);
for(int i=1;i<=m;i++)
scanf("%lld",&y[i]);
ll ans=0,s1=0,s2=0;
for(ll i=1;i<=n;i++)
{
s1=s1+(i-1)*x[i];
s1=s1-(n-i)*x[i];
s1=(s1+mod)%mod;
}
for(ll i=1;i<=m;i++)
{
s2=s2+(i-1)*y[i];
s2=s2-(m-i)*y[i];
s2=(s2+mod)%mod;
}
ans=(s1*s2)%mod;
cout<<ans<<endl;
}
return 0;
}