網路流二十四題之最長非遞減子串行(未完成)

2021-08-18 07:02:21 字數 2006 閱讀 4853

這道題還有點問題,打算以後再解決。

先說下建模吧,問題乙隻需要用dp做就行。下一步的建模方法如下:

1.所有dp值為1的點,增加一條到源點的邊,代表乙個序列的起始點

2.所有dp值位上一部求出來的答案的點,增加一條到匯點的邊,代表乙個序列的結束,其他答案的點不會連線到源點。

3.對於i

#include 

#include

#include

const

int maxn = 100010;//點數的最大值

const

int maxm = 400010;//邊數的最大值

const

int inf = 0x3f3f3f3f;

using namespace std;

struct edge

edge[maxm]; //注意是maxm

int tol;

int head[maxn];

int gap[maxn],dep[maxn],cur[maxn];

void init()

void addedge(int u,int v,int w,int rw = 0)

int q[maxn];

void bfs(int start,int end)

}}int s[maxn];

int sap(int start,int end,int n)

for(int i = 0; i < top; i++)

ans += min;

top = inser;

u = edge[s[top]^1].to;

continue;

}bool flag = false;

int v;

for(int i = cur[u]; i != -1; i = edge[i].next)

}if(flag)

int min = n;

for(int i = head[u]; i != -1; i = edge[i].next)

if(edge[i].cap - edge[i].flow && dep[edge[i].to] < min)

gap[dep[u]]--;

if(!gap[dep[u]])

return ans;

dep[u] = min + 1;

gap[dep[u]]++;

if(u != start)

u = edge[s[--top]^1].to;

}return ans;

}void print_all_edge()

}inline bool getint(int &num)

else

num=in-'0';

while(in=getchar(),in>='0'&&in

<='9')

if(isn)

num=-num;

if(in == '\n')

return

false;

return

true;

}int st = 0,en = 1505;

int t = 505;

int dp[maxn];

int a[maxn];

int main()

int ans1 = 0;

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

}ans1 = max(ans1,dp[i]);

//cout<}

init();

coutfor(int i = 1;i<=n;i++)}}

int ans2 = sap(0,2*n+1,2*n+3);

print_all_edge();

coutelse

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

int ans3 = sap(0,2*n+1,2*n+3);

//print_all_edge();

cout0;}

網路流二十四題

開始了我的網路流 24 題之旅,寫在一起到時候方便一起複習哦。其實這並不是真的二十四題,有一些過於水的我就不寫上來了。然後有的 太水了就不寫了。感覺這些題目還是比較基礎的,方法卻值得借鑑!剩餘題目 航空路線問題 火星探險問題以下 題目描述 點此看題 解法 你發現時間是最大的障礙,因為對於不同的時間飛...

網路流二十四題之分配問題

沒想到codevs上的資料和我本地的資料是一樣的 這下不用寫多餘的 了 這道題和上一道題一樣水,按照提議寫成二分圖就行。1.源點向每個人連一條邊,容量1,費用0,每個任務向匯點連一條邊,容量1,費用0 2.每個人向每個任務連一條邊,容量1,費用為cij 跑兩次費用流就行 include includ...

網路流二十四題之航空路線問題

這道題的建模很有意思 1.首先每個點,除了起點,都向拆點後的點練一天容量1,費用 1的邊,代表只能走一次,負費用是為了求最大的費用,也就是最多的經過點。對於起點,容量變成2,費用不變。2.其次對於一天航線,終點在拆點後的點集向起點連一條邊,容量無限,費用為0,代表兩個城市可以達到。之後一次費用流,如...