Re: [閒聊] 每日leetcode

看板Marginalman作者 (是oin的說)時間1年前 (2024/08/27 11:35), 編輯推噓3(3011)
留言14則, 2人參與, 1年前最新討論串770/1549 (看更多)
引述《enmeitiryous (enmeitiryous)》 題目: 1514. Path with Maximum Probability 給你一個圖有n個點,並給你一個vector:edge,每一個edge(u,v)的weight是從 u到v的成功機率(0<=w<=1),給定起始點s和終點d,求s到d的成功率最大路徑 思路: 因為是無向圖 比較姆咪一點 我用Dijkstra's 每次都往四周看 然後把可以走的地方丟到pq裡面 這次有記得用priority queue 了 丟進去一直邊走邊看就可以了 姆咪 ```cpp class Solution { public: double maxProbability(int n, vector<vector<int>>& edges, vector<double>& suc cProb, int start_node, int end_node) { vector<vector<pair<int,double>>> path(n); vector<double> paper(n,0); int len = edges.size(); for(int i = 0 ; i < len ; i ++) { path[edges[i][1]].push_back({edges[i][0] , succProb[i]}); path[edges[i][0]].push_back({edges[i][1] , succProb[i]}); } priority_queue<pair<double,int>> pq; pq.push({1,start_node}); while(!pq.empty()) { int dest = pq.top().second; double prob = pq.top().first; pq.pop(); if(paper[dest] >= prob)continue; if(dest == end_node)return prob; paper[dest] = prob; for(auto k : path[dest]) { int next = k.first; double nextprob = k.second; pq.push({prob*nextprob , next}); } } return paper[end_node]; } }; ``` -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.18.201 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1724729711.A.C9A.html

08/27 11:36, 1年前 , 1F
姆咪
08/27 11:36, 1F

08/27 11:37, 1年前 , 2F
我一開始沒用heap,記憶體爆掉,太苦了
08/27 11:37, 2F

08/27 11:38, 1年前 , 3F
你就是還沒送我模型才會忘記用heap 你有什麼用
08/27 11:38, 3F

08/27 11:39, 1年前 , 4F

08/27 11:39, 1年前 , 5F
給你看蕾米的燈籠褲
08/27 11:39, 5F

08/27 11:40, 1年前 , 6F
謝謝
08/27 11:40, 6F

08/27 11:40, 1年前 , 7F
可以讓他跟妹妹在一起嗎
08/27 11:40, 7F

08/27 11:40, 1年前 , 8F
就在旁邊而已 我看到了
08/27 11:40, 8F

08/27 11:41, 1年前 , 9F
兩個一起拍照
08/27 11:41, 9F

08/27 11:41, 1年前 , 10F

08/27 11:41, 1年前 , 11F
幹 好漂亮 這家叫甚麼
08/27 11:41, 11F

08/27 11:42, 1年前 , 12F
alter
08/27 11:42, 12F

08/27 11:45, 1年前 , 13F
推薦那個靈夢模型
08/27 11:45, 13F

08/27 11:47, 1年前 , 14F
蛤?
08/27 11:47, 14F
文章代碼(AID): #1cpKbloQ (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cpKbloQ (Marginalman)