HDU5361In Touch 最短路 並查集

2021-08-05 19:18:43 字數 775 閱讀 2341

題目描述:

有n個傳送機排成一排,編號從1到n,每個傳送機都可以把自己位置的東西傳送到距離自己[l, r]距離的位置,並且花費c,問從1號傳送機到其他傳送機的最小花費是多少

思路: 

從第乙個點開始更新, 更新過的點從未被更新的點中除去, 因為在dijkstra裡 每次取出的都是最小的distance, 所以更新過的點 後面肯定不需要再次更新。更新乙個點後加入堆中, 因為通過這個點可能更新別的點。

ps:不太懂網上並查集優化的,只知道下面這個集合來優化的。下面這種方式需要最短路的賦值方式,沒到該點前,先為到該點的花費賦值好。

#includeusing namespace std;

typedef long long ll;

#define pii pairconst int maxn = 200005;

int l[maxn], r[maxn];

ll cost[maxn], dis[maxn];

pii p[maxn];

setst;

setvis;

int main()

it = st.lower_bound(u + l[u]);

while(it != st.end() && *it <= u + r[u])

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

printf("%i64d%c", dis[i], i == n-1 ? '\n' : ' ');

}return 0;

}

HDU 5361 最短路變形

點選開啟鏈結 題意 給了n個點排成一行,每兩個距離為1,然後對於每個點來說它有個l和r,意思是距離在l到r中間的所有點它都能到達,費用是c,問從小出發的單源所有的點的距離 思路 看了網上神犇的題解有了點思路,因為每個點出去的費用都是相同的,而且費用的值大於0,那麼1點直接到達的所有點的最短路就不需要...

hdu5361 最短路 並查集

題意 有n個點排成一排,編號從1到n,每個點可以到自己 l,r 距離的位置,花費c,問一號店到其他點的最小花費 pragma comment linker,stack 102400000,102400000 include include include include include includ...

hdu 5017 模擬退火求最值

題意 給乙個橢圓 然後求原點到這個橢圓距離最小的點的距離是多少。解析 依舊用模擬退火。修改了乙個地方,初始溫度從100改到了1,就行了。之前的也修改了。選z的時候,選離遠點近的那個點就行了。pragma comment linker,stack 1677721600 include include ...