賽後補題 Meeting(HDU 5521)

2022-08-28 12:39:09 字數 1303 閱讀 1881

a,b兩個人分別在1和n區。每個區有若干點(區之間的點可以重複,各個區內點間的距離一致),給出區之間有聯絡的圖以及到達所需時間。求兩個人見面最短時間以及在哪個區碰面(可有多個)

隱式圖搜尋。但是注意一點:當我們搜尋過乙個區之後,這個區的最短路一定是被更新完成的,最短的(只要沒有負權邊)。因此,我們應當對已經訪問過的點加乙個標記,即可極大的剪枝,加快對隱式圖的dijkstra。

對於每個區定義乙個新的虛擬點,區中的每個點到這點的距離是給定的\(t_i\)(不去生成乙個完全圖)。這樣求最短路後距離除以二即可。

這樣的做法可能在網路流中會比較有用,值得注意。

注意行末空格,會讓你丟一次pe。

#include #include #include #include #include #include #include #include #define rep(i,a,b) for(reptype i=(a);i<=(b);++i)

#define per(i,a,b) for(reptype i=(a);i>=(b);--i)

#define fi first

#define zero(x) memset(x,0,sizeof(x))

#define se second

#define pb emplace_back

#define mp make_pair

using namespace std;

typedef long long ll;

typedef int reptype;

const int maxn=2e5+5;

vectorma[1000005];

vectorgra[maxn];

ll cost[1000005];

ll dist[maxn];

ll distb[maxn],mindist,inf;

bool vis[1000005];

void dijkstra(int b, int n)

}} }

}int main()

} dijkstra(1,n);

memcpy(distb,dist,sizeof(dist));

dijkstra(n,n);

mindist=inf;

vectorpnt;

rep(i,1,n)

else if(tmp==mindist)

}printf("case #%d: ",kase);

if(pnt.size()==0)

else

}} return 0;

}

2018 CCPC WFINAL賽後補題

奢侈的旅行 老部落格關了之後就再也沒有寫過科學的dijstra heap,稍微mark一下 include include include include include include define ll long long define n 404040 using namespace std ...

訓練賽後補題 10

摘要 2020 07 01 個人訓練賽後補題 題號g,原題codechef ecjn208 題目梗概 已知一堆小朋友的期末成績,要求即時得出一部分平均成績 向上取整 當時沒看懂題,看樣例以為是矩陣或圖我就跳了 我恨英文 超時了超時 1 pragma warning disable 4996 2 in...

訓練賽後補題 07

2020 07 01 個人訓練賽後補題 放題 題面翻譯 chef,chefu和chefina在為了爭論他們三人中誰是石頭剪刀布玩得最好的人吵架。現在為了得出這個答案,他們決定主持一場比賽來找出他們中最好的玩家。他們決定玩n局遊戲。但是他們沒有裁判員來追蹤 分數表 意思大概是沒人幫他們判分吧 幫助他們...