bzoj 1003 物流運輸

2021-08-20 16:17:34 字數 1088 閱讀 7589

我用的是dijkstra+dp(當然是參考大佬們的啦),dijkstra用來進行預處理,處理出dis[start_time][end_time] --[start_time,end_time]時間段的1->m的最短路,其實很簡單,我們首先要把在某個時間段不能裝卸貨物的碼頭給預處理出來,可以用字首和來處理,具體看**,所以當到達這樣點時,我們直接continue。dp階段,我們初始dp[0]=-k,為什麼?因為 0 時間沒有通過任何碼頭,並且我們到第一次執行的航線還要交換一次航線,所以是-k,因為要抵消交換一次航線的代價。轉移方程 是:dp[i]=min(dp[i],dp[j]+dis[j+1][i]*(i-j)+k)。

還有就是 當dis[j+1][i]是inf時,不要進行轉移(inf很大的情況,我的inf=1e18,習慣問題),因為爆long long了。

#include#include#include#includeusing namespace std;

typedef long long ll;

typedef pairp;

const int maxn=100;

const int day=200;

const ll inf=1e18;

struct edge

};vectorg[maxn];

ll distan[maxn];

ll dis[day][day];

ll dp[day];

int notok[maxn][day];

bool vis[maxn];

int n,m,k,e,d;

void dijkstra(int stime,int etime)

} }dis[stime][etime]=distan[m];

}int main()

scanf("%d",&d);

for(int i=0;ifor(int i=1;i<=m;i++)

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

} dp[0]=(ll)-k;

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

} printf("%lld\n",dp[n]);

}

bzoj1003物流運輸

物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉 停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種 因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能夠按時到達目的地。但...

bzoj 1003 物流運輸

description 物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉 停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種 因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨...

bzoj1003 物流運輸

物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能夠按時到達目的地。但是修...