網路流24題之最長不下降子串行

2022-03-27 06:53:32 字數 1337 閱讀 6976

對於第一問直接n^2dp計算

第二問建圖跑網路流

第三問將起始與結尾流量開大

建邊的時候要嚴格按照子串行求法建

by:大奕哥

1 #include2

using

namespace

std;

3const

int n=10005;4

inthead[n],d[n],f[n],a[n];

5int n,m,cnt=-1

,s,t,sum;

6struct

nodee[1000005];9

void add(int x,int y,int

w)10

14 queueq;

15bool bfs(int x,int

y)1628}

29return d[y]!=-1;30

}31int dfs(int x,int w,int

yy)32

43 e[i].w-=flow;e[i^1].w+=flow;s+=flow;

44if(s==w)return

s;45}46

return

s;47}48

intdinic()

4955

return

ans;56}

57int

main()

5869 s=0,t=n+n+10;int ans=1;70

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

7179 }int pre=ans;

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

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

82if(f[j]==f[i]+1&&a[j]>=a[i])

83 add(i+n,j,1

);84 printf("

%d\n

",ans);

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

86

88 ans=dinic();

89 printf("

%d\n

",ans);

90 add(s,1,1e9);add(1,n+1

,1e9);

91if(f[n]==pre)

92 add(n+n,t,1e9),add(n,n+n,1e9);

93 ans+=dinic();

94 printf("

%d\n

",ans);

95return0;

96 }

網路流24題 最長不下降子串行問題

luogu 2766 最長不下降子串行問題 傳送門第一問 o n 2 的dp求lis 為了下面敘述方便,我們將dp過程講一遍 子狀態 dp i 表示以a i 結尾的lis長度 初始條件 dp i 1 狀態轉移方程 dp i dp j 1 j 第二問 我們發現若a j 加上a i 可以構成乙個不下降子...

網路流24題 最長不下降子串行問題

傳送門 here 題意 給定正整數序列 x 1,x n 1 計算其最長不下降子串行的長度s。2 計算從給定的序列中最多可取出多少個長度為s的不下降子串行。3 如果允許在取出的序列中多次使用 x 1 和 x n 則從給定序列中最多可取出多少個長度為 s 的不下降子串行。思路分析 題意首先就很坑 注意第...

網路流24題 最長不下降子串行問題(最大流)

題目鏈結 這個題目有三個要求出來的 計算其最長不下降子串行的長度s。計算從給定的序列中最多可取出多少個長度為s的不下降子串行 如果允許在取出的序列中多次使用x1和xn,則從給定序列中最多可取出多少個長度為s的不下降子串行 自己的想法 對於 問題1 直接用那個動態規劃去跑下,就求出答案len了,這是會...