日常訓練 20170531 矩陣

2021-08-01 22:27:27 字數 2232 閱讀 8350

題意簡述:給定乙個整數矩陣 a[

n×m]

,求乙個矩陣 b[

n×m]

,滿足 ∀1

≤i≤n

,1≤j

≤m,b

i,j∈

[l,r

] ,且使下式值最小:ma

x⎧⎩⎨

⎪⎪⎪⎪

max1

≤j≤m

max1

≤i≤n

⎧⎩⎨⎪

⎪∣∣∣

∣∑j=

1m(a

i,j−

bi,j

)∣∣∣

∣⎫⎭⎬

⎪⎪⎫⎭

⎬⎪⎪⎪

⎪ 輸出任意一組合法解即可。n,

m≤200,0≤

l≤r≤

103,0

≤ai,

j≤103

這題我考場上就直接棄題了,因為本來是想寫隨機調整的,結果因為有些細節想做得精細一點,就覺得很麻煩,比如找到瓶頸行或瓶頸列,在上面隨機修改乙個能改的點,我一直在糾結怎麼很快找到乙個能改的點,然而xyx就直接遇到不能改的就跳過,隨下乙個,感覺這樣才是隨機化的正確姿勢嘛。

正解是網路流,是經典的矩陣的建圖,左側乙個點代表一行,右側乙個點代表一列,點上的限制放在左右點的連邊的流量限制上,二分答案,然後就有了行和列的限制,放在右側點與匯點的連邊上。

richard peng今天也講到網路流也像是隨機調整。

網路流:

#include

const int n = 205;

const int p = n * 2;

const int m = n * n * 4;

const int inf = 1e9;

template void read(t &x)

int n, m, a[n][n], b[n][n], sa[n], sb[n], l, r, s, t, source, sink, in[p], out[p], first[p], cur[p], q[p], h[p], s;

struct edge mp[m];

void ins(int

x, int

y, int v) ; first[x] = s;

mp[++s] = (edge) ; first[y] = s;

}void insert(int

x, int

y, int l, int r)

void build(int

x)bool bfs()

}return0;}

int dfs(int

x, int f)

h[x] = -1;

return used;

}bool check(int

x) int main()

printf("%d\n",l);

check(l);

for (int i=n+1; i <= n+m; i++)

for (int t=first[i]; t; t=mp[t].next)

if (mp[t].y >= 1 && mp[t].y

<= n)

b[mp[t].y][i - n] = mp[t].v + l;

for (int i=1; i <= n; i++)

return

0;}

貪心:

#include

const

int n = 205;

const

int inf = 2e6;

int n, m, l, r, a[n][n], b[n][n], sa[n*2], sb[n*2], max_det, c1, c2, r;

template

void read(t &x)

void calc_det()

int qry(int x, int y, int c)

void chg(int x, int y, int c)

int main()

for (int j=1; j <= m; j++)

if (abs(sa[n + j] - sb[n + j]) == max_det)

}calc_det();

printf("%d\n",max_det);

for (int i=1; i <= n; i++)

return

0;}

日常訓練 壓縮

巨大的文字往往令人頭疼,特別是文字內容有大量重複的情況下,巨大的文字不便於運輸和閱讀,於是我們提出了noip nonsense obivous index pattern 荒謬的顯然索引法 一種 有效的 壓縮文字的方法。noip壓縮後的格式很特別,乙個文字壓縮後由若干個單元組成,每個單元由3部分組成...

日常訓練 Tree

j 對於h u j 時間複雜度的證明也是比較經典了,每次列舉的是sz eu s zev 相當於每次從a,b 中各任選一點,它們的lc a 為 u 這樣的點對列舉不會重複,因此總的時間複雜度為o n2 include include include include include using name...

日常訓練 mod

給定 p 1,p 2,p n,b 1,b 2,b m 求滿足 x mod p 1 equiv a 1,x mod p 2 equiv a 2,x mod p n equiv a n 的 x 對 b 1,b 2,b m 取模的結果.第一行兩個整數 n,m 接下來 n 行,每行有乙個整數 a i 接下來...