最优解。
2026-03-31 20:21:25
发布于:江苏
21阅读
0回复
0点赞
首先☝️,因为……(你们知道的)所以这道题应该……(你们懂的)
下面直接上代码:
#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=1ll*x*x%MOD) if(y&1) res=1ll*res*x%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]=1ll*jc[i-1]*i%MOD;
fjc[n]=qm(jc[n]);for(int i=n-1;~i;--i)fjc[i]=1ll*fjc[i+1]*(i+1)%MOD;
}
inline int CM(int n,int m){ return n<0||m<0||m>n?0:1ll*jc[n]*fjc[m]%MOD*fjc[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+=1ll*calc(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;
}
全部评论 2
https://www.luogu.com.cn/article/nz52idc7,嗯
23小时前 来自 浙江
1行的兄弟行的
23小时前 来自 浙江
1
厉害
3小时前 来自 广东
0











有帮助,赞一个