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