题解
2026-08-22 21:17:10
发布于:辽宁
#include<bits/stdc++.h>
using namespace std;
#define ar(x) array<int,x>
#define pb push_back
const int N=2e6+100,MOD=1e9+7;
inline int qm(int x,int y=MOD-2){ int res=1; for(;y;y>>=1,x=1llxx%MOD) if(y&1) res=1llresx%MOD; return res; }
inline void mod(int &x){ if(x>=MOD) x-=MOD; if(x<0) x+=MOD; }
#define gc getchar()
#define rd read()
inline int read()
{
int x=0,f=0; char c=gc;
for(;c<'0'||c>'9';c=gc) f|=(c=='-');
for(;c>='0'&&c<='9';c=gc) x=(x<<1)+(x<<3)+(c^48);
return f?-x:x;
}
int jc[N],fjc[N];
void init(int n)
{
jc[0]=1; for(int i=1;i<=n;++i) jc[i]=1lljc[i-1]i%MOD;
fjc[n]=qm(jc[n]); for(int i=n-1;~i;--i) fjc[i]=1llfjc[i+1](i+1)%MOD;
}
inline int CM(int n,int m){ return n<0||m<0||m>n?0:1lljc[n]fjc[m]%MODfjc[n-m]%MOD; }
inline int calc(int x_1,int y_1,int x_2,int y_2){ return CM(abs(x_2-x_1)+abs(y_2-y_1),abs(x_2-x_1)); }
int x[7],y[7],ans=0;
vector<ar(3)> A,B,C;
void sol(ar(3) a,ar(3) b,ar(3) c)
{
int res=0;
for(int i=a[1];i<=b[1];++i) mod(res+=1llcalc(b[0],i,a[0],a[1])calc(b[0]+1,i,c[0],c[1])%MOD(b[0]-a[0]+i-a[1]+1)%MOD);
for(int i=a[0];i<=b[0];++i) mod(res+=1ll*calc(i,b[1],a[0],a[1])calc(i,b[1]+1,c[0],c[1])%MOD(i-a[0]+b[1]-a[1]+1)%MOD);
mod(ans+=a[2]*b[2]*c[2]*res);
}
int main()
{
init(N-1);
for(int i=1;i<=6;++i) x[i]=rd;
for(int i=1;i<=6;++i) y[i]=rd;
A.pb({x[2],y[2],1}),A.pb({x[1]-1,y[1]-1,1}),A.pb({x[2],y[1]-1,-1}),A.pb({x[1]-1,y[2],-1});
B.pb({x[4],y[4],1}),B.pb({x[3]-1,y[3]-1,1}),B.pb({x[4],y[3]-1,-1}),B.pb({x[3]-1,y[4],-1});
C.pb({x[6]+1,y[6]+1,1}),C.pb({x[5],y[5],1}),C.pb({x[6]+1,y[5],-1}),C.pb({x[5],y[6]+1,-1});
for(auto a:A) for(auto b:B) for(auto c:C) sol(a,b,c);
printf("%d\n", ans);
return 0;
}
这里空空如也

有帮助,赞一个