深圳坪山比亚迪,最近的seo网站优化排名,太原市建设厅官方网站,wordpress wphttps://www.luogu.com.cn/problem/P9366
构造循环矩阵#xff0c;考虑反射容斥和将军饮马 考虑二维不太好做#xff0c;我们曼哈顿距离转切比雪夫距离#xff0c;变成一维的情况。
由于棋盘是正方形的#xff0c;所以循环长度为 2 n 4 2n4 2n4。用多项式快速幂预处理考虑反射容斥和将军饮马 考虑二维不太好做我们曼哈顿距离转切比雪夫距离变成一维的情况。
由于棋盘是正方形的所以循环长度为 2 n 4 2n4 2n4。用多项式快速幂预处理询问记得考虑正负两个方向。
auto kuai(int T) {if(T0) return atcoder :: Poly({1}); auto p kuai(T/2); p * p; for(int iM; i p.size(); i) p[i-M]p[i]; p p.modxk(M); if(T % 2 0) return p; p p.mulxk(1) p.mulxk(M-1); for(int iM; i p.size(); i) p[i-M]p[i]; p p.modxk(M); return p;
}signed main()
{
// freopen(in.txt, r, stdin);
// freopen(out.txt, w, stdout);
// Tread();
// while(T--) {
//
// }nread(); Tread(); qread(); N2*(n1)2; M2*N; auto res kuai(T); auto Go [] (int u0, int v0, int u1, int v1) {int dx ( ((u1v1) - (u0v0)) % M M)%M; int dy ( ((u1-v1) - (u0-v0)) % M M)%M;
// printf(%lld %lld | %lld %lld\n, res[dx].x, res[dy].x, res[(dxN)%M], res[(dyN)%M]); return res[dx] * res[dy] res[(dxN)%M] * res[(dyN)%M]; }; while(q--) {u0 read(); v0 read(); u1 read(); v1 read(); auto ans Go(u0, v0, u1, v1); ans - Go(u0, v0, N - 2 - u1, v1); ans - Go(u0, v0, u1, N - 2 - v1); ans Go(u0, v0, N - 2- u1, N - 2 - v1); printf(%lld\n, ans.x); }return 0;
}