LC 6243 到达首都的最少油耗(贪心)

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LC 6243 到达首都的最少油耗(贪心)相关的知识,希望对你有一定的参考价值。

LC 6243 到达首都的最少油耗(贪心)

需要考虑每条边的贡献,下界是 ⌈ s z s e a t ⌉ \\lceil\\dfracszseat\\rceil seatsz s z sz sz是该子树大小。

上界其实等于下界,因为在其他人到达该子树根之后,可以只用这么多辆车就够了,其他车不需要了。

因此就是dfs一下即可。

时间复杂度: O ( n ) O(n) O(n)

class Solution 
public:
    long long minimumFuelCost(vector<vector<int>>& roads, int seats) 
        int n = roads.size() + 1;

        // 建图
        vector<int> e[n];
        for (auto &road : roads) 
            e[road[0]].push_back(road[1]);
            e[road[1]].push_back(road[0]);
        

        long long ans = 0;
        // DFS 统计子树大小,同时统计答案
        function<int(int, int)> dfs = [&](int sn, int fa) 
            int ret = 1;
            for (int fn : e[sn]) if (fn != fa) 
                // 计算 sn -> fn 这条边的贡献
                int t = dfs(fn, sn);
                ans += (t + seats - 1) / seats;
                // 更新子树大小
                ret += t;
            
            return ret;
        ;
        dfs(0, -1);
        return ans;
    
;

以上是关于LC 6243 到达首都的最少油耗(贪心)的主要内容,如果未能解决你的问题,请参考以下文章

LC 6243 到达首都的最少油耗(贪心)

[AGC004D] Teleporter [贪心]

[M贪心] lc1888. 使二进制字符串字符交替的最少反转次数(贪心+前后缀分解+周赛244_3)

20-5-4 LC

洛谷 P1084 [NOIP2012 提高组] 疫情控制(二分,倍增,贪心)

贪心算法-跳跃游戏二