本題的資料有問題,所以題面應該改為最長不下降子串行就可以了。
#include
#include
#include
#include
#include
#include
using namespace std ;
const int maxn=1010;
const int oo=1000000000;
typedef struct edge
edge (int a,int b,int d,int e,int g)
}e;e edge[100
*maxn+10];
int len=-1,head[maxn],n;
int vis[maxn],dis[maxn];
int cur[maxn];
inttimes=1;//避免每次都memset,減少時間複雜度
int allp;//總的點個數
int s,t;//源點和匯點的編號
int a[1010],f[1010],k=0;
void e_add (int
s,int t,int
x,int
y)void init ()
}int bfs ()}}
return vis[t]==times;
}int dfs (int
x,int fmax)
}return flow;
}int dinic ()
return flow;
}void make_map ()
if (f[i]==k)
for (j=i+1;j<=n;j++)}}
}void change_map ()
if (edge[i].u==n*2&&edge[i].v==n*2+1)
if (edge[i].u==1&&edge[i].v==2)
if (edge[i].u==n*2+1&&edge[i].v==t)
}}int main ()
k=max (k,f[i]);
}cout 0;}
網路流24題6 最長遞增子串行
給定正整數序列x1,xn 1 計算其最長遞增子串行的長度s。2 計算從給定的序列中最多可取出多少個長度為s的遞增子串行。3 如果允許在取出的序列中多次使用x1和xn,則從給定序列中最多可取出多少個長度為s的遞增子串行。設計有效演算法完成 1 2 3 提出的計算任務。第一問秒掉 第二問比較難想到,每個...
網路流 24 題 最長遞增子串行
1 dp求一遍 2 所有點拆成入點和出點,對於沒個f i 1的1點連源點,每個f i ans1的點連匯點,每個點的入點和出點再連一條邊,所有容量為1,求一遍最大流。2 1和n可以用多次,所以對於點1和點n,入點和出的連邊的容量變為inf,如果需要連源點或匯點那麼容量也變為n,其餘容量為1,求一遍最大...
網路流24題 最長遞增子串行
輸入檔案 alis.in輸出檔案 alis.out簡單對比 時間限制 1 s 記憶體限制 128 mb 問題描述 給定正整數序列x1,xn。1 計算其最長遞增子串行的長度s。2 計算從給定的序列中最多可取出多少個長度為s的遞增子串行。3 如果允許在取出的序列中多次使用x1和xn,則從給定序列中最多可...