對於第一問直接n^2dp計算
第二問建圖跑網路流
第三問將起始與結尾流量開大
建邊的時候要嚴格按照子串行求法建
by:大奕哥
1 #include2using
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了,這是會...