洛谷 P3973 線性代數

2022-05-10 05:56:53 字數 1282 閱讀 1827

這不是線性代數,這是網路流。

我們看見這是一堆矩陣的運算,而且最後變成了乙個數,那麼我們就想到,把這個矩陣乘法的過程用具體的數字推出來

我們發現,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 設當一部分花被移走後,剩下的花的高度依...