diff --git a/solution/2900-2999/2928.Distribute Candies Among Children I/README.md b/solution/2900-2999/2928.Distribute Candies Among Children I/README.md
new file mode 100644
index 0000000000000..5e5ff3bfb0086
--- /dev/null
+++ b/solution/2900-2999/2928.Distribute Candies Among Children I/README.md
@@ -0,0 +1,80 @@
+# [2928. 给小朋友们分糖果 I](https://leetcode.cn/problems/distribute-candies-among-children-i)
+
+[English Version](/solution/2900-2999/2928.Distribute%20Candies%20Among%20Children%20I/README_EN.md)
+
+## 题目描述
+
+
+
+
给你两个正整数 n
和 limit
。
+
+请你将 n
颗糖果分给 3
位小朋友,确保没有任何小朋友得到超过 limit
颗糖果,请你返回满足此条件下的 总方案数 。
+
+
+
+示例 1:
+
+
+输入:n = 5, limit = 2
+输出:3
+解释:总共有 3 种方法分配 5 颗糖果,且每位小朋友的糖果数不超过 2 :(1, 2, 2) ,(2, 1, 2) 和 (2, 2, 1) 。
+
+
+示例 2:
+
+
+输入:n = 3, limit = 3
+输出:10
+解释:总共有 10 种方法分配 3 颗糖果,且每位小朋友的糖果数不超过 3 :(0, 0, 3) ,(0, 1, 2) ,(0, 2, 1) ,(0, 3, 0) ,(1, 0, 2) ,(1, 1, 1) ,(1, 2, 0) ,(2, 0, 1) ,(2, 1, 0) 和 (3, 0, 0) 。
+
+
+
+
+提示:
+
+
+ 1 <= n <= 50
+ 1 <= limit <= 50
+
+
+## 解法
+
+
+
+
+
+### **Python3**
+
+
+
+```python
+
+```
+
+### **Java**
+
+
+
+```java
+
+```
+
+### **C++**
+
+```cpp
+
+```
+
+### **Go**
+
+```go
+
+```
+
+### **...**
+
+```
+
+```
+
+
diff --git a/solution/2900-2999/2928.Distribute Candies Among Children I/README_EN.md b/solution/2900-2999/2928.Distribute Candies Among Children I/README_EN.md
new file mode 100644
index 0000000000000..8e564d72fcf1c
--- /dev/null
+++ b/solution/2900-2999/2928.Distribute Candies Among Children I/README_EN.md
@@ -0,0 +1,70 @@
+# [2928. Distribute Candies Among Children I](https://leetcode.com/problems/distribute-candies-among-children-i)
+
+[中文文档](/solution/2900-2999/2928.Distribute%20Candies%20Among%20Children%20I/README.md)
+
+## Description
+
+You are given two positive integers n
and limit
.
+
+Return the total number of ways to distribute n
candies among 3
children such that no child gets more than limit
candies.
+
+
+Example 1:
+
+
+Input: n = 5, limit = 2
+Output: 3
+Explanation: There are 3 ways to distribute 5 candies such that no child gets more than 2 candies: (1, 2, 2), (2, 1, 2) and (2, 2, 1).
+
+
+Example 2:
+
+
+Input: n = 3, limit = 3
+Output: 10
+Explanation: There are 10 ways to distribute 3 candies such that no child gets more than 3 candies: (0, 0, 3), (0, 1, 2), (0, 2, 1), (0, 3, 0), (1, 0, 2), (1, 1, 1), (1, 2, 0), (2, 0, 1), (2, 1, 0) and (3, 0, 0).
+
+
+
+Constraints:
+
+
+ 1 <= n <= 50
+ 1 <= limit <= 50
+
+
+## Solutions
+
+
+
+### **Python3**
+
+```python
+
+```
+
+### **Java**
+
+```java
+
+```
+
+### **C++**
+
+```cpp
+
+```
+
+### **Go**
+
+```go
+
+```
+
+### **...**
+
+```
+
+```
+
+
diff --git a/solution/2900-2999/2929.Distribute Candies Among Children II/README.md b/solution/2900-2999/2929.Distribute Candies Among Children II/README.md
new file mode 100644
index 0000000000000..890445e82df5e
--- /dev/null
+++ b/solution/2900-2999/2929.Distribute Candies Among Children II/README.md
@@ -0,0 +1,80 @@
+# [2929. 给小朋友们分糖果 II](https://leetcode.cn/problems/distribute-candies-among-children-ii)
+
+[English Version](/solution/2900-2999/2929.Distribute%20Candies%20Among%20Children%20II/README_EN.md)
+
+## 题目描述
+
+
+
+给你两个正整数 n
和 limit
。
+
+请你将 n
颗糖果分给 3
位小朋友,确保没有任何小朋友得到超过 limit
颗糖果,请你返回满足此条件下的 总方案数 。
+
+
+
+示例 1:
+
+
+输入:n = 5, limit = 2
+输出:3
+解释:总共有 3 种方法分配 5 颗糖果,且每位小朋友的糖果数不超过 2 :(1, 2, 2) ,(2, 1, 2) 和 (2, 2, 1) 。
+
+
+示例 2:
+
+
+输入:n = 3, limit = 3
+输出:10
+解释:总共有 10 种方法分配 3 颗糖果,且每位小朋友的糖果数不超过 3 :(0, 0, 3) ,(0, 1, 2) ,(0, 2, 1) ,(0, 3, 0) ,(1, 0, 2) ,(1, 1, 1) ,(1, 2, 0) ,(2, 0, 1) ,(2, 1, 0) 和 (3, 0, 0) 。
+
+
+
+
+提示:
+
+
+ 1 <= n <= 106
+ 1 <= limit <= 106
+
+
+## 解法
+
+
+
+
+
+### **Python3**
+
+
+
+```python
+
+```
+
+### **Java**
+
+
+
+```java
+
+```
+
+### **C++**
+
+```cpp
+
+```
+
+### **Go**
+
+```go
+
+```
+
+### **...**
+
+```
+
+```
+
+
diff --git a/solution/2900-2999/2929.Distribute Candies Among Children II/README_EN.md b/solution/2900-2999/2929.Distribute Candies Among Children II/README_EN.md
new file mode 100644
index 0000000000000..dde2b652379a8
--- /dev/null
+++ b/solution/2900-2999/2929.Distribute Candies Among Children II/README_EN.md
@@ -0,0 +1,70 @@
+# [2929. Distribute Candies Among Children II](https://leetcode.com/problems/distribute-candies-among-children-ii)
+
+[中文文档](/solution/2900-2999/2929.Distribute%20Candies%20Among%20Children%20II/README.md)
+
+## Description
+
+You are given two positive integers n
and limit
.
+
+Return the total number of ways to distribute n
candies among 3
children such that no child gets more than limit
candies.
+
+
+Example 1:
+
+
+Input: n = 5, limit = 2
+Output: 3
+Explanation: There are 3 ways to distribute 5 candies such that no child gets more than 2 candies: (1, 2, 2), (2, 1, 2) and (2, 2, 1).
+
+
+Example 2:
+
+
+Input: n = 3, limit = 3
+Output: 10
+Explanation: There are 10 ways to distribute 3 candies such that no child gets more than 3 candies: (0, 0, 3), (0, 1, 2), (0, 2, 1), (0, 3, 0), (1, 0, 2), (1, 1, 1), (1, 2, 0), (2, 0, 1), (2, 1, 0) and (3, 0, 0).
+
+
+
+Constraints:
+
+
+ 1 <= n <= 106
+ 1 <= limit <= 106
+
+
+## Solutions
+
+
+
+### **Python3**
+
+```python
+
+```
+
+### **Java**
+
+```java
+
+```
+
+### **C++**
+
+```cpp
+
+```
+
+### **Go**
+
+```go
+
+```
+
+### **...**
+
+```
+
+```
+
+
diff --git a/solution/2900-2999/2930.Number of Strings Which Can Be Rearranged to Contain Substring/README.md b/solution/2900-2999/2930.Number of Strings Which Can Be Rearranged to Contain Substring/README.md
new file mode 100644
index 0000000000000..c1254911711bb
--- /dev/null
+++ b/solution/2900-2999/2930.Number of Strings Which Can Be Rearranged to Contain Substring/README.md
@@ -0,0 +1,92 @@
+# [2930. 重新排列后包含指定子字符串的字符串数目](https://leetcode.cn/problems/number-of-strings-which-can-be-rearranged-to-contain-substring)
+
+[English Version](/solution/2900-2999/2930.Number%20of%20Strings%20Which%20Can%20Be%20Rearranged%20to%20Contain%20Substring/README_EN.md)
+
+## 题目描述
+
+
+
+给你一个整数 n
。
+
+如果一个字符串 s
只包含小写英文字母,且 将 s
的字符重新排列后,新字符串包含 子字符串 "leet"
,那么我们称字符串 s
是一个 好 字符串。
+
+比方说:
+
+
+ - 字符串
"lteer"
是好字符串,因为重新排列后可以得到 "leetr"
。
+ "letl"
不是好字符串,因为无法重新排列并得到子字符串 "leet"
。
+
+
+请你返回长度为 n
的好字符串 总 数目。
+
+由于答案可能很大,将答案对 109 + 7
取余 后返回。
+
+子字符串 是一个字符串中一段连续的字符序列。
+
+
+
+示例 1:
+
+
+输入:n = 4
+输出:12
+解释:总共有 12 个字符串重新排列后包含子字符串 "leet" :"eelt" ,"eetl" ,"elet" ,"elte" ,"etel" ,"etle" ,"leet" ,"lete" ,"ltee" ,"teel" ,"tele" 和 "tlee" 。
+
+
+示例 2:
+
+
+输入:n = 10
+输出:83943898
+解释:长度为 10 的字符串重新排列后包含子字符串 "leet" 的方案数为 526083947580 。所以答案为 526083947580 % (109 + 7) = 83943898 。
+
+
+
+
+提示:
+
+
+
+## 解法
+
+
+
+
+
+### **Python3**
+
+
+
+```python
+
+```
+
+### **Java**
+
+
+
+```java
+
+```
+
+### **C++**
+
+```cpp
+
+```
+
+### **Go**
+
+```go
+
+```
+
+### **...**
+
+```
+
+```
+
+
diff --git a/solution/2900-2999/2930.Number of Strings Which Can Be Rearranged to Contain Substring/README_EN.md b/solution/2900-2999/2930.Number of Strings Which Can Be Rearranged to Contain Substring/README_EN.md
new file mode 100644
index 0000000000000..12167841de55d
--- /dev/null
+++ b/solution/2900-2999/2930.Number of Strings Which Can Be Rearranged to Contain Substring/README_EN.md
@@ -0,0 +1,84 @@
+# [2930. Number of Strings Which Can Be Rearranged to Contain Substring](https://leetcode.com/problems/number-of-strings-which-can-be-rearranged-to-contain-substring)
+
+[中文文档](/solution/2900-2999/2930.Number%20of%20Strings%20Which%20Can%20Be%20Rearranged%20to%20Contain%20Substring/README.md)
+
+## Description
+
+You are given an integer n
.
+
+A string s
is called good if it contains only lowercase English characters and it is possible to rearrange the characters of s
such that the new string contains "leet"
as a substring.
+
+For example:
+
+
+ - The string
"lteer"
is good because we can rearrange it to form "leetr"
.
+ "letl"
is not good because we cannot rearrange it to contain "leet"
as a substring.
+
+
+Return the total number of good strings of length n
.
+
+Since the answer may be large, return it modulo 109 + 7
.
+
+A substring is a contiguous sequence of characters within a string.
+
+
+
+
+Example 1:
+
+
+Input: n = 4
+Output: 12
+Explanation: The 12 strings which can be rearranged to have "leet" as a substring are: "eelt", "eetl", "elet", "elte", "etel", "etle", "leet", "lete", "ltee", "teel", "tele", and "tlee".
+
+
+Example 2:
+
+
+Input: n = 10
+Output: 83943898
+Explanation: The number of strings with length 10 which can be rearranged to have "leet" as a substring is 526083947580. Hence the answer is 526083947580 % (109 + 7) = 83943898.
+
+
+
+Constraints:
+
+
+
+## Solutions
+
+
+
+### **Python3**
+
+```python
+
+```
+
+### **Java**
+
+```java
+
+```
+
+### **C++**
+
+```cpp
+
+```
+
+### **Go**
+
+```go
+
+```
+
+### **...**
+
+```
+
+```
+
+
diff --git a/solution/2900-2999/2931.Maximum Spending After Buying Items/README.md b/solution/2900-2999/2931.Maximum Spending After Buying Items/README.md
new file mode 100644
index 0000000000000..9c521198423c2
--- /dev/null
+++ b/solution/2900-2999/2931.Maximum Spending After Buying Items/README.md
@@ -0,0 +1,112 @@
+# [2931. 购买物品的最大开销](https://leetcode.cn/problems/maximum-spending-after-buying-items)
+
+[English Version](/solution/2900-2999/2931.Maximum%20Spending%20After%20Buying%20Items/README_EN.md)
+
+## 题目描述
+
+
+
+给你一个下标从 0 开始大小为 m * n
的整数矩阵 values
,表示 m
个不同商店里 m * n
件不同的物品。每个商店有 n
件物品,第 i
个商店的第 j
件物品的价值为 values[i][j]
。除此以外,第 i
个商店的物品已经按照价值非递增排好序了,也就是说对于所有 0 <= j < n - 1
都有 values[i][j] >= values[i][j + 1]
。
+
+每一天,你可以在一个商店里购买一件物品。具体来说,在第 d
天,你可以:
+
+
+ - 选择商店
i
。
+ - 购买数组中最右边的物品
j
,开销为 values[i][j] * d
。换句话说,选择该商店中还没购买过的物品中最大的下标 j
,并且花费 values[i][j] * d
去购买。
+
+
+注意,所有物品都视为不同的物品。比方说如果你已经从商店 1
购买了物品 0
,你还可以在别的商店里购买其他商店的物品 0
。
+
+请你返回购买所有 m * n
件物品需要的 最大开销 。
+
+
+
+示例 1:
+
+
+输入:values = [[8,5,2],[6,4,1],[9,7,3]]
+输出:285
+解释:第一天,从商店 1 购买物品 2 ,开销为 values[1][2] * 1 = 1 。
+第二天,从商店 0 购买物品 2 ,开销为 values[0][2] * 2 = 4 。
+第三天,从商店 2 购买物品 2 ,开销为 values[2][2] * 3 = 9 。
+第四天,从商店 1 购买物品 1 ,开销为 values[1][1] * 4 = 16 。
+第五天,从商店 0 购买物品 1 ,开销为 values[0][1] * 5 = 25 。
+第六天,从商店 1 购买物品 0 ,开销为 values[1][0] * 6 = 36 。
+第七天,从商店 2 购买物品 1 ,开销为 values[2][1] * 7 = 49 。
+第八天,从商店 0 购买物品 0 ,开销为 values[0][0] * 8 = 64 。
+第九天,从商店 2 购买物品 0 ,开销为 values[2][0] * 9 = 81 。
+所以总开销为 285 。
+285 是购买所有 m * n 件物品的最大总开销。
+
+
+示例 2:
+
+
+输入:values = [[10,8,6,4,2],[9,7,5,3,2]]
+输出:386
+解释:第一天,从商店 0 购买物品 4 ,开销为 values[0][4] * 1 = 2 。
+第二天,从商店 1 购买物品 4 ,开销为 values[1][4] * 2 = 4 。
+第三天,从商店 1 购买物品 3 ,开销为 values[1][3] * 3 = 9 。
+第四天,从商店 0 购买物品 3 ,开销为 values[0][3] * 4 = 16 。
+第五天,从商店 1 购买物品 2 ,开销为 values[1][2] * 5 = 25 。
+第六天,从商店 0 购买物品 2 ,开销为 values[0][2] * 6 = 36 。
+第七天,从商店 1 购买物品 1 ,开销为 values[1][1] * 7 = 49 。
+第八天,从商店 0 购买物品 1 ,开销为 values[0][1] * 8 = 64 。
+第九天,从商店 1 购买物品 0 ,开销为 values[1][0] * 9 = 81 。
+第十天,从商店 0 购买物品 0 ,开销为 values[0][0] * 10 = 100 。
+所以总开销为 386 。
+386 是购买所有 m * n 件物品的最大总开销。
+
+
+
+
+提示:
+
+
+ 1 <= m == values.length <= 10
+ 1 <= n == values[i].length <= 104
+ 1 <= values[i][j] <= 106
+ values[i]
按照非递增顺序排序。
+
+
+## 解法
+
+
+
+
+
+### **Python3**
+
+
+
+```python
+
+```
+
+### **Java**
+
+
+
+```java
+
+```
+
+### **C++**
+
+```cpp
+
+```
+
+### **Go**
+
+```go
+
+```
+
+### **...**
+
+```
+
+```
+
+
diff --git a/solution/2900-2999/2931.Maximum Spending After Buying Items/README_EN.md b/solution/2900-2999/2931.Maximum Spending After Buying Items/README_EN.md
new file mode 100644
index 0000000000000..089ec6ae163b3
--- /dev/null
+++ b/solution/2900-2999/2931.Maximum Spending After Buying Items/README_EN.md
@@ -0,0 +1,102 @@
+# [2931. Maximum Spending After Buying Items](https://leetcode.com/problems/maximum-spending-after-buying-items)
+
+[中文文档](/solution/2900-2999/2931.Maximum%20Spending%20After%20Buying%20Items/README.md)
+
+## Description
+
+You are given a 0-indexed m * n
integer matrix values
, representing the values of m * n
different items in m
different shops. Each shop has n
items where the jth
item in the ith
shop has a value of values[i][j]
. Additionally, the items in the ith
shop are sorted in non-increasing order of value. That is, values[i][j] >= values[i][j + 1]
for all 0 <= j < n - 1
.
+
+On each day, you would like to buy a single item from one of the shops. Specifically, On the dth
day you can:
+
+
+ - Pick any shop
i
.
+ - Buy the rightmost available item
j
for the price of values[i][j] * d
. That is, find the greatest index j
such that item j
was never bought before, and buy it for the price of values[i][j] * d
.
+
+
+Note that all items are pairwise different. For example, if you have bought item 0
from shop 1
, you can still buy item 0
from any other shop.
+
+Return the maximum amount of money that can be spent on buying all m * n
products.
+
+
+Example 1:
+
+
+Input: values = [[8,5,2],[6,4,1],[9,7,3]]
+Output: 285
+Explanation: On the first day, we buy product 2 from shop 1 for a price of values[1][2] * 1 = 1.
+On the second day, we buy product 2 from shop 0 for a price of values[0][2] * 2 = 4.
+On the third day, we buy product 2 from shop 2 for a price of values[2][2] * 3 = 9.
+On the fourth day, we buy product 1 from shop 1 for a price of values[1][1] * 4 = 16.
+On the fifth day, we buy product 1 from shop 0 for a price of values[0][1] * 5 = 25.
+On the sixth day, we buy product 0 from shop 1 for a price of values[1][0] * 6 = 36.
+On the seventh day, we buy product 1 from shop 2 for a price of values[2][1] * 7 = 49.
+On the eighth day, we buy product 0 from shop 0 for a price of values[0][0] * 8 = 64.
+On the ninth day, we buy product 0 from shop 2 for a price of values[2][0] * 9 = 81.
+Hence, our total spending is equal to 285.
+It can be shown that 285 is the maximum amount of money that can be spent buying all m * n products.
+
+
+Example 2:
+
+
+Input: values = [[10,8,6,4,2],[9,7,5,3,2]]
+Output: 386
+Explanation: On the first day, we buy product 4 from shop 0 for a price of values[0][4] * 1 = 2.
+On the second day, we buy product 4 from shop 1 for a price of values[1][4] * 2 = 4.
+On the third day, we buy product 3 from shop 1 for a price of values[1][3] * 3 = 9.
+On the fourth day, we buy product 3 from shop 0 for a price of values[0][3] * 4 = 16.
+On the fifth day, we buy product 2 from shop 1 for a price of values[1][2] * 5 = 25.
+On the sixth day, we buy product 2 from shop 0 for a price of values[0][2] * 6 = 36.
+On the seventh day, we buy product 1 from shop 1 for a price of values[1][1] * 7 = 49.
+On the eighth day, we buy product 1 from shop 0 for a price of values[0][1] * 8 = 64
+On the ninth day, we buy product 0 from shop 1 for a price of values[1][0] * 9 = 81.
+On the tenth day, we buy product 0 from shop 0 for a price of values[0][0] * 10 = 100.
+Hence, our total spending is equal to 386.
+It can be shown that 386 is the maximum amount of money that can be spent buying all m * n products.
+
+
+
+Constraints:
+
+
+ 1 <= m == values.length <= 10
+ 1 <= n == values[i].length <= 104
+ 1 <= values[i][j] <= 106
+ values[i]
are sorted in non-increasing order.
+
+
+## Solutions
+
+
+
+### **Python3**
+
+```python
+
+```
+
+### **Java**
+
+```java
+
+```
+
+### **C++**
+
+```cpp
+
+```
+
+### **Go**
+
+```go
+
+```
+
+### **...**
+
+```
+
+```
+
+
diff --git a/solution/CONTEST_README.md b/solution/CONTEST_README.md
index 91f7d75cdfa83..4446e6cbcc280 100644
--- a/solution/CONTEST_README.md
+++ b/solution/CONTEST_README.md
@@ -22,6 +22,13 @@
## 往期竞赛
+#### 第 117 场双周赛(2023-11-11 22:30, 90 分钟) 参赛人数 2629
+
+- [2928. 给小朋友们分糖果 I](/solution/2900-2999/2928.Distribute%20Candies%20Among%20Children%20I/README.md)
+- [2929. 给小朋友们分糖果 II](/solution/2900-2999/2929.Distribute%20Candies%20Among%20Children%20II/README.md)
+- [2930. 重新排列后包含指定子字符串的字符串数目](/solution/2900-2999/2930.Number%20of%20Strings%20Which%20Can%20Be%20Rearranged%20to%20Contain%20Substring/README.md)
+- [2931. 购买物品的最大开销](/solution/2900-2999/2931.Maximum%20Spending%20After%20Buying%20Items/README.md)
+
#### 第 370 场周赛(2023-11-05 10:30, 90 分钟) 参赛人数 3983
- [2923. 找到冠军 I](/solution/2900-2999/2923.Find%20Champion%20I/README.md)
diff --git a/solution/CONTEST_README_EN.md b/solution/CONTEST_README_EN.md
index 8ba4134783ef2..c3cb8cf2e9f74 100644
--- a/solution/CONTEST_README_EN.md
+++ b/solution/CONTEST_README_EN.md
@@ -25,6 +25,13 @@ Get your rating changes right after the completion of LeetCode contests, https:/
## Past Contests
+#### Biweekly Contest 117
+
+- [2928. Distribute Candies Among Children I](/solution/2900-2999/2928.Distribute%20Candies%20Among%20Children%20I/README_EN.md)
+- [2929. Distribute Candies Among Children II](/solution/2900-2999/2929.Distribute%20Candies%20Among%20Children%20II/README_EN.md)
+- [2930. Number of Strings Which Can Be Rearranged to Contain Substring](/solution/2900-2999/2930.Number%20of%20Strings%20Which%20Can%20Be%20Rearranged%20to%20Contain%20Substring/README_EN.md)
+- [2931. Maximum Spending After Buying Items](/solution/2900-2999/2931.Maximum%20Spending%20After%20Buying%20Items/README_EN.md)
+
#### Weekly Contest 370
- [2923. Find Champion I](/solution/2900-2999/2923.Find%20Champion%20I/README_EN.md)
diff --git a/solution/README.md b/solution/README.md
index bdad4eb82ec39..1b12bea454056 100644
--- a/solution/README.md
+++ b/solution/README.md
@@ -2938,6 +2938,10 @@
| 2925 | [在树上执行操作以后得到的最大分数](/solution/2900-2999/2925.Maximum%20Score%20After%20Applying%20Operations%20on%20a%20Tree/README.md) | | 中等 | 第 370 场周赛 |
| 2926 | [平衡子序列的最大和](/solution/2900-2999/2926.Maximum%20Balanced%20Subsequence%20Sum/README.md) | | 困难 | 第 370 场周赛 |
| 2927 | [将糖果分发给孩子 III](/solution/2900-2999/2927.Distribute%20Candies%20Among%20Children%20III/README.md) | | 困难 | 🔒 |
+| 2928 | [给小朋友们分糖果 I](/solution/2900-2999/2928.Distribute%20Candies%20Among%20Children%20I/README.md) | | 简单 | 第 117 场双周赛 |
+| 2929 | [给小朋友们分糖果 II](/solution/2900-2999/2929.Distribute%20Candies%20Among%20Children%20II/README.md) | | 中等 | 第 117 场双周赛 |
+| 2930 | [重新排列后包含指定子字符串的字符串数目](/solution/2900-2999/2930.Number%20of%20Strings%20Which%20Can%20Be%20Rearranged%20to%20Contain%20Substring/README.md) | | 中等 | 第 117 场双周赛 |
+| 2931 | [购买物品的最大开销](/solution/2900-2999/2931.Maximum%20Spending%20After%20Buying%20Items/README.md) | | 困难 | 第 117 场双周赛 |
## 版权
diff --git a/solution/README_EN.md b/solution/README_EN.md
index 1b6dc89c30f00..19ad7a8bb3681 100644
--- a/solution/README_EN.md
+++ b/solution/README_EN.md
@@ -2936,6 +2936,10 @@ Press Control + F(or Command + F on
| 2925 | [Maximum Score After Applying Operations on a Tree](/solution/2900-2999/2925.Maximum%20Score%20After%20Applying%20Operations%20on%20a%20Tree/README_EN.md) | | Medium | Weekly Contest 370 |
| 2926 | [Maximum Balanced Subsequence Sum](/solution/2900-2999/2926.Maximum%20Balanced%20Subsequence%20Sum/README_EN.md) | | Hard | Weekly Contest 370 |
| 2927 | [Distribute Candies Among Children III](/solution/2900-2999/2927.Distribute%20Candies%20Among%20Children%20III/README_EN.md) | | Hard | 🔒 |
+| 2928 | [Distribute Candies Among Children I](/solution/2900-2999/2928.Distribute%20Candies%20Among%20Children%20I/README_EN.md) | | Easy | Biweekly Contest 117 |
+| 2929 | [Distribute Candies Among Children II](/solution/2900-2999/2929.Distribute%20Candies%20Among%20Children%20II/README_EN.md) | | Medium | Biweekly Contest 117 |
+| 2930 | [Number of Strings Which Can Be Rearranged to Contain Substring](/solution/2900-2999/2930.Number%20of%20Strings%20Which%20Can%20Be%20Rearranged%20to%20Contain%20Substring/README_EN.md) | | Medium | Biweekly Contest 117 |
+| 2931 | [Maximum Spending After Buying Items](/solution/2900-2999/2931.Maximum%20Spending%20After%20Buying%20Items/README_EN.md) | | Hard | Biweekly Contest 117 |
## Copyright
diff --git a/solution/summary.md b/solution/summary.md
index 516683f6cc7f7..3d3524beaeda6 100644
--- a/solution/summary.md
+++ b/solution/summary.md
@@ -2985,3 +2985,7 @@
- [2925.在树上执行操作以后得到的最大分数](/solution/2900-2999/2925.Maximum%20Score%20After%20Applying%20Operations%20on%20a%20Tree/README.md)
- [2926.平衡子序列的最大和](/solution/2900-2999/2926.Maximum%20Balanced%20Subsequence%20Sum/README.md)
- [2927.将糖果分发给孩子 III](/solution/2900-2999/2927.Distribute%20Candies%20Among%20Children%20III/README.md)
+ - [2928.给小朋友们分糖果 I](/solution/2900-2999/2928.Distribute%20Candies%20Among%20Children%20I/README.md)
+ - [2929.给小朋友们分糖果 II](/solution/2900-2999/2929.Distribute%20Candies%20Among%20Children%20II/README.md)
+ - [2930.重新排列后包含指定子字符串的字符串数目](/solution/2900-2999/2930.Number%20of%20Strings%20Which%20Can%20Be%20Rearranged%20to%20Contain%20Substring/README.md)
+ - [2931.购买物品的最大开销](/solution/2900-2999/2931.Maximum%20Spending%20After%20Buying%20Items/README.md)
diff --git a/solution/summary_en.md b/solution/summary_en.md
index d07b738f89598..280a5f2ca9cbb 100644
--- a/solution/summary_en.md
+++ b/solution/summary_en.md
@@ -2985,3 +2985,7 @@
- [2925.Maximum Score After Applying Operations on a Tree](/solution/2900-2999/2925.Maximum%20Score%20After%20Applying%20Operations%20on%20a%20Tree/README_EN.md)
- [2926.Maximum Balanced Subsequence Sum](/solution/2900-2999/2926.Maximum%20Balanced%20Subsequence%20Sum/README_EN.md)
- [2927.Distribute Candies Among Children III](/solution/2900-2999/2927.Distribute%20Candies%20Among%20Children%20III/README_EN.md)
+ - [2928.Distribute Candies Among Children I](/solution/2900-2999/2928.Distribute%20Candies%20Among%20Children%20I/README_EN.md)
+ - [2929.Distribute Candies Among Children II](/solution/2900-2999/2929.Distribute%20Candies%20Among%20Children%20II/README_EN.md)
+ - [2930.Number of Strings Which Can Be Rearranged to Contain Substring](/solution/2900-2999/2930.Number%20of%20Strings%20Which%20Can%20Be%20Rearranged%20to%20Contain%20Substring/README_EN.md)
+ - [2931.Maximum Spending After Buying Items](/solution/2900-2999/2931.Maximum%20Spending%20After%20Buying%20Items/README_EN.md)