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),从而达到均衡负载的目的。