【题目链接】
【思路要点】
- 不难得到 O ( N 3 M 3 ) O(N^3M^3) O(N3M3) 的暴力高斯消元做法。
- 将前 2 2 2 行,第 1 1 1 列的变量作为主元,从上到下、从左到右依次考虑变量 ( i , j ) (i,j) (i,j) 的转移式。
- 可以发现,涉及的变量中只有 ( i + 2 , j + 1 ) (i+2,j+1) (i+2,j+1) 未被主元线性表示,因而可以由该转移得到 ( i + 2 , j + 1 ) (i+2,j+1) (i+2,j+1) 关于主元的线性表示,若 ( i + 2 , j + 1 ) (i+2,j+1) (i+2,j+1) 在棋盘外,那么就可以得到一个关于主元的方程。
- 最终将得到 O ( N + M ) O(N+M) O(N+M) 个变量和等量的方程,采用高斯消元即可。
- 时间复杂度 O ( ( N + M ) 3 ) O((N+M)^3) O((N+M)3) 。
【代码】
#include<bits/stdc++.h> using namespace std; const int MAXN = 205; const int MAXP