Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit dad302f

Browse files
Create Readme.md
1 parent d1c6f83 commit dad302f

File tree

1 file changed

+17
-0
lines changed
  • DFS/2305.Fair-Distribution-of-Cookies

1 file changed

+17
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
### 2305.Fair-Distribution-of-Cookies
2+
3+
#### 解法1:常规dfs,遍历cookie
4+
通过DFS遍历所有的分配方案。dfs的每一层处理一块cookie,分支考察分配给每个人的方案。总的时间复杂度就是o(k^N).
5+
6+
#### 解法2:二分+dfs,遍历cookie
7+
我们先二分搜索猜测一个答案t,然后用dfs来寻找是否存在一种分配方案,使得每个人能分到的饼干数量不超过t。最终二分逼近的答案就是所求的最优解。
8+
9+
dfs的原理同解法1. 此时,我们可以有很多剪枝策略:
10+
1. 发现任何一个人的饼干总数已经大于t,就返回false
11+
2. 将cookies从大到小排列,尽早排除那些容易溢出的分支。
12+
3. 如果某块饼干打算分发给某个没有得到饼干的人,那么就不需要平行地尝试分给其他没有得到饼干的人。
13+
14+
#### 解法3:二分+dfs,遍历人
15+
dfs的原理正好相反:每一层处理一个人,对于该人的饼干选配方案就是当前剩余饼干的子集。显然我们可以通过遍历子集的技巧,进行dfs的分支搜索。
16+
17+
同样,如果遍历子集时,发现某种分配方案会导致个人的饼干总数已经大于t,就终止这个探索。

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /