Cho một đồ thị vô hướng. Giả sử là độ dài đường đi ngắn nhất từ điểm đến điểm .
Đếm số đường đi có khoảng cách đúng bằng
Giả sử, ta đã tính ra được .
Khi đó, ta xác nhận được với mỗi đỉnh trong đồ thị, độ dài đường đi ngắn nhất từ tới nó là .
Quan sát: Nếu một con đường trong đồ thị mà đi từ đến , có độ dài , mà thuộc một đường đi ngắn nhất nào đó, nó phải thỏa mãn: .
Vì thế, với mỗi đường đi trên đồ thị, ta có thể xác định được hướng đi của nó trong đường đi tối ưu, hoặc không xét nó vào tập hợp các đường đi có thể có trên đồ thị có hướng.
Khi đó, hướng đi của từng con đường trên đồ thị sẽ tạo thành một DAG, và ta có thể quy hoạch động trên đó. Ta có thể thiết lập một công thức quy hoạch động như sau:
Phần còn lại các học viên tự giải.
Hành trình uber của bạn qua điểm, nằm lần lượt từ đến trong hành trình. Có khách đặt bạn, muốn đi quãng đường từ đến () và sẽ trả bạn mức phí bằng . Bạn sẽ chỉ có thể chở mỗi lúc một người, nhưng sau khi trả một khách tại điểm nào đó, bạn có thể bắt khách tiếp ngay tại điểm đó luôn.
Hãy tối ưu hóa lợi nhuận của bạn.
Ta lưu ý: .
Gọi là số tiền tối ưu có thể dành được sau khi taxi đến được điểm .
Với mỗi chuyến xe ứng với thông số , ta cập nhật . Ban đầu, khi chưa cập nhật chuyến xe nào mặc định bằng (đi đoạn đường không có thu nhập). .
Với cách cập nhật thế này, ta cần sắp xếp các chuyến xe theo chiều tăng dần của điểm kết thúc. Sau đó, với mỗi điểm trên đoạn đường:
Cho một quần đảo, địa thế của nó có thể được mô phỏng bởi một lưới vuông . Các ô trên quần đảo là đất liền, còn trên quần đảo là nước. Hỏi, liệu ta có thể bỏ đi một ô đất liền nào đó (thay bằng nước), để "ngắt kết nối" giữa ô trên trái ngoài cùng, và ô dưới phải ngoài cùng được không?
Gọi số đường đi đến ô từ ô trái trên là , từ ô phải dưới là .
Quan sát: số đường đi từ hai góc lưới vuông mà đi qua ô là .
Tổng số đường đi là .
Nếu ta đã tính được các mảng và , thì việc tìm ô nào đó thỏa mãn để có thể flip, ứng với việc tìm một ô thỏa mãn , tương ứng với việc tất cả đường đi đều đi qua ô này.