[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...