TJOI2019 大中鋒的遊樂場 最短路 DP

2022-05-08 03:09:09 字數 1097 閱讀 2553

[tjoi2019]大中鋒的遊樂場

題目本質要求的還是最短路,但因為有第二維權值(汽水看成$+1$,漢堡看成$-1$)的限制,我們在最短路的基礎上加上一維$f[i][j]$表示到達$i$節點,權值為$j$的最短路長度,然後像正常最短路那樣轉移,最後取終點所有狀態的最小值即可。

#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

struct lty };

bool operator <(lty x,lty y)

int f[10010][30];

int head[10010];

int val[200010];

int v[10010];

int to[200010];

int next[200010];

int n,m,k;

int t;

int tot;

int a,b;

int x,y,z;

int vis[10010][30];

priority_queueq;

void add(int x,int y,int z)

void init()

void dijkstra(int s,int t)

} f[s][k+v[s]]=0;

q.push(lty(f[s][k+v[s]],s,k+v[s]));

while(!q.empty())

vis[now.node][now.num]=1;

for(int i=head[now.node];i;i=next[i])

}} int ans=1<<30;

for(int i=0;i<=2*k;i++)

printf("%d",ans==(1<<30)?-1:ans);

}void solve()

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

scanf("%d%d",&a,&b);

dijkstra(a,b);

}int main()

}

TJOI2019 大中鋒的遊樂場

大中鋒正在乙個遊樂場裡玩耍。遊樂場裡有很多娛樂設施,娛樂設施之間相互有道路相連,經過每一條路都需要花費一定的時間。為了方便遊客,每乙個娛樂設施旁都會配有乙個小賣部,一部分小賣部會銷售可樂,另一部分會銷售漢堡。由於大中鋒十分貪吃,所以每當他走到乙個娛樂設施,他都會先去購買一杯可樂或乙個漢堡,並把它們吃...

TJOI2019 甲苯先生和大中鋒的字串

有個叫asuldb的神仙來嘲諷我 說這題sam水題,而且sa過不了 然後我就用sa過了 顯然是乙個height陣列上長為k的滑塊,判一下兩邊,差分一下就可以了 include cstdio include cstring include iostream include algorithm usin...

TJOI2019 甲苯先生和大中鋒的字串

有個叫asuldb的神仙來嘲諷我 說這題sam水題,而且sa過不了 然後我就用sa過了 顯然是乙個height陣列上長為k的滑塊,判一下兩邊,差分一下就可以了 include cstdio include cstring include iostream include algorithm usin...