nyoj 傳紙條(一)

2021-06-21 14:31:26 字數 936 閱讀 3228

/*

費用流,這道題的關鍵在於建圖,看了一下大牛的部落格,想了這道題

總結一下思路;

首先對於這種單一走路的題,一定要有拆點的思路對於這道題關建就在於

拆點,首先讓我們想一下,怎麼讓乙個點只走一下呢,這就是插電的精髓

然後加一條邊,容量為 1,費用為當前數值的一條邊,然後把這個點的右方

下方的點加一條邊,左上角頂點作為原點右下角頂點作為匯點,求一遍費用流

就行。。。。

*/#include#include#include#include#includeusing namespace std;

const int maxn = 100000;

const int inf = 0x777777;

struct h[maxn];

struct e[10*maxn];

int top;

void add(int u,int v,int cap,int cost)

int d[maxn];

int p[maxn];

int vis[maxn];

int path[maxn];

int max_flow,ans;

bool spfa(int s,int t,int n)}}

}if(d[t] == -inf) return false;

int u = t,sum = inf;

while (u!=s)

u = t;

max_flow += sum;

while(u != s)

return true;

}void init()

int main()

while(spfa(0,2*(m*n-1)+1,2*(n*m-1)+1));

cout<}

}

nyoj 傳紙條(一)

這題是一道動規題目,原本打算在原矩陣上動手腳 預處理 發現預處理只能找一條路的最大值!於是,如何判重就非常重要了!於是絞盡腦汁!如果做標記的話預處理就沒有用了!換乙個思路 題目求來回兩條路的最大值,然而發現去的路反過來也可以當回來的路 意思就是選中一條路,既可以當回去的路,也可以當去的路 那麼我從起...

nyoj 61 傳紙條(一)

分析 一道雙線程動態規劃題,與第六屆河南acm比賽的題類似.題意 小紙條從 1,1 傳到 m,n 再傳回來,並且路線不能交叉,使好感度之和最高.我們可以認為是同時找出兩條從 1,1 傳到 m,n 的不相交的路線.方法是 計算每一步情況下的情況,一條道路用i,j控制,另一條用x,y控制.從矩陣的角度看...

nyoj61 傳紙條(一) dp

思路 兩人乙個從左上角出發只能向右和向下,另一人從右下角出發只能向左和向上,可以看做兩人都是從右下角出發,且只能向左和向上傳紙條,並且兩條路徑不會相交,因為乙個人只會傳一次,那麼隨便畫乙個圖就能知道兩條路徑是閉合的圖形。因此我們可以定義dp x1,y1,x2,y2 是從 0,0 出發第一人到達 x1...