複習到了sa,正好做了一道利用sa解決lp問題,是非常基礎的一道題目。
求x1-3x2的最小值?
其中滿足的條件是:2x1+3x2<=6,-x1+x2<=1,x1>=0,x2>=0,一看可能會有點熟悉的題目吧,是啊,這個是高中最普遍的解決線性規劃的問題,我們當時的變數不多,如果變數好多的話,解決就要需要電腦了,現在我用sa的想法來解決問題。
首先要加入襯墊變數x3,x4,使得2x1+3x2+x3=6,-x1+x2+x4=1,其中x1>=0,x2>=0,x3>=0,x4>=0.然後利用sa演算法,下面有**做說明
[table]
|0|-1|-3|0|0
| |x1|x2|x3|x4
|6 |2|3|1|0
|1|-1|1|0|1
[/table]
做法首先確定了其中的基底x3和x4(兩個是線性無關的),然後找到第一行中的是負數的最小的那個,然後縱向找到乙個正數即3,接著就是線性代數的知識,使得基底進行變動,並且使得第一行中的負數變為0
[table]
|3|-4|0|0|3
||x1|x2|x3|x4
|3|5|0|1|-3
|1|-1|1|0|1
[/table]
下面的操作和上面的類似,最終得到
[table]
|27/5|0|0|4/5|3/5
||x1|x2|x3|x4
|3/5|1|0|1/5|-3/5
|8/5|0|1|1/5|2/5
[/table]
對應**中的左上角的數正是我們所求數的相反數,所以最小的值因為-27/5,而此時我們可以得到x1=3/5,x2=8/5
組合數學 求組合數
對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...
數學 組合數學
mod must be a prime const int mod 1e9 7 namespace combinatory ll inv ll x ll fac maxn invfac maxn void initc int n ll a ll n,ll m ll c ll n,ll m ll d ...
組合數學筆記
從n個數中選m個數,每個數至多選一次,方案數 性質 c n,0 c n,n 1 c n,m c n,n m c n,m c n 1,m 1 c n 1,m 楊輝三角 二項式展開 x y n i 0.n c n,i x iy n i 那這裡先說一下楊輝三角 前提 每行端點與結尾的數為1 每個數等於它上...