不僅題意不太清楚而且實現過程還有一堆細節的題目。。orz
其實這題就是給你 \(m\) 個同餘方程,然後有 \(n\) 個變數 \(x\)(其中 \(x\in [3, 9]\)),記第 \(i\) 個方程第 \(j\) 個變數 \(x_j\) (其中 \(x\in [3, 9]\))的個數為 \(a_j\),\(b_i\) 為兩個給出的日子的間隔天數,則滿足:
\[\left\
\sum_^n a_ x_ \equiv b_1 \pmod 7
\\ \dots
\\ \sum_^n a_ x_ \equiv b_n \pmod 7
\end\right.
\]看到這個形式,自然是考慮使用高斯消元來解決,如果得到的矩陣的秩為 \(n\),當然可以直接得到答案——由於 \(x\) 值域不大,直接對每個變數 \(x\) 進行值的列舉,如果出現了無解情況直接return
,若每個變數都有解就輸出解即可。
但是情況沒有這麼簡單,
最簡階梯形矩陣例子:\[\begin
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 2 & 3 \\
0 & 0 & 0 & 0 \\
\end
\]
// problem: 小部件廠
// contest: acwing
// url:
// memory limit: 64 mb
// time limit: 1000 ms
// // powered by cp editor (
#pragma gcc optimize(2)
#pragma gcc optimize(3)
#pragma gcc optimize("ofast")
#includeusing namespace std;
#define debug(x) cerr << #x << ": " << (x) << endl
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define dwn(i,a,b) for(int i=(a);i>=(b);i--)
#define int long long
inline int read()
while(ch>='0' && ch<='9') s=(s<<3)+(s<<1)+ch-'0',ch=getchar();
return s;
}const int n=330, p=7;
int n, m;
int c[n][n], b[n];
mapmp;
void init()
int get(string a, string b)
int fpow(int x, int p)
int inv(int x)
int get(int x)
int res[n];
void guass()
rep(j,1,m) }
rep(row,n+1,m) if(b[row]) return puts("inconsistent data."), void();
// no fixed sol
rep(pos,1,n) if(!c[pos][pos])
bool ok=false;
rep(val,3,9)
}if(!ok) return puts("inconsistent data."), void();
} return puts("multiple solutions."), void();
} bool ok=true;
rep(i,1,n)
if(!cnt)
if(cnt>1) ok=false;
else res[i]=rec; }
if(!ok) return puts("multiple solutions."), void();
rep(i,1,n) printf("%lld ", res[i]);
puts("");
}void clear()
signed main()
} guass();
clear(); }
return 0;
}
高斯消元 浮點高斯消元
浮點數高斯消元 問題描述 給出乙個線性方程組,有n個方程組,m個未知數。解這個線性方程組。輸入格式 第1行 2個整數n和m,n,m 400,且n不一定等於m 接下來n行,每行m 1個整數,表示乙個方程的m個未知數的係數和常數 輸出格式 如果無解,輸出 no solution 如果有唯一解,輸出m行,...
矩陣消元 高斯消元
安利一波高斯消元的部落格,內容很詳細。看完這個相信你已經理解了大概,高斯消元求線性方程組,在學習線性代數 大學課程 的時候我們都接觸過。原理是先把執行緒組轉換成矩陣,然後把它等價變換成上三角矩陣,這樣從下到上依次可以求出解集。高斯消元模板 模板題 include define n 205 using...
矩陣乘 高斯消元專題小結 高斯消元
i p其它題太水了就不寫了,這裡說一下o和p。我太懶不想寫 op這兩個題是高斯消元求期望的題。對於p題,求從 點到 點的步數期望,先從 點bfs一遍找到所有可以到達的點,對於可達點每個點是乙個變數。因為終點有任意多而起點只有乙個,這裡可以反過來求從任意乙個終點走到起點的期望。於是對於每乙個終點的期望...