這不是線性代數,這是網路流。
我們看見這是一堆矩陣的運算,而且最後變成了乙個數,那麼我們就想到,把這個矩陣乘法的過程用具體的數字推出來
我們發現,a是乙個01矩陣,然後其實就可以化成這麼乙個問題:
有n個東西,選了i,j兩件東西能得到b[i,j]的價值,然而選i需要c[i]的花費,選j需要c[j]的花費……
這是乙個經典的最小割模型,最大權閉合子圖,詳見胡伯濤**。
建立s,t。
s連(i,j)邊,邊權為b[i,j],(i,j)連i、連j邊,邊權均為∞,i向t連邊,邊權為c[i]。
然後求最小割,最後答案就是
sum(b[i][j])-最小割答案 (i∈[1..n],j∈[1..n])
#include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f
using namespace std;
const int maxn = 300005;
int n, b[505][505], c[505], s, t, head[maxn], nume, maxflow, ans, dep[maxn], cur[maxn];
int init()
while(c >= '0' && c <= '9')
return fh * rv;
}struct edgee[maxn<<4];
void adde(int from, int to, int cap)
queue q;
bool bfs()
} }return dep[t];
}int dfs(int u, int flow)
} }return tot;
}void dinic()
}int main()
} for(int i = 1;i <= n;i++)
s=0;t=n*n+n+1;
for(int i = 1;i <= n ;i++)
} for(int i = 1;i <= n;i++)
int kkk=n*n;
for(int i = 1;i <= n ;i++)
} dinic();
cout<
fclose(stdin);
return 0;
}
洛谷 P3383 線性篩素數
洛谷 p3383 題目描述 如題,給定乙個範圍n,你需要處理m個某數字是否為質數的詢問 每個數字均在範圍1 n內 資料範圍 對於100 的資料 n 10000000,m 100000 樣例輸入 100 5 2 3 4 91 97樣例輸出 yes yes no no yes include defin...
洛谷 P3812 模板 線性基
這是一道模板題。給定n個整數 數字可能重複 求在這些數中選取任意個,使得他們的異或和最大。第一行乙個數n,表示元素個數 接下來一行n個數 僅一行,表示答案。輸入 1 2 1 1輸出 1 11 n 50,0 si 250 1 leq n leq 50,0 leq s i leq 2 1 n 50,0 ...
洛谷 P1970 花匠 線性dp
花匠棟棟種了一排花,每株花都有自己的高度。花兒越長越大,也越來越擠。棟棟決定把這排中的一部分花移走,將剩下的留在原地,使得剩下的花能有空間長大,同時,棟棟希望剩下的花排列得比較別緻。具體而言,棟棟的花的高度可以看成一列整數h 1,h 2,h nh1 h2 hn 設當一部分花被移走後,剩下的花的高度依...