網路流 24 題 最長遞增子串行

2021-08-06 04:45:20 字數 1114 閱讀 5314

1:dp求一遍

2:所有點拆成入點和出點,對於沒個f[i]=1的1點連源點,每個f[i]=ans1的點連匯點,每個點的入點和出點再連一條邊,所有容量為1,求一遍最大流。

2:1和n可以用多次,所以對於點1和點n,入點和出的連邊的容量變為inf,如果需要連源點或匯點那麼容量也變為n,其餘容量為1,求一遍最大流。

#include#include#include#includeusing namespace std;

const int maxm = 10005;

const int maxn = 1000005;

const int inf = 1e9 + 7;

struct node

edge[maxm];

int dis[maxm], dep[maxm], cur[maxm], head[maxm], f[maxm], vis[maxm], pre[maxm], a[maxm];

int n, m, s, t, cnt;

void init()

void add(int u, int v, int w)

int bfs()

} }if (dis[t] == -1) return 0;

return 1;

}int dfs(int u, int flow)

} }return 0;

}int dinic()

return ans;

}int main()

} printf("%d\n", ans);

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

if (ans == 1) printf("%d\n", n);

else printf("%d\n", dinic());

init();

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

if (ans == 1) printf("%d\n", n);

else printf("%d\n", dinic());

return 0;

}

網路流24題 最長遞增子串行

輸入檔案 alis.in輸出檔案 alis.out簡單對比 時間限制 1 s 記憶體限制 128 mb 問題描述 給定正整數序列x1,xn。1 計算其最長遞增子串行的長度s。2 計算從給定的序列中最多可取出多少個長度為s的遞增子串行。3 如果允許在取出的序列中多次使用x1和xn,則從給定序列中最多可...

網路流24題 最長遞增子串行

給定正整數序列x1,xn。1 計算其最長遞增子串行的長度s。2 計算從給定的序列中最多可取出多少個長度為s的遞增子串行。3 如果允許在取出的序列中多次使用x1和xn,則從給定序列中最多可取出多少個長度為s的遞增子串行。設計有效演算法完成 1 2 3 提出的計算任務 第1 行有1個正整數n n 500...

網路流24題6 最長遞增子串行

給定正整數序列x1,xn 1 計算其最長遞增子串行的長度s。2 計算從給定的序列中最多可取出多少個長度為s的遞增子串行。3 如果允許在取出的序列中多次使用x1和xn,則從給定序列中最多可取出多少個長度為s的遞增子串行。設計有效演算法完成 1 2 3 提出的計算任務。第一問秒掉 第二問比較難想到,每個...