Contents

ARST打卡第200周[200/521]

Algorithm

lc1599_经营摩天轮的最大利润

直接模拟计算,前缀0应该要考虑一下是不是要运作(看题解是考虑前缀0的运转费用的)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class Solution {
public:
    int minOperationsMaxProfit(vector<int>& customers, int boardingCost, int runningCost) {
        int ans = -1;
        int maxProfit = 0;
        int totalProfit = 0;
        int operations = 0;
        int customersCount = 0;
        int n = customers.size();
        for (int i = 0; i < n; i++) {
            operations++;
            customersCount += customers[i];
            int curCustomers = min(customersCount, 4);
            customersCount -= curCustomers;
            totalProfit += boardingCost * curCustomers - runningCost;
            if (totalProfit > maxProfit) {
                maxProfit = totalProfit;
                ans = operations;
            }
        }
        if (customersCount == 0) {
            return ans;
        }
        int profitEachTime = boardingCost * 4 - runningCost;
        if (profitEachTime <= 0) {
            return ans;
        }
        if (customersCount > 0) {
            int fullTimes = customersCount / 4;
            totalProfit += profitEachTime * fullTimes;
            operations += fullTimes;
            if (totalProfit > maxProfit) {
                maxProfit = totalProfit;
                ans = operations;
            }
            int remainingCustomers = customersCount % 4;
            int remainingProfit = boardingCost * remainingCustomers - runningCost;
            totalProfit += remainingProfit;
            if (totalProfit > maxProfit) {
                maxProfit = totalProfit;
                operations++;
                ans++;
            }
        }
        return ans;
    }
};

Review

【TED演讲】将真实的自我代入到工作中

你设定规则和奖励,所以我请问你,要怎样才能在你的比赛里获胜?

呼吁真正有能力引导社会环境的人为停止歧视做出改变,而非空有“你们要敢于做自己我们欢迎你”的口号、而面对差异却拒绝包容。

Tips

冗余存储中的EC算法

Share-multi-raft个人理解

简而言之: Multi-raft 其实就是简单的多组raft,可以充分利用分布式的机器,防止只有一个leader,浪费了其他机器的处理client的读写性能。

具体一点的推理: 对于一个分布式系统,能够在一定范围内水平扩展是基本需求。这意味着整个集群必然不能只有一个Raft Group。 此外,即使是一个只有3节点的系统,也需要多个Raft Group才能发挥出硬件的全部性能。 因为在Raft中只有leader才提供读写服务,也就是其余的两个follower相对空闲。那么只有一个Raft Group的话就意味着两台机器较闲。 因此,工程上基本都需要对数据进行分片,每个分片的多个副本组成一个Raft Group,整个系统有多个Raft Group(即Multi-Raft),从而达到均衡负载的目的。