thảo luận Leetcode mỗi ngày

  • Người tạo chủ đề Người tạo chủ đề _Gia_Cat_Luong_
  • Ngày bắt đầu Ngày bắt đầu
Trạng thái
Không mở để trả lời thêm.
làm sao biết Dijkstra chạy đúng với kiểu product max này
Xv0BtTR.png
Làm sao biết dùng max heap thay vì min heap
1BW9Wj4.png
ờm thì prob < 1 nên càng nhân vào thì số càng nhỏ -> tìm đường đi cho nó bớt nhân thêm số thì nó sẽ max -> tìm đường ngắn nhất
max_ heap để lấy trọng số tốt nhất.
cơ mà đọc code python khó nhìn data structure thiệc
5FNoa6I.png
đọc code java quen r hơi lắm text mà nó dễ đọc
 
Sửa lần cuối:
Hơi lạc platform 1 xíu nhưng cũng là thuật toán, nhờ cao nhân giúp em với được không ạ.


Em đang làm cái bài này bên codeforces. Em đọc solution thì họ bảo là khởi tạo giá trị a cực lớn. Xong proccess mấy cái operation từ dưới lên. Sau đó sẽ ra được 1 cái array output nhưng cái đó lại phải process mấy cái operation theo đúng thứ tự từ trên xuống để verify nếu có operation nào không pass thì là không có output nào tồn tại in ra NO. Nhưng mà em đọc mãi vẫn không hiểu làm sao có thể chứng minh được điều này ấy ạ. Em đọc mãi vẫn không hiểu.

solution thì em đang xem code ở đây. Đại loại mấy cái solution khác cũng idea như vậy thôi ạ https://www.programmersought.com/article/28473050299/
 
Hơi lạc platform 1 xíu nhưng cũng là thuật toán, nhờ cao nhân giúp em với được không ạ.


Em đang làm cái bài này bên codeforces. Em đọc solution thì họ bảo là khởi tạo giá trị a cực lớn. Xong proccess mấy cái operation từ dưới lên. Sau đó sẽ ra được 1 cái array output nhưng cái đó lại phải process mấy cái operation theo đúng thứ tự từ trên xuống để verify nếu có operation nào không pass thì là không có output nào tồn tại in ra NO. Nhưng mà em đọc mãi vẫn không hiểu làm sao có thể chứng minh được điều này ấy ạ. Em đọc mãi vẫn không hiểu.

solution thì em đang xem code ở đây. Đại loại mấy cái solution khác cũng idea như vậy thôi ạ https://www.programmersought.com/article/28473050299/
thớt này nhiều ae tập tành lc tay hơi bé
JlHnae7.png
, fen mang sang thớt leetcode contest nhiều gosu ẩn danh giải cho fen nhé.đề cf đọc đã thấy nhức nhức cái đầu
 
Hơi lạc platform 1 xíu nhưng cũng là thuật toán, nhờ cao nhân giúp em với được không ạ.


Em đang làm cái bài này bên codeforces. Em đọc solution thì họ bảo là khởi tạo giá trị a cực lớn. Xong proccess mấy cái operation từ dưới lên. Sau đó sẽ ra được 1 cái array output nhưng cái đó lại phải process mấy cái operation theo đúng thứ tự từ trên xuống để verify nếu có operation nào không pass thì là không có output nào tồn tại in ra NO. Nhưng mà em đọc mãi vẫn không hiểu làm sao có thể chứng minh được điều này ấy ạ. Em đọc mãi vẫn không hiểu.

solution thì em đang xem code ở đây. Đại loại mấy cái solution khác cũng idea như vậy thôi ạ https://www.programmersought.com/article/28473050299/
đọc thử editorial round 210, problem 360A
 
JavaScript:
var maxProbability = function(n, edges, succProb, start_node, end_node) {
    const graph = new Array(n).fill(null).map(x => []);
    for (let i = 0; i < edges.length; i++) {
        graph[edges[i][0]].push([edges[i][1], succProb[i]]);
        graph[edges[i][1]].push([edges[i][0], succProb[i]]);
    }

    
    const d = new Array(n).fill(0);
    d[start_node] = 1;

    const pq = new MaxPriorityQueue({ priority: (x) => x[0] });
    pq.enqueue([1, start_node]);

    const visited = new Set();

    while (!pq.isEmpty()) {
        const [prob, node] = pq.dequeue().element;
        
        if (visited.has(node)) continue;
        visited.add(node);

        for (const [nei, neiProb] of graph[node]) {
            const newProb = prob * neiProb;
            if (newProb > d[nei]) {
                d[nei] = newProb;
                pq.enqueue([newProb, nei]);
            }
        }
    }

    return d[end_node];
};
 
thớt này nhiều ae tập tành lc tay hơi bé
JlHnae7.png
, fen mang sang thớt leetcode contest nhiều gosu ẩn danh giải cho fen nhé.đề cf đọc đã thấy nhức nhức cái đầu
Không contest đâu có nghĩa là trình kém
4RJD3gO.png
VHf24r4.jpg
 
