ARST打卡第194周[194/521]

Algorithm

lc1815_得到新鲜甜甜圈的最多组数

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
感觉像是让groups里面的数字取模batchSize后,凑成batchSize的倍数,
然后小的放前面,大的放后面,尽量让更多的组员开心。
但是凑数需要找规律...二元组合好像需要用什么操作来着,有点忘了,看看题解

a1,a2...an是0,1,⋯,n−1 的元素的**个数**

看题解也看了半天,确实是2023大年初一的hard...继续加油吧,嗯嗯
*/
func maxHappyGroups(batchSize int, groups []int) (ans int) {
const kWidth = 5
const kWidthMask = 1<<kWidth - 1

cnt := make([]int, batchSize)
for _, x := range groups {
cnt[x%batchSize]++
}

start := 0
for i := batchSize - 1; i > 0; i-- {
start = start<<kWidth | cnt[i]
}

memo := map[int]int{}
var dfs func(int) int
dfs = func(mask int) (best int) {
if mask == 0 {
return
}
if res, ok := memo[mask]; ok {
return res
}

total := 0
for i := 1; i < batchSize; i++ {
amount := mask >> ((i - 1) * kWidth) & kWidthMask
total += i * amount
}

for i := 1; i < batchSize; i++ {
amount := mask >> ((i - 1) * kWidth) & kWidthMask
if amount > 0 {
result := dfs(mask - 1<<((i-1)*kWidth))
if (total-i)%batchSize == 0 {
result++
}
best = max(best, result)
}
}
memo[mask] = best
return
}
return dfs(start) + cnt[0]
}

func max(a, b int) int {
if b > a {
return b
}
return a
}

Review

【TED演讲】在压力下保持专注的秘诀

人生充满了大起大落(起起落落的幅度和频率因人而异),除了身体训练外,还要注重从精神和情感上进行训练来应对那些悲观的情绪。顶级运动员超乎常人的不仅仅是他们的运动技能和身体素质,另外还有应对压力时快速调节情绪恢复到平衡态,专注自身表现的能力。

不要过度情绪化,多想想当下需要怎么做。然后不断得熟能生巧,也就是不断得练习自己的逆商。

Tips

Kubernetes Operator 快速入门教程

Operator 是由 CoreOS 开发的,用来扩展 Kubernetes API,特定的应用程序控制器,它用来创建、配置和管理复杂的有状态应用,如数据库、缓存和监控系统。Operator 基于 Kubernetes 的资源和控制器概念之上构建,但同时又包含了应用程序特定的领域知识。创建Operator 的关键是CRD(自定义资源)的设计。

Kubernetes 1.7 版本以来就引入了自定义控制器的概念,该功能可以让开发人员扩展添加新功能,更新现有的功能,并且可以自动执行一些管理任务,这些自定义的控制器就像 Kubernetes 原生的组件一样,Operator 直接使用 Kubernetes API进行开发,也就是说他们可以根据这些控制器内部编写的自定义规则来监控集群、更改 Pods/Services、对正在运行的应用进行扩缩容。

Share

2023大年初一,今天不分享其他东西了。

就祝大家永远身心健康,有能力也有运气度过一切困难,迎接一切好运。

风水轮流转,好好活着,去做下一个风口的猪。

成为更好的自己,笑看牛熊。