em đọc r ấy, mà cái editorial đó có vẻ hơi cao siêu với em đọc cũng hơi váng đầu. Mà cái em thắc mắc là cái đoạn "Let's prove that either b satisfied all conditions or there is no such array" ấy. Em đang tự hỏi làm sao nó chắc rằng nếu b không thỏa thì liệu rằng có một mảng b' khác thỏa hay không. Còn solution này em thấy nếu thấy k thỏa thì chốt sổ là NO luôn. Không biết em còn miss cái ý gì trong cái editorial này không :D
 
Java:
class Solution {
    public double maxProbability(int n, int[][] edges, double[] succProb, int start, int end) {
        List<List<Pair<Integer, Double>>> adj = new ArrayList();
        for(int i = 0; i < n; i++) {
            adj.add(new ArrayList());
        }
        for(int i = 0; i < edges.length; i++) {
            adj.get(edges[i][0]).add(new Pair(edges[i][1], succProb[i]));
            adj.get(edges[i][1]).add(new Pair(edges[i][0], succProb[i]));
        }
        double[] maxProb = new double[n];
        maxProb[start] = 1d;
        PriorityQueue<Pair<Integer, Double>> pq = new PriorityQueue<>((a, b) -> -Integer.compare(a.getKey(), b.getKey()));       
        pq.offer(new Pair(start, maxProb[start]));
        while(!pq.isEmpty()) {
            Pair<Integer, Double> pair = pq.poll();
            int current = pair.getKey();
            double prob = pair.getValue();
            if (prob < maxProb[current]) continue;
            maxProb[current] = prob;
            for (Pair<Integer, Double> node : adj.get(current)) {
                if (node.getValue() * prob > maxProb[node.getKey()]) {
                    pq.offer(new Pair(node.getKey(), node.getValue() * prob));
                }
            }
        }
        return maxProb[end];
    }
}
 
thớt này nhiều ae tập tành lc tay hơi bé
JlHnae7.png
, fen mang sang thớt leetcode contest nhiều gosu ẩn danh giải cho fen nhé.đề cf đọc đã thấy nhức nhức cái đầu
tay em như không có luôn ấy chứ =))) đợt rồi em pv pass đc vòng hackerrank vô nó hỏi cái bài tìm số subarray có tổng bằng k live coding tạch bố nó luôn, cũng may đợt này cũng đậu đc cty thơm thơm thoát khỏi cái nhà F xong 3 năm cống hiến. Xong từ đợt đó mới quyết tâm ôn thuật toán. Mà sẵn ôn nên em choi CP luôn cho máu
 
tay em như không có luôn ấy chứ :LOL:) đợt rồi em pv pass đc vòng hackerrank vô nó hỏi cái bài tìm số subarray có tổng bằng k live coding tạch bố nó luôn, cũng may đợt này cũng đậu đc cty thơm thơm thoát khỏi cái nhà F xong 3 năm cống hiến. Xong từ đợt đó mới quyết tâm ôn thuật toán. Mà sẵn ôn nên em choi CP luôn cho máu
subarray có tổng = k đoán là xài cửa sổ trượt + prefix sum phải khum fen
wCelvQ3.gif
 
em đọc r ấy, mà cái editorial đó có vẻ hơi cao siêu với em đọc cũng hơi váng đầu. Mà cái em thắc mắc là cái đoạn "Let's prove that either b satisfied all conditions or there is no such array" ấy. Em đang tự hỏi làm sao nó chắc rằng nếu b không thỏa thì liệu rằng có một mảng b' khác thỏa hay không. Còn solution này em thấy nếu thấy k thỏa thì chốt sổ là NO luôn. Không biết em còn miss cái ý gì trong cái editorial này không :D
sorry, đọc kỹ lại editorial thì thấy giải thích vớ vẩn thận, và đề có vẻ không rõ ràng lắm

nhìn kỹ problem thì có vẻ người ra đề muốn bạn dùng backtracking để giải một biết dạng của SAT, còn chuyện khi nào tồn tại assignment thỏa mãn các ràng buộc dựa vào danh sách operation trong input thì nó không hữu dụng lắm trong việc giải bài
 
sorry, đọc kỹ lại editorial thì thấy giải thích vớ vẩn thận, và đề có vẻ không rõ ràng lắm

nhìn kỹ problem thì có vẻ người ra đề muốn bạn dùng backtracking để giải một biết dạng của SAT, còn chuyện khi nào tồn tại assignment thỏa mãn các ràng buộc dựa vào danh sách operation trong input thì nó không hữu dụng lắm trong việc giải bài
hehe, dạ thanks bác. chắc đổi sang môn leetcode quá chơi chung với thread này quá, chứ codeforces chơi hại não gớm.
 
Trạng thái
Không mở để trả lời thêm.

Thống kê chủ đề

Ngày tạo
_Gia_Cat_Luong_,
Người trả lời cuối
Vipluckystar,
Trả lời
17.755
Lượt xem
1.212.963
Quay lại
Lên đầu trang